Thread: [Pymoul-svn] SF.net SVN: pymoul: [149] pymoul/trunk (Page 3)
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-02-06 17:15:55
|
Revision: 149
http://pymoul.svn.sourceforge.net/pymoul/?rev=149&view=rev
Author: tiran
Date: 2007-02-06 09:15:50 -0800 (Tue, 06 Feb 2007)
Log Message:
-----------
Updated translations
Modified Paths:
--------------
pymoul/trunk/doc/XXXreport.html
pymoul/trunk/src/moul/qt/i18n/pymoul_de.qm
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/doc/XXXreport.html
===================================================================
--- pymoul/trunk/doc/XXXreport.html 2007-02-06 16:53:36 UTC (rev 148)
+++ pymoul/trunk/doc/XXXreport.html 2007-02-06 17:15:50 UTC (rev 149)
@@ -3,11 +3,11 @@
<body>
<h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1>
-<p>Generated on Mon, 05 Feb 2007 03:58:55 CET, based on Zope 3's XXX report</p>
+<p>Generated on Tue, 06 Feb 2007 18:05:35 CET, based on Zope 3's XXX report</p>
<hr>
<h3>Summary</h3>
<p>
- There are currently 94 XXX/TODO/FIXME comments.
+ There are currently 88 XXX/TODO/FIXME comments.
</p>
<hr/>
<h3>Listing</h3>
@@ -27,8 +27,10 @@
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:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-281- return iter(self._fd)
+</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-209- if not os.path.isdir(self._logdir):
+base-210- LOG.warning("%s is not a directory" % logdir)
+base-211- 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
@@ -38,21 +40,21 @@
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 os.path.isfile(fixed):
-base-269- if fixedNewer(ki, fixed):
-base-270- LOG.debug("File %s exists but was changed." % name)
+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/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me
base-158- pass
base-159-
base-160-class Constrain(object):
-</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:541</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-542- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-543- # microphon missing -> OS mixer
-base-544- }
-</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:629</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-630-
-base-631-class GraphicsIni(ConfFile):
-base-632- _filename = 'graphics.ini'
+</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-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
+base-556- # microphon missing -> OS mixer
+base-557- }
+</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-643-
+base-644-class GraphicsIni(ConfFile):
+base-645- _filename = 'graphics.ini'
</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch
base-60- return len([name for name in os.listdir(path)
base-61- if os.path.isfile(os.path.join(path, name))])
@@ -89,8 +91,10 @@
fd = open(os.path.join(path, fname), 'wb')
fd.write('dummy')
fd.close()
-</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
- return iter(self._fd)
+</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:208</b><br/><pre> # TODO: inefficient, compare list with directory content
+ if not os.path.isdir(self._logdir):
+ LOG.warning("%s is not a directory" % logdir)
+ return
</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
if header is None:
fd = self._fd
@@ -100,18 +104,18 @@
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!
- if os.path.isfile(fixed):
- if fixedNewer(ki, fixed):
- LOG.debug("File %s exists but was changed." % name)
+ if not os.path.isfile(fixed):
+ self._tocheck.append((ki, fixed))
+ continue
</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me
pass
class Constrain(object):
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:541</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
+</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
# microphon missing -> OS mixer
}
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:629</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
+</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.
class GraphicsIni(ConfFile):
_filename = 'graphics.ini'
@@ -124,23 +128,25 @@
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!
- if os.path.isfile(fixed):
- if fixedNewer(ki, fixed):
- LOG.debug("File %s exists but was changed." % name)
-</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
- return iter(self._fd)
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:156</b><br/><pre> # TODO: write me
+ if not os.path.isfile(fixed):
+ self._tocheck.append((ki, fixed))
+ else:
+</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me
pass
class Constrain(object):
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:540</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
+</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
# microphon missing -> OS mixer
}
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:628</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
+</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.
class GraphicsIni(ConfFile):
_filename = 'graphics.ini'
+</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:208</b><br/><pre> # TODO: inefficient, compare list with directory content
+ if not os.path.isdir(logdir):
+ LOG.warning("%s is not a directory" % logdir)
+ return
</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch
return len([name for name in os.listdir(path)
if os.path.isfile(os.path.join(path, name))])
@@ -173,103 +179,86 @@
raise NotImplementedError
def decipher(crypt, size, key):
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:151</b><br/><pre> # FIXME: signal doesn't do anything
-base-152- self.emit(SIGNAL("close()"))
-base-153- event.accept()
-base-154- event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:222</b><br/><pre> # TODO: msg
-base-223- return
-base-224-
-base-225- self.pb_kiimage_repair.setEnabled(False)
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:248</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
-base-249- del self._kiimage_progressbar
-base-250- self.pb_kiimage_repair.setEnabled(True)
-base:251: # TODO: msg
-base-252-
-base-253- # ************************************************************************
-base-254- # system tray
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:281</b><br/><pre> # TODO: needs optimization? run only when timer tab is active
-base-282- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-base-283- timer.start()
-base-284-
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:375</b><br/><pre> # TODO: thread safety!
-base-376- self.servers = servers
-base-377- if not self.isRunning():
-base-378- self.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:381</b><br/><pre> # TODO: thread safety!
-base-382- # emit a list of names first
-base-383- for server in self.servers:
-base-384- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:417</b><br/><pre> # TODO check this
-base-418- self._running = False
-base-419- self.condition.wakeAll()
-base-420-
+</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-150- self.emit(SIGNAL("close()"))
+base-151- event.accept()
+base-152- event.ignore()
+</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-251- del self._kiimage_progressbar
+base-252- self.pb_kiimage_repair.setEnabled(True)
+base-253- mb = qtutils.infoMB(self,
+</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-346- self._timezone_timer = timer = QtCore.QTimer(self)
+base-347- timer.setInterval(1000) # 1 sec
+base:348: # TODO: needs optimization? run only when timer tab is active
+base-349- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
+base-350- timer.start()
+base-351-
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:442</b><br/><pre> # TODO: thread safety!
+base-443- self.servers = servers
+base-444- if not self.isRunning():
+base-445- self.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:448</b><br/><pre> # TODO: thread safety!
+base-449- # emit a list of names first
+base-450- for server in self.servers:
+base-451- self.emit(SIGNAL("server(const QString&)"), server.name)
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:484</b><br/><pre> # TODO check this
+base-485- self._running = False
+base-486- self.condition.wakeAll()
+base-487-
</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:46</b><br/><pre> # TODO: translation aware
base-47- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
base-48- if not getattr(sys, 'frozen', False):
base-49- return
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/wdysini.py.svn-base:67</b><br/><pre> self.context.emit(SIGNAL("audioini_load()")) # XXX: hard coded emit
-base:68: self.context.emit(SIGNAL("graphicsini_load()")) # XXX: hard coded emit
-base-69-
-base-70- @pyqtSignature("bool")
-base-71- def on_graphicsChanged(self, boolean):
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:143</b><br/><pre> # FIXME: signal doesn't do anything
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:149</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:214</b><br/><pre> # TODO: msg
- return
-
- self.pb_kiimage_repair.setEnabled(False)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:241</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
del self._kiimage_progressbar
self.pb_kiimage_repair.setEnabled(True)
-
- @pyqtSignature("")
- def on_pb_log_archive_clicked(self):
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:288</b><br/><pre> # TODO: needs optimization? run only when timer tab is active
+ mb = qtutils.infoMB(self,
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:345</b><br/><pre> # TODO: change timer from every second to every minute
+ self._timezone_timer = timer = QtCore.QTimer(self)
+ timer.setInterval(1000) # 1 sec
self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:382</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:442</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~:388</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:448</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:424</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:484</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:143</b><br/><pre> # FIXME: signal doesn't do anything
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:149</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:214</b><br/><pre> # TODO: msg
- return
-
- self.pb_kiimage_repair.setEnabled(False)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:241</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
del self._kiimage_progressbar
self.pb_kiimage_repair.setEnabled(True)
-
- @pyqtSignature("")
- def on_pb_log_archive_clicked(self):
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:288</b><br/><pre> # TODO: needs optimization? run only when timer tab is active
+ mb = qtutils.infoMB(self,
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:345</b><br/><pre> # TODO: change timer from every second to every minute
+ self._timezone_timer = timer = QtCore.QTimer(self)
+ timer.setInterval(1000) # 1 sec
self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:382</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:442</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:388</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:448</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:424</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:484</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
@@ -277,143 +266,131 @@
LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
if not getattr(sys, 'frozen', False):
return
-</pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py~:46</b><br/><pre> # TODO: translation aware
- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
- if not getattr(sys, 'frozen', False):
- return
-</pre></li><li><b>File: utilities/../src/moul/qt/wdysini.py~:68</b><br/><pre> self.context.emit(SIGNAL("audioini_load()")) # XXX: hard coded emit
-
- @signalLogDecorator(LOG)
- @pyqtSignature("bool")
-</pre></li><li><b>File: utilities/../src/moul/qt/wdysini.py:67</b><br/><pre> self.context.emit(SIGNAL("audioini_load()")) # XXX: hard coded emit
-
- @pyqtSignature("bool")
- def on_graphicsChanged(self, boolean):
-</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:117</b><br/><pre># XXX: what about cygwin, bsd and others?
+</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others?
_thismodule = sys.modules[__name__]
if __WIN32__:
from moul.osdependent import win32 as osdep_win32
-</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:117</b><br/><pre># XXX: what about cygwin, bsd and others?
-base-118-_thismodule = sys.modules[__name__]
-base-119-if __WIN32__:
-base-120- from moul.osdependent import win32 as osdep_win32
-</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/ez_setup.py.svn-base:92</b><br/><pre> # XXX could we install in a subprocess here?
-base-15-base-93- print >>sys.stderr, (
-base-16-base-94- "The required version of setuptools (>=%s) is not available, and\n"
-base-17-base-95- "can't be installed while this script is running. Please install\n"
-base:18:</pre></li><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-19-base-549- # separated by a horizontal dash line. Only the first one of
-base-20-base-550- # them is now colorized properly.
-base-21-base-551- header = lines[0]
-base:22:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:603</b><br/><pre> # TODO: Scrape and colorize the traceback.
-base-23-base-604- result.append(self.colorize('doctest_got', line))
-base-24-base-605- elif remaining[0] == 'Differences (ndiff with -expected +actual):':
-base-25-base-606- result.append(self.colorize('doctest_title', remaining.pop(0))) # E. raised:
-base:26:</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-27-base-624- # A colorizer for the Python's doctest module would be nice too.
-base-28-base-625- if doctest:
-base-29-base-626- # If we have a doctest, we do not care about this header. All the
-base:30:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:690</b><br/><pre> # TODO these should be hookable
-base-31-base-691- from zope.tales.tales import TALESTracebackSupplement
-base-32-base-692- from zope.pagetemplate.pagetemplate \
-base-33-base-693- import PageTemplateTracebackSupplement
-base:34:</pre></li><li><b>File: utilities/../.svn/text-base/setup_win32.py.svn-base:84</b><br/><pre> pexe['innosetup'] = os.environ.get('INNOSETUP') # TODO:
-base-35-base-85- pexe['inno_templates'] = "template.iss"
-base-36-base-86- pexe['app_name'] = 'pyMoul'
-base-37-base-87- pexe['includes'].extend(findPyTz())
-base:38:</pre></li><li><b>File: utilities/../.svn/text-base/distutils_upx.py.svn-base:117</b><br/><pre> sys.exit(retcode) # XXX
-base-39-base-118-
-base-40-base-119- def _upxAvailable(self):
-base-41-base-120- """Search for UPX in search path
-base:42:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:268</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-43-base-269- return iter(self._fd)
-base:44:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct
-base-45-base-113- if header is None:
-base-46-base-114- fd = self._fd
-base-47-base-115- fd.seek(0)
-base:48:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:127</b><br/><pre> # XXX use struct
-base-49-base-128- if size is None:
-base-50-base-129- size = self.getFileSize()
-base-51-base-130- leading = 4* [None]
-base:52:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:156</b><br/><pre> # TODO: write me
-base-53-base-157- pass
-base-54-base-158-
-base-55-base-159-class Constrain(object):
-base:56:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:540</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-57-base-541- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-58-base-542- # microphon missing -> OS mixer
-base-59-base-543- }
-base:60:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:628</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-61-base-629-
-base-62-base-630-class GraphicsIni(ConfFile):
-base-63-base-631- _filename = 'graphics.ini'
-base:64:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:58</b><br/><pre> # TODO: fnmatch
-base-65-base-59- return len([name for name in os.listdir(path)
-base-66-base-60- if os.path.isfile(os.path.join(path, name))])
-base-67-base-61-
-base:68:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:104</b><br/><pre> # TODO: more
-base-69-base-105-
-base-70-base-106- def test_publicapi_create(self):
-base-71-base-107- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-base:72:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:115</b><br/><pre> # TODO: more
-base-73-base-116-
-base-74-base-117-class AudioIniTest(GenericIniTest):
-base-75-base-118- enc = aud_enc
-base:76:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:153</b><br/><pre> #XXX self.failIf(p.isChanged())
-base-77-base-154-
-base-78-base-155- p.screenres = 0
-base-79-base-156- eq(p._get('Graphics.Width'), 800)
-base:80:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:79</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32
-base-81-base-80- fd = open(os.path.join(path, fname), 'wb')
-base-82-base-81- fd.write('dummy')
-base-83-base-82- fd.close()
-base:84:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:104</b><br/><pre> # TODO: more
-base-85-
-base-86- def test_publicapi_create(self):
-base-87- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-base:88:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:115</b><br/><pre> # TODO: more
-base-89-
-base-90-class AudioIniTest(GenericIniTest):
-base-91- enc = aud_enc
-base:92:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:153</b><br/><pre> #XXX self.failIf(p.isChanged())
-base-93-
-base-94- p.screenres = 0
-base-95- eq(p._get('Graphics.Width'), 800)
-base:96:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:79</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32
-base-97- fd = open(os.path.join(path, fname), 'wb')
-base-98- fd.write('dummy')
-base-99- fd.close()
-base:100:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:268</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-101- return iter(self._fd)
-base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
-base-103- if header is None:
-base-104- fd = self._fd
-base-105- fd.seek(0)
-base:106:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct
-base-107- if size is None:
-base-108- size = self.getFileSize()
-base-109- leading = 4* [None]
-base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:156</b><br/><pre> # TODO: write me
-base-111- pass
-base-112-
-base-113-class Constrain(object):
-base:114:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:540</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-115- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-116- # microphon missing -> OS mixer
-base-117- }
-base:118:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:628</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-119-
-base-120-class GraphicsIni(ConfFile):
-base-121- _filename = 'graphics.ini'
-base:122:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct
-base-123- if header is None:
-base-124- fd = self._fd
-base-125- fd.seek(0)
-base:126:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct
-base-127- if size is None:
-base-128- size = self.getFileSize()
-base-129- leading = 4* [None]
-base:130:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:268</b><br/><pre> # TODO: add parser, currently simply iterates over the file
+</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-121-_thismodule = sys.modules[__name__]
+base-122-if __WIN32__:
+base-123- from moul.osdependent import win32 as osdep_win32
+</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-15-base-549- # separated by a horizontal dash line. Only the first one of
+base-16-base-550- # them is now colorized properly.
+base-17-base-551- header = lines[0]
+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-19-base-604- result.append(self.colorize('doctest_got', line))
+base-20-base-605- elif remaining[0] == 'Differences (ndiff with -expected +actual):':
+base-21-base-606- result.append(self.colorize('doctest_title', remaining.pop(0))) # E. raised:
+base:22:</pre></li><li><b>File: utilities/../.svn/text-base...
[truncated message content] |
|
From: <ti...@us...> - 2007-02-08 20:03:37
|
Revision: 156
http://pymoul.svn.sourceforge.net/pymoul/?rev=156&view=rev
Author: tiran
Date: 2007-02-08 12:02:58 -0800 (Thu, 08 Feb 2007)
Log Message:
-----------
Added binary file class
Updated languages
Updated XXX report and Readme
Modified Paths:
--------------
pymoul/trunk/README.txt
pymoul/trunk/doc/TODO.txt
pymoul/trunk/doc/XXXreport.html
pymoul/trunk/src/moul/crypt/elf.py
pymoul/trunk/src/moul/crypt/whatdoyousee.py
pymoul/trunk/src/moul/metadata.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
Added Paths:
-----------
pymoul/trunk/src/moul/crypt/binary.py
Modified: pymoul/trunk/README.txt
===================================================================
--- pymoul/trunk/README.txt 2007-02-07 15:01:15 UTC (rev 155)
+++ pymoul/trunk/README.txt 2007-02-08 20:02:58 UTC (rev 156)
@@ -8,6 +8,29 @@
pyMoul is a set of Python libraries around MOUL (Myst Online : Uru Live). At
the moment the main focus is on the Qt4 based graphical tool.
+Bug reporting and feature requests
+==================================
+
+Please do not mail me bug reports or feature requests. You should use the bug
+and feature tracker at http://sourceforge.net/projects/pymoul instead. Do not
+forget to include a log file! The location of the log file is stated in the
+about tab of pyMoul.
+
+GnuPG / PGP
+===========
+
+Every released file is signed with my GPG key 0xAD16AB1B for security reasons.
+You can grab my keys from http://cheimes.de/heimes.asc.
+
+Anti virus
+==========
+
+The windows builds are scanned for viruses and trojaners with the personal
+edition of Avira AntiVir (formally known as H+BEDV AntiVir)
+http://www.freeav.de/. Although the files are scanned under Windows and Linux
+and my Windows box is kept up to date I cannot gurantee that the files are
+clean.
+
Donate
======
@@ -15,5 +38,4 @@
use the link below to send me money over PayPal. You don't need a PayPal
account. A credit card or bank account is sufficient.
-https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=christian%40cheimes%2ede&item_name=Donate%20for%20Tiran%27s%20open%20source%20activities&page_style=PayPal&no_shipping=2&cn=Your%20note%20for%20me&tax=0¤cy_code=EUR&lc=DE&bn=PP%2dDonationsBF&charset=UTF%2d8
-
+https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=christian%40cheimes%2ede&item_name=Donate%20for%20Tiran%27s%20open%20source%20activities&page_style=PayPal&no_shipping=0&cn=Your%20note%20for%20me&tax=0¤cy_code=EUR&lc=DE&bn=PP%2dDonationsBF&charset=UTF%2d8
Modified: pymoul/trunk/doc/TODO.txt
===================================================================
--- pymoul/trunk/doc/TODO.txt 2007-02-07 15:01:15 UTC (rev 155)
+++ pymoul/trunk/doc/TODO.txt 2007-02-08 20:02:58 UTC (rev 156)
@@ -6,13 +6,19 @@
-----------
* get official OK from Chogon
- * API for create Uru Live directory with config files with default values.
* integrate log zipper
- * integrate chat archiver
- * complete chatlog viewer
* more checks and exceptions! Never fail silentely
* update readme.txt
* connect QThread.terminate() slots with its parents close/destroy signal
handler
* clean documents/journal/localization naming
+ * table model for PING tab
+future
+------
+
+ * better chatlog viewer
+ * ElementTree based generator chatlog xml and color coded html
+ * more unit tests
+ * more epydoc strings
+ * UI enhancements like whatisthis bubbles and accelerators
Modified: pymoul/trunk/doc/XXXreport.html
===================================================================
--- pymoul/trunk/doc/XXXreport.html 2007-02-07 15:01:15 UTC (rev 155)
+++ pymoul/trunk/doc/XXXreport.html 2007-02-08 20:02:58 UTC (rev 156)
@@ -3,7 +3,7 @@
<body>
<h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1>
-<p>Generated on Tue, 06 Feb 2007 18:05:35 CET, based on Zope 3's XXX report</p>
+<p>Generated on Wed, 07 Feb 2007 16:03:30 CET, based on Zope 3's XXX report</p>
<hr>
<h3>Summary</h3>
<p>
@@ -27,10 +27,10 @@
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:208</b><br/><pre> # TODO: inefficient, compare list with directory content
-base-209- if not os.path.isdir(self._logdir):
-base-210- LOG.warning("%s is not a directory" % logdir)
-base-211- return
+</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/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct
base-113- if header is None:
base-114- fd = self._fd
@@ -91,10 +91,10 @@
fd = open(os.path.join(path, fname), 'wb')
fd.write('dummy')
fd.close()
-</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:208</b><br/><pre> # TODO: inefficient, compare list with directory content
- if not os.path.isdir(self._logdir):
- LOG.warning("%s is not a directory" % logdir)
- return
+</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</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
</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
if header is None:
fd = self._fd
@@ -143,10 +143,10 @@
class GraphicsIni(ConfFile):
_filename = 'graphics.ini'
-</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:208</b><br/><pre> # TODO: inefficient, compare list with directory content
- if not os.path.isdir(logdir):
- LOG.warning("%s is not a directory" % logdir)
- return
+</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</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
</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch
return len([name for name in os.listdir(path)
if os.path.isfile(os.path.join(path, name))])
@@ -179,93 +179,93 @@
raise NotImplementedError
def decipher(crypt, size, key):
-</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-150- self.emit(SIGNAL("close()"))
-base-151- event.accept()
-base-152- event.ignore()
-</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-251- del self._kiimage_progressbar
-base-252- self.pb_kiimage_repair.setEnabled(True)
-base-253- mb = qtutils.infoMB(self,
-</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-346- self._timezone_timer = timer = QtCore.QTimer(self)
-base-347- timer.setInterval(1000) # 1 sec
-base:348: # TODO: needs optimization? run only when timer tab is active
-base-349- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-base-350- timer.start()
-base-351-
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:442</b><br/><pre> # TODO: thread safety!
-base-443- self.servers = servers
-base-444- if not self.isRunning():
-base-445- self.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:448</b><br/><pre> # TODO: thread safety!
-base-449- # emit a list of names first
-base-450- for server in self.servers:
-base-451- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:484</b><br/><pre> # TODO check this
-base-485- self._running = False
-base-486- self.condition.wakeAll()
-base-487-
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:46</b><br/><pre> # TODO: translation aware
-base-47- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
-base-48- if not getattr(sys, 'frozen', False):
-base-49- return
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:149</b><br/><pre> # FIXME: signal doesn't do anything
+</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-153- self.emit(SIGNAL("close()"))
+base-154- event.accept()
+base-155- event.ignore()
+</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-292- del self._kiimage_progressbar
+base-293- self.pb_kiimage_repair.setEnabled(True)
+base-294- mb = qtutils.infoMB(self,
+</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-391- self._timezone_timer = timer = QtCore.QTimer(self)
+base-392- timer.setInterval(1000) # 1 sec
+base:393: # TODO: needs optimization? run only when timer tab is active
+base-394- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
+base-395- timer.start()
+base-396-
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:487</b><br/><pre> # TODO: thread safety!
+base-488- self.servers = servers
+base-489- if not self.isRunning():
+base-490- self.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:493</b><br/><pre> # TODO: thread safety!
+base-494- # emit a list of names first
+base-495- for server in self.servers:
+base-496- self.emit(SIGNAL("server(const QString&)"), server.name)
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:531</b><br/><pre> # TODO check this
+base-532- self._running = False
+base-533- self.condition.wakeAll()
+base-534-
+</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/mainwindow.py~:151</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:290</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
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~:345</b><br/><pre> # TODO: change timer from every second to every minute
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:389</b><br/><pre> # TODO: change timer from every second to every minute
self._timezone_timer = timer = QtCore.QTimer(self)
timer.setInterval(1000) # 1 sec
self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:442</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:486</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~:448</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:492</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:484</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:530</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:149</b><br/><pre> # FIXME: signal doesn't do anything
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:152</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:291</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
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:345</b><br/><pre> # TODO: change timer from every second to every minute
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:390</b><br/><pre> # TODO: change timer from every second to every minute
self._timezone_timer = timer = QtCore.QTimer(self)
timer.setInterval(1000) # 1 sec
self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:442</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:487</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:448</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:493</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:484</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:531</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
-</pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py:46</b><br/><pre> # TODO: translation aware
+</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 not getattr(sys, 'frozen', False):
- return
+ if getattr(sys, 'frozen', False):
+ try:
</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others?
_thismodule = sys.modules[__name__]
if __WIN32__:
@@ -290,752 +290,1095 @@
base-27-base-691- from zope.tales.tales import TALESTracebackSupplement
base-28-base-692- from zope.pagetemplate.pagetemplate \
base-29-base-693- import PageTemplateTracebackSupplement
-base:30:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-31-base-281- return iter(self._fd)
-base:32:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct
-base-33-base-113- if header is None:
-base-34-base-114- fd = self._fd
-base-35-base-115- fd.seek(0)
-base:36:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:127</b><br/><pre> # XXX use struct
-base-37-base-128- if size is None:
-base-38-base-129- size = self.getFileSize()
-base-39-base-130- leading = 4* [None]
-base:40:</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-41-base-268- if os.path.isfile(fixed):
-base-42-base-269- if fixedNewer(ki, fixed):
-base-43-base-270- LOG.debug("File %s exists but was changed." % name)
-base:44:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me
-base-45-base-158- pass
-base-46-base-159-
-base-47-base-160-class Constrain(object):
-base:48:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:541</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-49-base-542- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-50-base-543- # microphon missing -> OS mixer
-base-51-base-544- }
-base:52:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:629</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-53-base-630-
-base-54-base-631-class GraphicsIni(ConfFile):
-base-55-base-632- _filename = 'graphics.ini'
-base:56:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch
-base-57-base-60- return len([name for name in os.listdir(path)
-base-58-base-61- if os.path.isfile(os.path.join(path, name))])
-base-59-base-62-
-base:60:</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-61-base-106-
-base-62-base-107- def test_publicapi_create(self):
-base-63-base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-base:64:</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-65-base-117-
-base-66-base-118-class AudioIniTest(GenericIniTest):
-base-67-base-119- enc = aud_enc
-base:68:</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-69-base-155-
-base-70-base-156- p.screenres = 0
-base-71-base-157- eq(p._get('Graphics.Width'), 800)
-base:72:</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-73-base-81- fd = open(os.path.join(path, fname), 'wb')
-base-74-base-82- fd.write('dummy')
-base-75-base-83- fd.close()
-base:76:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:105</b><br/><pre> # TODO: more
-base-77-
-base-78- def test_publicapi_create(self):
-base-79- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-base:80:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more
-base-81-
-base-82-class AudioIniTest(GenericIniTest):
-base-83- enc = aud_enc
-base:84:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:154</b><br/><pre> #XXX self.failIf(p.isChanged())
-base-85-
-base-86- p.screenres = 0
-base-87- eq(p._get('Graphics.Width'), 800)
-base:88:</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-89- fd = open(os.path.join(path, fname), 'wb')
-base-90- fd.write('dummy')
-base-91- fd.close()
-base:92:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-93- return iter(self._fd)
-base:94:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
-base-95- if header is None:
-base-96- fd = self._fd
-base-97- fd.seek(0)
-base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct
-base-99- if size is None:
-base-100- size = self.getFileSize()
-base-101- leading = 4* [None]
-base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method!
-base-103- if os.path.isfile(fixed):
-base-104- if fixedNewer(ki, fixed):
-base-105- LOG.debug("File %s exists but was changed." % name)
-base:106:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me
-base-107- pass
-base-108-
-base-109-class Constrain(object):
-base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:541</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-111- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-112- # microphon missing -> OS mixer
-base-113- }
-base:114:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:629</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-115-
-base-116-class GraphicsIni(ConfFile):
-base-117- _filename = 'graphics.ini'
-base:118:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct
-base-119- if header is None:
-base-120- fd = self._fd
-base-121- fd.seek(0)
-base:122:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct
-base-123- if size is None:
-base-124- size = self.getFileSize()
-base-125- leading = 4* [None]
-base:126:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method!
-base-127- if os.path.isfile(fixed):
-base-128- if fixedNewer(ki, fixed):
-base-129- LOG.debug("File %s exists but was changed." % name)
-base:130:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:280</b><br/><pre> # TODO: add parser, currently simply iterates over the file
-base-131- return iter(self._fd)
-base:132:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:156</b><br/><pre> # TODO: write me
-base-133- pass
-base-134-
-base-135-class Constrain(object):
-base:136:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:540</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
-base-137- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-138- # microphon missing -> OS mixer
-base-139- }
-base:140:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:628</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
-base-141-
-base-142-class GraphicsIni(ConfFile):
-base-143- _filename = 'graphics.ini'
-base:144:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch
-base-145- return len([name for name in os.listdir(path)
-base-146- if os.path.isfile(os.path.join(path, name))])
-base-147-
-base:148:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch
-base-149- return len([name for name in os.listdir(path)
-base-150- if os.path.isfile(os.path.join(path, name))])
-base-151-
-base:152:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:77</b><br/><pre> # XXX: dos format
-base-153-base-78- return data.replace("\r\n", "\n")
-base-154-base-79-
-base-155-base-80-def encryptWDYS(instr, fout):
-base:156:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:87</b><br/><pre> # XXX: dos format
-base-157-base-88- instr = instr.replace("\n", "\r\n")
-base-158-base-89- fout.seek(0)
-base-159-base-90- fout.write(HEADER)
-base:160:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:71</b><br/><pre> # XXX NotImplemented
-base-161-base-72- raise NotImplementedError
-base-162-base-73-
-base-163-base-74-def decipher(crypt, size, key):
-base:164:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:77</b><br/><pre> # XXX: dos format
-base-165- return data.replace("\r\n", "\n")
-base-166-
-base-167-def encryptWDYS(instr, fout):
-base:168:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:87</b><br/><pre> # XXX: dos format
-base-169- instr = instr.replace("\n", "\r\n")
-base-170- fout.seek(0)
-base-171- fout.write(HEADER)
-base:172:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:71</b><br/><pre> # XXX NotImplemented
-base-173- raise NotImplementedError
-base-174-
-base-175-def decipher(crypt, size, key):
-base:176:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:151</b><br/><pre> # FIXME: signal doesn't do anything
-base-177-base-152- self.emit(SIGNAL("close()"))
-base-178-base-153- event.accept()
-base-179-base-154- event.ignore()
-base:180:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:222</b><br/><pre> # TODO: msg
-base-181-base-223- return
-base-182-base-224-
-base-183-base-225- self.pb_kiimage_repair.setEnabled(False)
-base:184:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:248</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
-base-185-base-249- del self._kiimage_progressbar
-base-186-base-250- self.pb_kiimage_repair.setEnabled(True)
-base:187:base:251: # TODO: msg
-base-188-base-252-
-base-189-base-253- # ************************************************************************
-base-190-base-254- # system tray
-base:191:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:281</b><br/><pre> # TODO: needs optimization? run only when timer tab is active
-base-192-base-282- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-base-193-base-283- timer.start()
-base-194-base-284-
-base:195:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:375</b><br/><pre> # TODO: thread safety!
-base-196-base-376- self.servers = servers
-base-197-base-377- if not self.isRunning():
-base-198-base-378- self.start()
-base:199:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:381</b><br/><pre> # TODO: thread safety!
-base-200-base-382- # emit a list of names first
-base-201-base-383- for server in self.servers:
-base-202-base-384- self.emit(SIGNAL("server(const QString&)"), server.name)
-base:203:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:417</b><br/><pre> # TODO check this
-base-204-base-418- self._running = False
-base-205-base-419- self.condition.wakeAll()
-base-206-base-420-
-base:207:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:46</b><br/><pre> # TODO: translation aware
-base-208-base-47- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
-base-209-base-48- if not getattr(sys, 'frozen', False):
-base-210-base-49- return
-base:211:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/wdysini.py.svn-base:67</b><br/><pre> self.context.emit(SIGNAL("audioini_load()")) # XXX: hard coded emit
-base:212:base:68: self.context.emit(SIGNAL("graphicsini_load()")) # XXX: hard coded emit
-base-213-base-69-
-base-214-base-70- @pyqtSignature("bool")
-base-215-base-71- def on_graphicsChanged(self, boolean):
-base:216:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:143</b><br/><pre> # FIXME: signal doesn't do anything
-base-217- self.emit(SIGNAL("close()"))
-base-218- event.accept()
-base-219- event.ignore()
-base:220:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:214</b><br/><pre> # TODO: msg
-base-221- return
-base-222-
-base-223- self.pb_kiimage_repair.setEnabled(False)
-base:224:</pre></li><li><b>File: utilities/....
[truncated message content] |
|
From: <ti...@us...> - 2007-02-13 19:37:09
|
Revision: 165
http://pymoul.svn.sourceforge.net/pymoul/?rev=165&view=rev
Author: tiran
Date: 2007-02-13 11:37:02 -0800 (Tue, 13 Feb 2007)
Log Message:
-----------
Fixed broken unit tests
Modified Paths:
--------------
pymoul/trunk/Makefile.in
pymoul/trunk/src/moul/file/chatlog.py
pymoul/trunk/src/moul/file/plasmalog.py
pymoul/trunk/src/moul/file/tests/test_wdysini.py
Modified: pymoul/trunk/Makefile.in
===================================================================
--- pymoul/trunk/Makefile.in 2007-02-13 15:32:47 UTC (rev 164)
+++ pymoul/trunk/Makefile.in 2007-02-13 19:37:02 UTC (rev 165)
@@ -38,10 +38,10 @@
ui:
$(PYTHON) utilities/compileui.py ./src/moul/
-test_build: build ui
+test_build: build
PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
-test_inplace: ui
+test_inplace:
PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
doc_html:
Modified: pymoul/trunk/src/moul/file/chatlog.py
===================================================================
--- pymoul/trunk/src/moul/file/chatlog.py 2007-02-13 15:32:47 UTC (rev 164)
+++ pymoul/trunk/src/moul/file/chatlog.py 2007-02-13 19:37:02 UTC (rev 165)
@@ -101,7 +101,7 @@
return False
if not os.path.isdir(self._destdir):
LOG.info("Creating chatlog directory %s" % self._destdir)
- os.mkdir(destdir)
+ os.mkdir(self._destdir)
return False
return True
@@ -232,6 +232,12 @@
self._chatlogs.append(chatlog)
self._chatlogs.sort(key=lambda element:element.name)
+ @property
+ def names(self):
+ """list of names
+ """
+ return [clv.name for clv in self._chatlogs]
+
def __len__(self):
"""len() support
"""
@@ -239,10 +245,10 @@
def __iter__(self):
return iter(self._chatlogs)
-
+
def __contains__(self, other):
return other in self._chatlogs
-
+
def __getitem__(self, idx):
return self._chatlogs[idx]
Modified: pymoul/trunk/src/moul/file/plasmalog.py
===================================================================
--- pymoul/trunk/src/moul/file/plasmalog.py 2007-02-13 15:32:47 UTC (rev 164)
+++ pymoul/trunk/src/moul/file/plasmalog.py 2007-02-13 19:37:02 UTC (rev 165)
@@ -48,6 +48,7 @@
self._doremove = True
self._dozip = True
LOG.debug("PlasmalogZipper: %s -> %s" % (srcdir, destdir))
+ self.clear()
def clear(self):
"""Clear state
@@ -56,15 +57,15 @@
self._not_removed = [] # files with full path
if not os.path.isdir(self._srcdir):
- LOG.warning("%s is not a directory" % 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" % srcdir)
+ 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" % destdir)
- os.mkdir(destdir)
+ LOG.info("Creating chatlog directory %s" % self._destdir)
+ os.mkdir(self._destdir)
def setZip(self, boolean):
"""Set ZIP flag
Modified: pymoul/trunk/src/moul/file/tests/test_wdysini.py
===================================================================
--- pymoul/trunk/src/moul/file/tests/test_wdysini.py 2007-02-13 15:32:47 UTC (rev 164)
+++ pymoul/trunk/src/moul/file/tests/test_wdysini.py 2007-02-13 19:37:02 UTC (rev 165)
@@ -111,8 +111,6 @@
self.failIf(p.exists())
p.create()
self.failUnless(p.exists())
- p.write()
- self.failUnless(p.exists())
# TODO: more
class AudioIniTest(GenericIniTest):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-02-14 22:47:48
|
Revision: 166
http://pymoul.svn.sourceforge.net/pymoul/?rev=166&view=rev
Author: tiran
Date: 2007-02-14 14:47:45 -0800 (Wed, 14 Feb 2007)
Log Message:
-----------
Updated XXX report and languages
Modified Paths:
--------------
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/doc/XXXreport.html
===================================================================
--- pymoul/trunk/doc/XXXreport.html 2007-02-13 19:37:02 UTC (rev 165)
+++ pymoul/trunk/doc/XXXreport.html 2007-02-14 22:47:45 UTC (rev 166)
@@ -3,11 +3,11 @@
<body>
<h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1>
-<p>Generated on Wed, 07 Feb 2007 16:03:30 CET, based on Zope 3's XXX report</p>
+<p>Generated on Tue, 13 Feb 2007 20:37:41 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 133 XXX/TODO/FIXME comments.
</p>
<hr/>
<h3>Listing</h3>
@@ -63,14 +63,14 @@
base-106-
base-107- def test_publicapi_create(self):
base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-</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-117-
-base-118-class AudioIniTest(GenericIniTest):
-base-119- enc = aud_enc
-</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-155-
-base-156- p.screenres = 0
-base-157- eq(p._get('Graphics.Width'), 800)
+</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:114</b><br/><pre> # TODO: more
+base-115-
+base-116-class AudioIniTest(GenericIniTest):
+base-117- enc = aud_enc
+</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-153-
+base-154- p.screenres = 0
+base-155- eq(p._get('Graphics.Width'), 800)
</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-81- fd = open(os.path.join(path, fname), 'wb')
base-82- fd.write('dummy')
@@ -79,14 +79,26 @@
def test_publicapi_create(self):
inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more
+</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:114</b><br/><pre> # TODO: more
class AudioIniTest(GenericIniTest):
enc = aud_enc
-</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:154</b><br/><pre> #XXX self.failIf(p.isChanged())
+</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:152</b><br/><pre> #XXX self.failIf(p.isChanged())
p.screenres = 0
eq(p._get('Graphics.Width'), 800)
+</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:105</b><br/><pre> # TODO: more
+
+ def test_publicapi_create(self):
+ inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
+</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:116</b><br/><pre> # TODO: more
+
+class AudioIniTest(GenericIniTest):
+ enc = aud_enc
+</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:154</b><br/><pre> #XXX self.failIf(p.isChanged())
+
+ p.screenres = 0
+ eq(p._get('Graphics.Width'), 800)
</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
fd = open(os.path.join(path, fname), 'wb')
fd.write('dummy')
@@ -155,110 +167,164 @@
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/crypt/.svn/text-base/whatdoyousee.py.svn-base:77</b><br/><pre> # XXX: dos format
-base-78- return data.replace("\r\n", "\n")
-base-79-
-base-80-def encryptWDYS(instr, fout):
-</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:87</b><br/><pre> # XXX: dos format
-base-88- instr = instr.replace("\n", "\r\n")
-base-89- fout.seek(0)
-base-90- fout.write(HEADER)
-</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:71</b><br/><pre> # XXX NotImplemented
-base-72- raise NotImplementedError
-base-73-
-base-74-def decipher(crypt, size, key):
-</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:77</b><br/><pre> # XXX: dos format
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:76</b><br/><pre> # XXX: dos format
+base-77- return data.replace("\r\n", "\n")
+base-78-
+base-79-def encryptWDYS(instr, fout):
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:86</b><br/><pre> # XXX: dos format
+base-87- instr = instr.replace("\n", "\r\n")
+base-88- fout.seek(0)
+base-89- fout.write(HEADER)
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:28</b><br/><pre># TODO: use BinaryFile
+base-29-
+base-30-def list2int(lst):
+base-31- return [ord(s) for s in lst]
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:72</b><br/><pre> # XXX NotImplemented
+base-73- raise NotImplementedError
+base-74-
+base-75-def decipher(crypt, size, key):
+</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-294- raise ValueError("string is too long: %i" % size)
+base-295- if self.version == 5:
+base-296- size |= 0xF000
+</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-316- raise ValueError("size '%i' > 1024 at position %s(%s)" %
+base-317- (size, fd.tell(), repr(fd)))
+base-318- if self.version == 5:
+base:319: # XXX: testme
+base-320- # read data as tuple of integeres
+base-321- data = fd.readPacked("<%iI" % size)
+base-322- # OR integers with 0xff and write their char equivalent to string
+</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-99- pass
+base-100-
+base-101- def test_string0(self):
+</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py:98</b><br/><pre> # XXX: no test data
+ pass
+
+ def test_string0(self):
+</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py~:98</b><br/><pre> # XXX: no test data
+ pass
+
+ def test_string0(self):
+</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:76</b><br/><pre> # XXX: dos format
return data.replace("\r\n", "\n")
def encryptWDYS(instr, fout):
-</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:87</b><br/><pre> # XXX: dos format
+</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:86</b><br/><pre> # XXX: dos format
instr = instr.replace("\n", "\r\n")
fout.seek(0)
fout.write(HEADER)
-</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:71</b><br/><pre> # XXX NotImplemented
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:293</b><br/><pre> if size > 1024: # XXX: ???
+ raise ValueError("string is too long: %i" % size)
+ if self.version == 5:
+ size |= 0xF000
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:315</b><br/><pre> if size > 1024: # XXX: ???
+ raise ValueError("size '%i' > 1024 at position %s(%s)" %
+ (size, fd.tell(), repr(fd)))
+ if self.version == 5:
+ # read data as tuple of integeres
+ data = fd.readPacked("<%iI" % size)
+ # OR integers with 0xff and write their char equivalent to string
+</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:28</b><br/><pre># TODO: use BinaryFile
+
+def list2int(lst):
+ return [ord(s) for s in lst]
+</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:72</b><br/><pre> # XXX NotImplemented
raise NotImplementedError
def decipher(crypt, size, key):
-</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-153- self.emit(SIGNAL("close()"))
-base-154- event.accept()
-base-155- event.ignore()
-</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-292- del self._kiimage_progressbar
-base-293- self.pb_kiimage_repair.setEnabled(True)
-base-294- mb = qtutils.infoMB(self,
-</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-391- self._timezone_timer = timer = QtCore.QTimer(self)
-base-392- timer.setInterval(1000) # 1 sec
-base:393: # TODO: needs optimization? run only when timer tab is active
-base-394- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-base-395- timer.start()
-base-396-
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:487</b><br/><pre> # TODO: thread safety!
-base-488- self.servers = servers
-base-489- if not self.isRunning():
-base-490- self.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:493</b><br/><pre> # TODO: thread safety!
-base-494- # emit a list of names first
-base-495- for server in self.servers:
-base-496- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:531</b><br/><pre> # TODO check this
-base-532- self._running = False
-base-533- self.condition.wakeAll()
-base-534-
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:293</b><br/><pre> if size > 1024: # XXX: ???
+ raise ValueError("string is too long: %i" % size)
+ if self.version == 5:
+ size |= 0xF000
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:315</b><br/><pre> if size > 1024: # XXX: ???
+ raise ValueError("size '%i' > 1024 at position %s(%s)" %
+ (size, fd.tell(), repr(fd)))
+ if self.version == 5:
+ # read data as tuple of integeres
+ data = fd.readPacked("<%iI" % size)
+ # OR integers with 0xff and write their char equivalent to string
+</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-155- self.emit(SIGNAL("close()"))
+base-156- event.accept()
+base-157- event.ignore()
+</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-294- del self._kiimage_progressbar
+base-295- self.pb_kiimage_repair.setEnabled(True)
+base-296- mb = qtutils.infoMB(self,
+</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-393- self._timezone_timer = QtCore.QTimer(self)
+base-394- self._timezone_timer.setInterval(1000) # 1 sec
+base:395: # TODO: needs optimization? run only when timer tab is active
+base-396- self.connect(self._timezone_timer, SIGNAL('timeout()'),
+base-397- self.on_timezone_timer_timeout)
+base-398- self._timezone_timer.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:507</b><br/><pre> # TODO: thread safety!
+base-508- self.servers = servers
+base-509- if not self.isRunning():
+base-510- self.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:513</b><br/><pre> # TODO: thread safety!
+base-514- # emit a list of names first
+base-515- for server in self.servers:
+base-516- self.emit(SIGNAL("server(const QString&)"), server.name)
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:551</b><br/><pre> # TODO check this
+base-552- self._running = False
+base-553- self.condition.wakeAll()
+base-554-
</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/mainwindow.py~:151</b><br/><pre> # FIXME: signal doesn't do anything
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:154</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:290</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
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~:389</b><br/><pre> # TODO: change timer from every second to every minute
- self._timezone_timer = timer = QtCore.QTimer(self)
- timer.setInterval(1000) # 1 sec
- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
- timer.start()
-
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:486</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:392</b><br/><pre> # TODO: change timer from every second to every minute
+ self._timezone_timer = QtCore.QTimer(self)
+ self._timezone_timer.setInterval(1000) # 1 sec
+ self.connect(self._timezone_timer, SIGNAL('timeout()'),
+ self.on_timezone_timer_timeout)
+ self._timezone_timer.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:507</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~:492</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:513</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:530</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:551</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:152</b><br/><pre> # FIXME: signal doesn't do anything
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:154</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:291</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
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:390</b><br/><pre> # TODO: change timer from every second to every minute
- self._timezone_timer = timer = QtCore.QTimer(self)
- timer.setInterval(1000) # 1 sec
- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
- timer.start()
-
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:487</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:392</b><br/><pre> # TODO: change timer from every second to every minute
+ self._timezone_timer = QtCore.QTimer(self)
+ self._timezone_timer.setInterval(1000) # 1 sec
+ self.connect(self._timezone_timer, SIGNAL('timeout()'),
+ self.on_timezone_timer_timeout)
+ self._timezone_timer.start()
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:507</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:493</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:513</b><br/><pre> # TODO: thread safety!
# emit a list of names first
for server in self.servers:
self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:531</b><br/><pre> # TODO check this
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:551</b><br/><pre> # TODO check this
self._running = False
self.condition.wakeAll()
@@ -270,6 +336,18 @@
_thismodule = sys.modules[__name__]
if __WIN32__:
from moul.osdependent import win32 as osdep_win32
+</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/__init__.py:37</b><br/><pre>EXEC_NAME = "???" # XXX
+UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater"
+LOCATIONS = [
+ "/Applications",
+</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-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/darwin/__init__.py~:37</b><br/><pre>EXEC_NAME = "???" # XXX
+UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater"
+LOCATIONS = [
+ "/Applications",
</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-121-_thismodule = sys.modules[__name__]
base-122-if __WIN32__:
@@ -290,10 +368,10 @@
base-27-base-691- from zope.tales.tales import TALESTracebackSupplement
base-28-base-692- from zope.pagetemplate.pagetemplate \
base-29-base-693- import PageTemplateTracebackSupplement
-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-31-base-209- if not os.path.isdir(self._logdir):
-base-32-base-210- LOG.warning("%s is not a directory" % logdir)
-base-33-base-211- return
+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-31-base-217- if not os.path.isdir(self._archivedir):
+base-32-base-218- LOG.warning("%s is not a directory" % self._archivedir)
+base-33-base-219- return
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-35-base-113- if header is None:
base-36-base-114- fd = self._fd
@@ -354,10 +432,10 @@
base-91- fd = open(os.path.join(path, fname), 'wb')
base-92- fd.write('dummy')
base-93- fd.close()
-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-95- if not os.path.isdir(self._logdir):
-base-96- LOG.warning("%s is not a directory" % logdir)
-base-97- return
+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-95- if not os.path.isdir(self._archivedir):
+base-96- LOG.warning("%s is not a directory" % self._archivedir)
+base-97- return
base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
base-99- if header is None:
base-100- fd = self._fd
@@ -406,10 +484,10 @@
base-143-
base-144-class GraphicsIni(ConfFile):
base-145- _filename = 'graphics.ini'
-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-147- if not os.path.isdir(logdir):
-base-148- LOG.warning("%s is not a directory" % logdir)
-base-149- return
+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-147- if not os.path.isdir(self._archivedir):
+base-148- LOG.warning("%s is not a directory" % self._archivedir)
+base-149- return
base:150:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch
base-151- return len([name for name in os.listdir(path)
base-152- if os.path.isfile(os.path.join(path, name))])
@@ -442,89 +520,89 @@
base-179- raise NotImplementedError
base-180-
base-181-def decipher(crypt, size, key):
-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-183-base-150- self.emit(SIGNAL("close()"))
-base-184-base-151- event.accept()
-base-185-base-152- event.ignore()
-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-187-base-251- del self._kiimage_progressbar
-base-188-base-252- self.pb_kiimage_repair.setEnabled(True)
-base-189-base-253- mb = qtutils.infoMB(self,
-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-191-base-346- self._timezone_timer = timer = QtCore.QTimer(self)
-base-192-base-347- timer.setInterval(1000) # 1 sec
-base:193:base:348: # TODO: needs optimization? run only when timer tab is active
-base-194-base-349- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-base-195-base-350- timer.start()
-base-196-base-351-
-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-198-base-443- self.servers = servers
-base-199-base-444- if not self.isRunning():
-base-200-base-445- self.start()
-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-202-base-449- # emit a list of names first
-base-203-base-450- for server in self.servers:
-base-204-base-451- self.emit(SIGNAL("server(const QString&)"), server.name)
-base:205:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:484</b><br/><pre> # TODO check this
-base-206-base-485- self._running = False
-base-207-base-486- self.condition.wakeAll()
-base-208-base-487-
-base:209:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:46</b><br/><pre> # TODO: translation aware
-base-210-base-47- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
-base-211-base-48- if not getattr(sys, 'frozen', False):
-base-212-base-49- return
-base:213:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:149</b><br/><pre> # FIXME: signal doesn't do anything
+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-183-base-153- self.emit(SIGNAL("close()"))
+base-184-base-154- event.accept()
+base-185-base-155- event.ignore()
+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-187-base-292- del self._kiimage_progressbar
+base-188-base-293- self.pb_kiimage_repair.setEnabled(True)
+base-189-base-294- mb = qtutils.infoMB(self,
+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-191-base-391- self._timezone_timer = timer = QtCore.QTimer(self)
+base-192-base-392- timer.setInterval(1000) # 1 sec
+base:193:base:393: # TODO: needs optimization? run only when timer tab is active
+base-194-base-394- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
+base-195-base-395- timer.start()
+base-196-base-396-
+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-198-base-488- self.servers = servers
+base-199-base-489- if not self.isRunning():
+base-200-base-490- self.start()
+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-202-base-494- # emit a list of names first
+base-203-base-495- for server in self.servers:
+base-204-base-496- self.emit(SIGNAL("server(const QString&)"), server.name)
+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-206-base-532- self._running = False
+base-207-base-533- self.condition.wakeAll()
+base-208-base-534-
+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-210-base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback))
+base-211-base-47- if getattr(sys, 'frozen', False):
+base-212-base-48- try:
+base:213:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:151</b><br/><pre> # FIXME: signal doesn't do anything
base-214- self.emit(SIGNAL("close()"))
base-215- event.accept()
base-216- event.ignore()
-base:217:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+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-218- del self._kiimage_progressbar
base-219- self.pb_kiimage_repair.setEnabled(True)
base-220- mb = qtutils.infoMB(self,
-base:221:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:345</b><br/><pre> # TODO: change timer from every second to every minute
+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-222- self._timezone_timer = timer = QtCore.QTimer(self)
base-223- timer.setInterval(1000) # 1 sec
base-224- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout)
-</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~:442</b><br/><pre> # TODO: thread safety!
+</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-228- self.servers = servers
base-229- if not self.isRunning():
base-230- self.start()
-base:231:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:448</b><br/><pre> # TODO: thread safety!
+base:231:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:492</b><br/><pre> # TODO: thread safety!
base-232- # emit a list of names firs...
[truncated message content] |
|
From: <ti...@us...> - 2007-02-15 03:14:41
|
Revision: 171
http://pymoul.svn.sourceforge.net/pymoul/?rev=171&view=rev
Author: tiran
Date: 2007-02-14 19:14:42 -0800 (Wed, 14 Feb 2007)
Log Message:
-----------
Property fixes
Modified Paths:
--------------
pymoul/trunk/Makefile.in
pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
pymoul/trunk/src/moul/time/utils.py
Property Changed:
----------------
pymoul/trunk/src/moul/crypt/binaryrecord.py
pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
pymoul/trunk/src/moul/time/utils.py
Modified: pymoul/trunk/Makefile.in
===================================================================
--- pymoul/trunk/Makefile.in 2007-02-15 03:13:10 UTC (rev 170)
+++ pymoul/trunk/Makefile.in 2007-02-15 03:14:42 UTC (rev 171)
@@ -75,7 +75,9 @@
propset:
$(FINDPYTXT) | xargs svn propset svn:keywords "Id Revision"
- $(FINDTEXT) | xargs svn propset svn:eol-style "native"
+ $(FINDTEXT) | xargs svn propset svn:eol-style "native"
+ find src/moul -name '*.png' $(NOTSVN) | xargs svn propset \
+ svn:mimetype image/png
fixlineendings:
$(FINDPY) | xargs recode -f ibmpc..latin1
Property changes on: pymoul/trunk/src/moul/crypt/binaryrecord.py
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Modified: pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
===================================================================
--- pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py 2007-02-15 03:13:10 UTC (rev 170)
+++ pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py 2007-02-15 03:14:42 UTC (rev 171)
@@ -18,8 +18,8 @@
"""moul.crypt.binaryrecord unit tests
"""
__author__ = "Christian Heimes"
-__version__ = "$Id: test_elf.py 122 2007-02-02 17:34:06Z tiran $"
-__revision__ = "$Revision: 122 $"
+__version__ = "$Id$"
+__revision__ = "$Revision$"
import os
import unittest
Property changes on: pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Modified: pymoul/trunk/src/moul/time/utils.py
===================================================================
--- pymoul/trunk/src/moul/time/utils.py 2007-02-15 03:13:10 UTC (rev 170)
+++ pymoul/trunk/src/moul/time/utils.py 2007-02-15 03:14:42 UTC (rev 171)
@@ -18,8 +18,8 @@
"""pyMoul cavern time tool
"""
__author__ = "Christian Heimes"
-__version__ = "$Id: cavern.py 124 2007-02-02 17:45:42Z tiran $"
-__revision__ = "$Revision: 124 $"
+__version__ = "$Id$"
+__revision__ = "$Revision$"
from moul.osdependent import __FROZEN__
# pytz is an egg
Property changes on: pymoul/trunk/src/moul/time/utils.py
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-02-22 15:48:55
|
Revision: 183
http://pymoul.svn.sourceforge.net/pymoul/?rev=183&view=rev
Author: tiran
Date: 2007-02-22 07:48:55 -0800 (Thu, 22 Feb 2007)
Log Message:
-----------
Changed UI a bit
fixed a log error
Modified Paths:
--------------
pymoul/trunk/build.bat
pymoul/trunk/installer.bat
pymoul/trunk/run.bat
pymoul/trunk/src/moul/log.py
pymoul/trunk/src/moul/qt/ui/mainwindow.py
pymoul/trunk/src/moul/qt/ui/mainwindow.ui
Modified: pymoul/trunk/build.bat
===================================================================
--- pymoul/trunk/build.bat 2007-02-22 14:42:24 UTC (rev 182)
+++ pymoul/trunk/build.bat 2007-02-22 15:48:55 UTC (rev 183)
@@ -1,5 +1,6 @@
@echo off
cls
set PYTHONPATH=src
+python utilities\compileui.py src\moul\qt
python setup.py py2exe
pause
Modified: pymoul/trunk/installer.bat
===================================================================
--- pymoul/trunk/installer.bat 2007-02-22 14:42:24 UTC (rev 182)
+++ pymoul/trunk/installer.bat 2007-02-22 15:48:55 UTC (rev 183)
@@ -2,5 +2,6 @@
cls
set PYTHONPATH=src
set INNOSETUP=yes
+python utilities\compileui.py src\moul\qt
python setup.py py2exe
pause
Modified: pymoul/trunk/run.bat
===================================================================
--- pymoul/trunk/run.bat 2007-02-22 14:42:24 UTC (rev 182)
+++ pymoul/trunk/run.bat 2007-02-22 15:48:55 UTC (rev 183)
@@ -1,5 +1,5 @@
@echo off
cls
set PYTHONPATH=src
+python utilities\compileui.py src\moul\qt
python src\moul\qt\moulqt.py
-pause
Modified: pymoul/trunk/src/moul/log.py
===================================================================
--- pymoul/trunk/src/moul/log.py 2007-02-22 14:42:24 UTC (rev 182)
+++ pymoul/trunk/src/moul/log.py 2007-02-22 15:48:55 UTC (rev 183)
@@ -74,7 +74,7 @@
# MemoryHandler doesn't flush w/o a target
self.mhdlr = handlers.MemoryHandler(capacity=4*1024)
self.mhdlr.setFormatter(self.format)
- self.root.addHandler(mhdlr)
+ self.root.addHandler(self.mhdlr)
def _removeMemoryHdlr(self):
"""Remove memory handler
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-22 14:42:24 UTC (rev 182)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-22 15:48:55 UTC (rev 183)
@@ -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: Tue Feb 20 15:52:22 2007
+# Created: Thu Feb 22 16:46:01 2007
# by: PyQt4 UI code generator 4.1.1
#
# WARNING! All changes made in this file will be lost!
@@ -44,6 +44,12 @@
spacerItem1 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
self.hboxlayout.addItem(spacerItem1)
+ self.main_buttonbox = QtGui.QDialogButtonBox(self.centralwidget)
+ self.main_buttonbox.setGeometry(QtCore.QRect(10,520,451,32))
+ self.main_buttonbox.setOrientation(QtCore.Qt.Horizontal)
+ self.main_buttonbox.setStandardButtons(QtGui.QDialogButtonBox.Close|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Reset|QtGui.QDialogButtonBox.Save)
+ self.main_buttonbox.setObjectName("main_buttonbox")
+
self.tabwidget = QtGui.QTabWidget(self.centralwidget)
self.tabwidget.setGeometry(QtCore.QRect(0,80,471,434))
self.tabwidget.setTabPosition(QtGui.QTabWidget.North)
@@ -140,64 +146,6 @@
spacerItem3 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
self.hboxlayout1.addItem(spacerItem3)
-
- self.gb_caverntime = QtGui.QGroupBox(self.tab_tasks)
- self.gb_caverntime.setGeometry(QtCore.QRect(10,180,451,91))
- self.gb_caverntime.setObjectName("gb_caverntime")
-
- self.gridLayout = QtGui.QWidget(self.gb_caverntime)
- self.gridLayout.setGeometry(QtCore.QRect(20,20,292,56))
- self.gridLayout.setObjectName("gridLayout")
-
- self.gridlayout1 = QtGui.QGridLayout(self.gridLayout)
- self.gridlayout1.setMargin(0)
- self.gridlayout1.setSpacing(6)
- self.gridlayout1.setObjectName("gridlayout1")
-
- self.label_5 = QtGui.QLabel(self.gridLayout)
-
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(0),QtGui.QSizePolicy.Policy(5))
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
- self.label_5.setSizePolicy(sizePolicy)
- self.label_5.setObjectName("label_5")
- self.gridlayout1.addWidget(self.label_5,0,0,1,1)
-
- self.lb_cavern_utc = QtGui.QLabel(self.gridLayout)
- self.lb_cavern_utc.setObjectName("lb_cavern_utc")
- self.gridlayout1.addWidget(self.lb_cavern_utc,0,2,1,1)
-
- self.dt_cavern = QtGui.QDateTimeEdit(self.gridLayout)
- self.dt_cavern.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape(0)))
- self.dt_cavern.setFocusPolicy(QtCore.Qt.NoFocus)
- self.dt_cavern.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
- self.dt_cavern.setReadOnly(True)
- self.dt_cavern.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.dt_cavern.setObjectName("dt_cavern")
- self.gridlayout1.addWidget(self.dt_cavern,0,1,1,1)
-
- self.dt_pacific = QtGui.QDateTimeEdit(self.gridLayout)
- self.dt_pacific.setFocusPolicy(QtCore.Qt.NoFocus)
- self.dt_pacific.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
- self.dt_pacific.setReadOnly(True)
- self.dt_pacific.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.dt_pacific.setObjectName("dt_pacific")
- self.gridlayout1.addWidget(self.dt_pacific,1,1,1,1)
-
- self.label_8 = QtGui.QLabel(self.gridLayout)
-
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(0),QtGui.QSizePolicy.Policy(5))
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth())
- self.label_8.setSizePolicy(sizePolicy)
- self.label_8.setObjectName("label_8")
- self.gridlayout1.addWidget(self.label_8,1,0,1,1)
-
- self.lb_pacific_utc = QtGui.QLabel(self.gridLayout)
- self.lb_pacific_utc.setObjectName("lb_pacific_utc")
- self.gridlayout1.addWidget(self.lb_pacific_utc,1,2,1,1)
self.tabwidget.addTab(self.tab_tasks,"")
self.tab_settings = QtGui.QWidget()
@@ -749,80 +697,161 @@
self.tab_time = QtGui.QWidget()
self.tab_time.setObjectName("tab_time")
- self.gb_dnitime = QtGui.QGroupBox(self.tab_time)
- self.gb_dnitime.setGeometry(QtCore.QRect(10,220,451,181))
- self.gb_dnitime.setObjectName("gb_dnitime")
-
- self.gv_dniclock = QtGui.QGraphicsView(self.gb_dnitime)
- self.gv_dniclock.setGeometry(QtCore.QRect(10,20,431,151))
- self.gv_dniclock.setFocusPolicy(QtCore.Qt.NoFocus)
- self.gv_dniclock.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
- self.gv_dniclock.setAcceptDrops(False)
- self.gv_dniclock.setFrameShadow(QtGui.QFrame.Plain)
- self.gv_dniclock.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- self.gv_dniclock.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- self.gv_dniclock.setInteractive(False)
- self.gv_dniclock.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
- self.gv_dniclock.setRenderHints(QtGui.QPainter.Antialiasing|QtGui.QPainter.SmoothPixmapTransform|QtGui.QPainter.TextAntialiasing)
- self.gv_dniclock.setObjectName("gv_dniclock")
-
self.groupBox_3 = QtGui.QGroupBox(self.tab_time)
- self.groupBox_3.setGeometry(QtCore.QRect(10,0,451,221))
+ self.groupBox_3.setGeometry(QtCore.QRect(10,0,451,151))
self.groupBox_3.setObjectName("groupBox_3")
self.gridLayout_5 = QtGui.QWidget(self.groupBox_3)
- self.gridLayout_5.setGeometry(QtCore.QRect(10,20,431,184))
+ self.gridLayout_5.setGeometry(QtCore.QRect(10,10,444,141))
self.gridLayout_5.setObjectName("gridLayout_5")
- self.gridlayout2 = QtGui.QGridLayout(self.gridLayout_5)
- self.gridlayout2.setMargin(0)
- self.gridlayout2.setSpacing(6)
- self.gridlayout2.setObjectName("gridlayout2")
+ self.gridlayout1 = QtGui.QGridLayout(self.gridLayout_5)
+ self.gridlayout1.setMargin(0)
+ self.gridlayout1.setSpacing(6)
+ self.gridlayout1.setObjectName("gridlayout1")
- spacerItem4 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.gridlayout2.addItem(spacerItem4,0,1,1,1)
+ self.rb_earthtime = QtGui.QRadioButton(self.gridLayout_5)
+ self.rb_earthtime.setChecked(True)
+ self.rb_earthtime.setObjectName("rb_earthtime")
+ self.gridlayout1.addWidget(self.rb_earthtime,1,0,1,1)
self.hboxlayout9 = QtGui.QHBoxLayout()
self.hboxlayout9.setMargin(0)
self.hboxlayout9.setSpacing(6)
self.hboxlayout9.setObjectName("hboxlayout9")
+ self.cb_dniholidays = QtGui.QComboBox(self.gridLayout_5)
+ self.cb_dniholidays.setObjectName("cb_dniholidays")
+ self.hboxlayout9.addWidget(self.cb_dniholidays)
+
+ spacerItem4 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout9.addItem(spacerItem4)
+ self.gridlayout1.addLayout(self.hboxlayout9,4,1,1,1)
+
+ self.rb_curtime = QtGui.QRadioButton(self.gridLayout_5)
+ self.rb_curtime.setObjectName("rb_curtime")
+ self.gridlayout1.addWidget(self.rb_curtime,0,0,1,1)
+
+ self.hboxlayout10 = QtGui.QHBoxLayout()
+ self.hboxlayout10.setMargin(0)
+ self.hboxlayout10.setSpacing(6)
+ self.hboxlayout10.setObjectName("hboxlayout10")
+
+ self.sb_gahrtahvo = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_gahrtahvo.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.sb_gahrtahvo.setMaximum(4)
+ self.sb_gahrtahvo.setProperty("value",QtCore.QVariant(0))
+ self.sb_gahrtahvo.setObjectName("sb_gahrtahvo")
+ self.hboxlayout10.addWidget(self.sb_gahrtahvo)
+
+ self.label_9 = QtGui.QLabel(self.gridLayout_5)
+ self.label_9.setObjectName("label_9")
+ self.hboxlayout10.addWidget(self.label_9)
+
+ self.sb_tahvo = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_tahvo.setMinimumSize(QtCore.QSize(0,0))
+ self.sb_tahvo.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.sb_tahvo.setMaximum(24)
+ self.sb_tahvo.setProperty("value",QtCore.QVariant(0))
+ self.sb_tahvo.setObjectName("sb_tahvo")
+ self.hboxlayout10.addWidget(self.sb_tahvo)
+
+ self.label_10 = QtGui.QLabel(self.gridLayout_5)
+ self.label_10.setObjectName("label_10")
+ self.hboxlayout10.addWidget(self.label_10)
+
+ self.sb_gorahn = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_gorahn.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.sb_gorahn.setMaximum(24)
+ self.sb_gorahn.setProperty("value",QtCore.QVariant(0))
+ self.sb_gorahn.setObjectName("sb_gorahn")
+ self.hboxlayout10.addWidget(self.sb_gorahn)
+
+ self.label_11 = QtGui.QLabel(self.gridLayout_5)
+ self.label_11.setObjectName("label_11")
+ self.hboxlayout10.addWidget(self.label_11)
+
+ self.sb_prorahn = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_prorahn.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.sb_prorahn.setMaximum(24)
+ self.sb_prorahn.setProperty("value",QtCore.QVariant(0))
+ self.sb_prorahn.setObjectName("sb_prorahn")
+ self.hboxlayout10.addWidget(self.sb_prorahn)
+
+ spacerItem5 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout10.addItem(spacerItem5)
+ self.gridlayout1.addLayout(self.hboxlayout10,3,1,1,1)
+
+ self.rb_dniholiday = QtGui.QRadioButton(self.gridLayout_5)
+ self.rb_dniholiday.setObjectName("rb_dniholiday")
+ self.gridlayout1.addWidget(self.rb_dniholiday,4,0,1,1)
+
+ spacerItem6 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.gridlayout1.addItem(spacerItem6,0,1,1,1)
+
+ self.hboxlayout11 = QtGui.QHBoxLayout()
+ self.hboxlayout11.setMargin(0)
+ self.hboxlayout11.setSpacing(6)
+ self.hboxlayout11.setObjectName("hboxlayout11")
+
+ self.sb_fahrah = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_fahrah.setMaximum(15)
+ self.sb_fahrah.setMinimum(1)
+ self.sb_fahrah.setProperty("value",QtCore.QVariant(15))
+ self.sb_fahrah.setObjectName("sb_fahrah")
+ self.hboxlayout11.addWidget(self.sb_fahrah)
+
+ self.sb_fahrah_hahr = QtGui.QSpinBox(self.gridLayout_5)
+ self.sb_fahrah_hahr.setMaximum(249)
+ self.sb_fahrah_hahr.setMinimum(0)
+ self.sb_fahrah_hahr.setProperty("value",QtCore.QVariant(87))
+ self.sb_fahrah_hahr.setObjectName("sb_fahrah_hahr")
+ self.hboxlayout11.addWidget(self.sb_fahrah_hahr)
+
+ self.label_12 = QtGui.QLabel(self.gridLayout_5)
+ self.label_12.setObjectName("label_12")
+ self.hboxlayout11.addWidget(self.label_12)
+
self.sb_hahr = QtGui.QSpinBox(self.gridLayout_5)
self.sb_hahr.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
self.sb_hahr.setMaximum(9999)
self.sb_hahr.setProperty("value",QtCore.QVariant(9662))
self.sb_hahr.setObjectName("sb_hahr")
- self.hboxlayout9.addWidget(self.sb_hahr)
+ self.hboxlayout11.addWidget(self.sb_hahr)
+ self.label_4 = QtGui.QLabel(self.gridLayout_5)
+ self.label_4.setObjectName("label_4")
+ self.hboxlayout11.addWidget(self.label_4)
+
self.cb_vailee = QtGui.QComboBox(self.gridLayout_5)
self.cb_vailee.setMinimumSize(QtCore.QSize(0,0))
self.cb_vailee.setObjectName("cb_vailee")
- self.hboxlayout9.addWidget(self.cb_vailee)
+ self.hboxlayout11.addWidget(self.cb_vailee)
+ self.label_6 = QtGui.QLabel(self.gridLayout_5)
+ self.label_6.setObjectName("label_6")
+ self.hboxlayout11.addWidget(self.label_6)
+
self.sb_yahr = QtGui.QSpinBox(self.gridLayout_5)
self.sb_yahr.setMaximum(29)
self.sb_yahr.setMinimum(1)
self.sb_yahr.setProperty("value",QtCore.QVariant(1))
self.sb_yahr.setObjectName("sb_yahr")
- self.hboxlayout9.addWidget(self.sb_yahr)
+ self.hboxlayout11.addWidget(self.sb_yahr)
- spacerItem5 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout9.addItem(spacerItem5)
- self.gridlayout2.addLayout(self.hboxlayout9,2,1,1,1)
+ spacerItem7 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout11.addItem(spacerItem7)
+ self.gridlayout1.addLayout(self.hboxlayout11,2,1,1,1)
- 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.hboxlayout12 = QtGui.QHBoxLayout()
+ self.hboxlayout12.setMargin(0)
+ self.hboxlayout12.setSpacing(6)
+ self.hboxlayout12.setObjectName("hboxlayout12")
- self.hboxlayout10 = QtGui.QHBoxLayout()
- self.hboxlayout10.setMargin(0)
- self.hboxlayout10.setSpacing(6)
- self.hboxlayout10.setObjectName("hboxlayout10")
-
self.dte_earthtime = QtGui.QDateTimeEdit(self.gridLayout_5)
self.dte_earthtime.setCalendarPopup(True)
self.dte_earthtime.setObjectName("dte_earthtime")
- self.hboxlayout10.addWidget(self.dte_earthtime)
+ self.hboxlayout12.addWidget(self.dte_earthtime)
self.cb_earthtime_tz = QtGui.QComboBox(self.gridLayout_5)
self.cb_earthtime_tz.setEnabled(False)
@@ -834,89 +863,90 @@
self.cb_earthtime_tz.setSizePolicy(sizePolicy)
self.cb_earthtime_tz.setEditable(False)
self.cb_earthtime_tz.setObjectName("cb_earthtime_tz")
- self.hboxlayout10.addWidget(self.cb_earthtime_tz)
+ self.hboxlayout12.addWidget(self.cb_earthtime_tz)
- spacerItem6 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout10.addItem(spacerItem6)
- self.gridlayout2.addLayout(self.hboxlayout10,1,1,1,1)
+ spacerItem8 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout12.addItem(spacerItem8)
+ self.gridlayout1.addLayout(self.hboxlayout12,1,1,1,1)
- self.hboxlayout11 = QtGui.QHBoxLayout()
- self.hboxlayout11.setMargin(0)
- self.hboxlayout11.setSpacing(6)
- self.hboxlayout11.setObjectName("hboxlayout11")
+ self.rb_dnitime = QtGui.QRadioButton(self.gridLayout_5)
+ self.rb_dnitime.setObjectName("rb_dnitime")
+ self.gridlayout1.addWidget(self.rb_dnitime,2,0,1,1)
- self.cb_dniholidays = QtGui.QComboBox(self.gridLayout_5)
- self.cb_dniholidays.setObjectName("cb_dniholidays")
- self.hboxlayout11.addWidget(self.cb_dniholidays)
+ self.gb_caverntime = QtGui.QGroupBox(self.tab_time)
+ self.gb_caverntime.setGeometry(QtCore.QRect(10,150,451,71))
+ self.gb_caverntime.setObjectName("gb_caverntime")
- spacerItem7 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout11.addItem(spacerItem7)
- self.gridlayout2.addLayout(self.hboxlayout11,4,1,1,1)
+ self.gridLayout = QtGui.QWidget(self.gb_caverntime)
+ self.gridLayout.setGeometry(QtCore.QRect(10,10,292,56))
+ self.gridLayout.setObjectName("gridLayout")
- self.hboxlayout12 = QtGui.QHBoxLayout()
- self.hboxlayout12.setMargin(0)
- self.hboxlayout12.setSpacing(6)
- self.hboxlayout12.setObjectName("hboxlayout12")
+ self.gridlayout2 = QtGui.QGridLayout(self.gridLayout)
+ self.gridlayout2.setMargin(0)
+ self.gridlayout2.setSpacing(6)
+ self.gridlayout2.setObjectName("gridlayout2")
- self.sb_gahrtahvo = QtGui.QSpinBox(self.gridLayout_5)
- self.sb_gahrtahvo.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.sb_gahrtahvo.setMaximum(4)
- self.sb_gahrtahvo.setProperty("value",QtCore.QVariant(0))
- self.sb_gahrtahvo.setObjectName("sb_gahrtahvo")
- self.hboxlayout12.addWidget(self.sb_gahrtahvo)
+ self.label_5 = QtGui.QLabel(self.gridLayout)
- self.sb_tahvo = QtGui.QSpinBox(self.gridLayout_5)
- self.sb_tahvo.setMinimumSize(QtCore.QSize(0,0))
- self.sb_tahvo.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.sb_tahvo.setMaximum(24)
- self.sb_tahvo.setProperty("value",QtCore.QVariant(0))
- self.sb_tahvo.setObjectName("sb_tahvo")
- self.hboxlayout12.addWidget(self.sb_tahvo)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(0),QtGui.QSizePolicy.Policy(5))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
+ self.label_5.setSizePolicy(sizePolicy)
+ self.label_5.setObjectName("label_5")
+ self.gridlayout2.addWidget(self.label_5,0,0,1,1)
- self.sb_gorahn = QtGui.QSpinBox(self.gridLayout_5)
- self.sb_gorahn.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.sb_gorahn.setMaximum(24)
- self.sb_gorahn.setProperty("value",QtCore.QVariant(0))
- self.sb_gorahn.setObjectName("sb_gorahn")
- self.hboxlayout12.addWidget(self.sb_gorahn)
+ self.lb_cavern_utc = QtGui.QLabel(self.gridLayout)
+ self.lb_cavern_utc.setObjectName("lb_cavern_utc")
+ self.gridlayout2.addWidget(self.lb_cavern_utc,0,2,1,1)
- self.sb_prorahn = QtGui.QSpinBox(self.gridLayout_5)
- self.sb_prorahn.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
- self.sb_prorahn.setMaximum(24)
- self.sb_prorahn.setProperty("value",QtCore.QVariant(0))
- self.sb_prorahn.setObjectName("sb_prorahn")
- self.hboxlayout12.addWidget(self.sb_prorahn)
+ self.dt_cavern = QtGui.QDateTimeEdit(self.gridLayout)
+ self.dt_cavern.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape(0)))
+ self.dt_cavern.setFocusPolicy(QtCore.Qt.NoFocus)
+ self.dt_cavern.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
+ self.dt_cavern.setReadOnly(True)
+ self.dt_cavern.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.dt_cavern.setObjectName("dt_cavern")
+ self.gridlayout2.addWidget(self.dt_cavern,0,1,1,1)
- spacerItem8 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout12.addItem(spacerItem8)
- self.gridlayout2.addLayout(self.hboxlayout12,3,1,1,1)
+ self.dt_pacific = QtGui.QDateTimeEdit(self.gridLayout)
+ self.dt_pacific.setFocusPolicy(QtCore.Qt.NoFocus)
+ self.dt_pacific.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
+ self.dt_pacific.setReadOnly(True)
+ self.dt_pacific.setButtonSymbols(QtGui.QAbstractSpinBox.UpDownArrows)
+ self.dt_pacific.setObjectName("dt_pacific")
+ self.gridlayout2.addWidget(self.dt_pacific,1,1,1,1)
- self.rb_earthtime = QtGui.QRadioButton(self.gridLayout_5)
- self.rb_earthtime.setChecked(True)
- self.rb_earthtime.setObjectName("rb_earthtime")
- self.gridlayout2.addWidget(self.rb_earthtime,1,0,1,1)
+ self.label_8 = QtGui.QLabel(self.gridLayout)
- self.rb_curtime = QtGui.QRadioButton(self.gridLayout_5)
- self.rb_curtime.setObjectName("rb_curtime")
- self.gridlayout2.addWidget(self.rb_curtime,0,0,1,1)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(0),QtGui.QSizePolicy.Policy(5))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth())
+ self.label_8.setSizePolicy(sizePolicy)
+ self.label_8.setObjectName("label_8")
+ self.gridlayout2.addWidget(self.label_8,1,0,1,1)
- self.rb_dniholiday = QtGui.QRadioButton(self.gridLayout_5)
- self.rb_dniholiday.setObjectName("rb_dniholiday")
- self.gridlayout2.addWidget(self.rb_dniholiday,4,0,1,1)
+ self.lb_pacific_utc = QtGui.QLabel(self.gridLayout)
+ self.lb_pacific_utc.setObjectName("lb_pacific_utc")
+ self.gridlayout2.addWidget(self.lb_pacific_utc,1,2,1,1)
- self.hboxlayout13 = QtGui.QHBoxLayout()
- self.hboxlayout13.setMargin(0)
- self.hboxlayout13.setSpacing(6)
- self.hboxlayout13.setObjectName("hboxlayout13")
+ self.gb_dnitime = QtGui.QGroupBox(self.tab_time)
+ self.gb_dnitime.setGeometry(QtCore.QRect(10,220,451,181))
+ self.gb_dnitime.setObjectName("gb_dnitime")
- spacerItem9 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout13.addItem(spacerItem9)
-
- self.pb_time_update = QtGui.QPushButton(self.gridLayout_5)
- self.pb_time_update.setMaximumSize(QtCore.QSize(16777215,22))
- self.pb_time_update.setObjectName("pb_time_update")
- self.hboxlayout13.addWidget(self.pb_time_update)
- self.gridlayout2.addLayout(self.hboxlayout13,5,1,1,1)
+ self.gv_dniclock = QtGui.QGraphicsView(self.gb_dnitime)
+ self.gv_dniclock.setGeometry(QtCore.QRect(10,20,431,151))
+ self.gv_dniclock.setFocusPolicy(QtCore.Qt.NoFocus)
+ self.gv_dniclock.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
+ self.gv_dniclock.setAcceptDrops(False)
+ self.gv_dniclock.setFrameShadow(QtGui.QFrame.Plain)
+ self.gv_dniclock.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.gv_dniclock.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.gv_dniclock.setInteractive(False)
+ self.gv_dniclock.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
+ self.gv_dniclock.setRenderHints(QtGui.QPainter.Antialiasing|QtGui.QPainter.SmoothPixmapTransform|QtGui.QPainter.TextAntialiasing)
+ self.gv_dniclock.setObjectName("gv_dniclock")
self.tabwidget.addTab(self.tab_time,"")
self.tab_browse = QtGui.QWidget()
@@ -1073,12 +1103,6 @@
self.tb_license.setObjectName("tb_license")
self.tabwidget_about.addTab(self.tab_sub_license,"")
self.tabwidget.addTab(self.tab_about,"")
-
- self.main_buttonbox = QtGui.QDialogButtonBox(self.centralwidget)
- self.main_buttonbox.setGeometry(QtCore.QRect(10,520,451,32))
- self.main_buttonbox.setOrientation(QtCore.Qt.Horizontal)
- self.main_buttonbox.setStandardButtons(QtGui.QDialogButtonBox.Close|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Reset|QtGui.QDialogButtonBox.Save)
- self.main_buttonbox.setObjectName("main_buttonbox")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtGui.QStatusBar(MainWindow)
@@ -1109,11 +1133,6 @@
self.groupBox_2.setTitle(QtGui.QApplication.translate("MainWindow", "KI Image repair", None, QtGui.QApplication.UnicodeUTF8))
self.pb_kiimage_repair.setText(QtGui.QApplication.translate("MainWindow", "Repair", None, QtGui.QApplication.UnicodeUTF8))
self.pb_kiimage_repair1.setText(QtGui.QApplication.translate("MainWindow", "Fix KI and avatar images", None, QtGui.QApplication.UnicodeUTF8))
- self.gb_caverntime.setTitle(QtGui.QApplication.translate("MainWindow", "Time zones", None, QtGui.QApplication.UnicodeUTF8))
- self.label_5.setText(QtGui.QApplication.translate("MainWindow", "Cavern time:", None, QtGui.QApplication.UnicodeUTF8))
- self.lb_cavern_utc.setText(QtGui.QApplication.translate("MainWindow", "UTC -0", None, QtGui.QApplication.UnicodeUTF8))
- self.label_8.setText(QtGui.QApplication.translate("MainWindow", "Cyan time:", None, QtGui.QApplication.UnicodeUTF8))
- self.lb_pacific_utc.setText(QtGui.QApplication.translate("MainWindow", "UTC -0", None, QtGui.QApplication.UnicodeUTF8))
self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_tasks), QtGui.QApplication.translate("MainWindow", "Tasks", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_screenres.setTitle(QtGui.QApplication.translate("MainWindow", "Screen Resolution", None, QtGui.QApplication.UnicodeUTF8))
self.lb_screenres.setText(QtGui.QApplication.translate("MainWindow", "800x600 (4:3)", None, QtGui.QApplication.UnicodeUTF8))
@@ -1157,22 +1176,32 @@
self.gb_servers.setTitle(QtGui.QApplication.translate("MainWindow", "Ping servers", None, QtGui.QApplication.UnicodeUTF8))
self.button_ping.setText(QtGui.QApplication.translate("MainWindow", "Ping", None, QtGui.QApplication.UnicodeUTF8))
self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_ping), QtGui.QApplication.translate("MainWindow", "Servers", None, QtGui.QApplication.UnicodeUTF8))
- self.gb_dnitime.setTitle(QtGui.QApplication.translate("MainWindow", "D\'ni time", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_3.setTitle(QtGui.QApplication.translate("MainWindow", "Choose Time", None, QtGui.QApplication.UnicodeUTF8))
- self.rb_dnitime.setText(QtGui.QApplication.translate("MainWindow", "D\'ni Time", None, QtGui.QApplication.UnicodeUTF8))
+ self.rb_earthtime.setText(QtGui.QApplication.translate("MainWindow", "Earth Time", None, QtGui.QApplication.UnicodeUTF8))
+ self.rb_curtime.setText(QtGui.QApplication.translate("MainWindow", "Current Time", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_9.setText(QtGui.QApplication.translate("MainWindow", ":", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_10.setText(QtGui.QApplication.translate("MainWindow", ":", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_11.setText(QtGui.QApplication.translate("MainWindow", ":", None, QtGui.QApplication.UnicodeUTF8))
+ self.rb_dniholiday.setText(QtGui.QApplication.translate("MainWindow", "D\'ni Holiday", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_12.setText(QtGui.QApplication.translate("MainWindow", "/", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_4.setText(QtGui.QApplication.translate("MainWindow", ".", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_6.setText(QtGui.QApplication.translate("MainWindow", ".", None, QtGui.QApplication.UnicodeUTF8))
self.cb_earthtime_tz.addItem(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8))
self.cb_earthtime_tz.addItem(QtGui.QApplication.translate("MainWindow", "cavern time", None, QtGui.QApplication.UnicodeUTF8))
self.cb_earthtime_tz.addItem(QtGui.QApplication.translate("MainWindow", "UTC", None, QtGui.QApplication.UnicodeUTF8))
- self.rb_earthtime.setText(QtGui.QApplication.translate("MainWindow", "Earth Time", None, QtGui.QApplication.UnicodeUTF8))
- self.rb_curtime.setText(QtGui.QApplication.translate("MainWindow", "Current Time", None, QtGui.QApplication.UnicodeUTF8))
- self.rb_dniholiday.setText(QtGui.QApplication.translate("MainWindow", "D\'ni Holiday", None, QtGui.QApplication.UnicodeUTF8))
- self.pb_time_update.setText(QtGui.QApplication.translate("MainWindow", "Update", None, QtGui.QApplication.UnicodeUTF8))
+ self.rb_dnitime.setText(QtGui.QApplication.translate("MainWindow", "D\'ni Time", None, QtGui.QApplication.UnicodeUTF8))
+ self.gb_caverntime.setTitle(QtGui.QApplication.translate("MainWindow", "Time zones", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_5.setText(QtGu...
[truncated message content] |
|
From: <ti...@us...> - 2007-02-23 16:41:53
|
Revision: 187
http://pymoul.svn.sourceforge.net/pymoul/?rev=187&view=rev
Author: tiran
Date: 2007-02-23 08:41:50 -0800 (Fri, 23 Feb 2007)
Log Message:
-----------
Import order fixed
Modified Paths:
--------------
pymoul/trunk/src/moul/crypt/binary.py
pymoul/trunk/src/moul/crypt/binaryrecord.py
pymoul/trunk/src/moul/crypt/whatdoyousee.py
pymoul/trunk/src/moul/crypt/xtea.py
pymoul/trunk/src/moul/file/chatlog.py
pymoul/trunk/src/moul/file/directory.py
pymoul/trunk/src/moul/file/kiimage.py
pymoul/trunk/src/moul/file/localization.py
pymoul/trunk/src/moul/file/plasmalog.py
pymoul/trunk/src/moul/file/utils.py
pymoul/trunk/src/moul/file/wdysini.py
pymoul/trunk/src/moul/log.py
pymoul/trunk/src/moul/osdependent/processinfo.py
pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py
pymoul/trunk/src/moul/qt/dninumbers.py
pymoul/trunk/src/moul/qt/errorhandler.py
pymoul/trunk/src/moul/qt/i18n/__init__.py
pymoul/trunk/src/moul/qt/localization.py
pymoul/trunk/src/moul/qt/mainwindow.py
pymoul/trunk/src/moul/qt/moulqt.py
pymoul/trunk/src/moul/qt/utils.py
pymoul/trunk/src/moul/qt/wdysini.py
pymoul/trunk/src/moul/time/cavern.py
pymoul/trunk/src/moul/time/dni.py
pymoul/trunk/src/moul/time/utils.py
pymoul/trunk/utilities/importorder.py
Modified: pymoul/trunk/src/moul/crypt/binary.py
===================================================================
--- pymoul/trunk/src/moul/crypt/binary.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/crypt/binary.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -21,9 +21,9 @@
__version__ = "$Id"
__revision__ = "$Revision"
+from struct import calcsize
from struct import pack
from struct import unpack
-from struct import calcsize
from moul.crypt.binaryrecord import parseRecord
from moul.crypt.binaryrecord import registerRecord
Modified: pymoul/trunk/src/moul/crypt/binaryrecord.py
===================================================================
--- pymoul/trunk/src/moul/crypt/binaryrecord.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/crypt/binaryrecord.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -25,9 +25,9 @@
__version__ = "$Id"
__revision__ = "$Revision"
+from struct import calcsize
from struct import pack
from struct import unpack
-from struct import calcsize
_marker = object()
Modified: pymoul/trunk/src/moul/crypt/whatdoyousee.py
===================================================================
--- pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -29,11 +29,11 @@
__revision__ = "$Revision$"
import struct
+from logging import getLogger
+from moul.crypt.binary import BinaryFile
from moul.crypt.xtea import xtea_decrypt
from moul.crypt.xtea import xtea_encrypt
-from moul.crypt.binary import BinaryFile
-from logging import getLogger
HEADER = "whatdoyousee"
Modified: pymoul/trunk/src/moul/crypt/xtea.py
===================================================================
--- pymoul/trunk/src/moul/crypt/xtea.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/crypt/xtea.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -36,10 +36,10 @@
>>> crypt('0123456789012345',z,iv)
'Hello There'
-"""
-
+"""
import struct
+
def crypt(key,data,iv='\00\00\00\00\00\00\00\00',n=32,endian="!"):
"""
Encrypt/decrypt variable length string using XTEA cypher as
Modified: pymoul/trunk/src/moul/file/chatlog.py
===================================================================
--- pymoul/trunk/src/moul/file/chatlog.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/chatlog.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -35,11 +35,11 @@
import os
import re
from fnmatch import fnmatch
+from logging import getLogger
from shutil import move
from time import localtime
from moul.file.utils import fileModTime
-from logging import getLogger
RE_FLAGS = re.LOCALE
Modified: pymoul/trunk/src/moul/file/directory.py
===================================================================
--- pymoul/trunk/src/moul/file/directory.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/directory.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -22,6 +22,7 @@
__revision__ = "$Revision$"
import os
+from logging import getLogger
from moul.file.chatlog import ChatlogDirectoryView
from moul.file.chatlog import ChatlogMover
@@ -30,7 +31,6 @@
from moul.file.plasmalog import PlasmalogZipper
from moul.file.wdysini import AudioIni
from moul.file.wdysini import GraphicsIni
-from logging import getLogger
LOG = getLogger('moul.file.directory')
Modified: pymoul/trunk/src/moul/file/kiimage.py
===================================================================
--- pymoul/trunk/src/moul/file/kiimage.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/kiimage.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -26,11 +26,11 @@
import struct
import tempfile
from fnmatch import fnmatch
+from logging import getLogger
+
from moul.file.utils import fileModTime
from moul.file.utils import fileSize
-from logging import getLogger
-
KINUMBER_RE = re.compile("(\d+)\.jpg$", re.IGNORECASE)
JPEG_HEADER = "\377\330\377"
Modified: pymoul/trunk/src/moul/file/localization.py
===================================================================
--- pymoul/trunk/src/moul/file/localization.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/localization.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -20,14 +20,13 @@
from __future__ import with_statement
import glob
import os
+from logging import getLogger
from sgmllib import SGMLParser
from xml.sax import ContentHandler
from xml.sax import make_parser
from xml.sax.handler import feature_namespaces
from xml.sax.saxutils import unescape
-from logging import getLogger
-
__author__ = "Christian Heimes"
__version__ = "$Id$"
__revision__ = "$Revision$"
Modified: pymoul/trunk/src/moul/file/plasmalog.py
===================================================================
--- pymoul/trunk/src/moul/file/plasmalog.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/plasmalog.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -25,11 +25,11 @@
import time
import zipfile
from fnmatch import fnmatch
+from logging import getLogger
from stat import ST_MTIME
from moul.crypt.elf import decryptElf
from moul.file.utils import fileModTime
-from logging import getLogger
PLASMA_LOG = "plasmalog.txt"
Modified: pymoul/trunk/src/moul/file/utils.py
===================================================================
--- pymoul/trunk/src/moul/file/utils.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/utils.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -28,6 +28,7 @@
from stat import ST_MTIME
from stat import ST_SIZE
+
def fileModTime(path, format=None):
"""Get modification time of file
Modified: pymoul/trunk/src/moul/file/wdysini.py
===================================================================
--- pymoul/trunk/src/moul/file/wdysini.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/file/wdysini.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -23,10 +23,10 @@
import os
import shutil
+from logging import getLogger
from moul.crypt.whatdoyousee import decryptWDYS
from moul.crypt.whatdoyousee import encryptWDYS
-from logging import getLogger
LOG = getLogger('moul.file.wdysini')
Modified: pymoul/trunk/src/moul/log.py
===================================================================
--- pymoul/trunk/src/moul/log.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/log.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -23,8 +23,6 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
-__all__ = ['LOG', 'getLogger', 'signalLogDecorator']
-
import logging
import os
import platform
@@ -35,6 +33,7 @@
from moul.metadata import __version__ as moul_version
+
LOG = logging.getLogger('pyMoul')
class LoggingStdout(object):
Modified: pymoul/trunk/src/moul/osdependent/processinfo.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/processinfo.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/osdependent/processinfo.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -53,7 +53,6 @@
import sys
from logging import getLogger
-
LOG = getLogger("processinfo")
_plat = sys.platform.startswith
Modified: pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -24,7 +24,7 @@
import unittest
from doctest import DocTestSuite
-import moul.osdependent.processinfo
+import moul.osdependent.processinfo
def test_suite():
Modified: pymoul/trunk/src/moul/qt/dninumbers.py
===================================================================
--- pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -34,18 +34,19 @@
from logging import getLogger
from moul.time.cavern import CavernTime
+from moul.time.dni import DNI_HOLIDAYS
from moul.time.dni import DniTime
from moul.time.dni import FACTOR_SP
+from moul.time.dni import VAILEETEE
from moul.time.dni import decimal2dni
-from moul.time.dni import VAILEETEE
-from moul.time.dni import DNI_HOLIDAYS
from moul.time.utils import utcnow
+
from moul.qt.utils import QNamespaceContainer
from moul.qt.utils import QSignalLoggerMetaclass
-from moul.qt.utils import skipLogging
from moul.qt.utils import QTimerThreadlet
from moul.qt.utils import dt2qdt
from moul.qt.utils import qdt2dt
+from moul.qt.utils import skipLogging
NUMBER_HEIGHT = 25
Modified: pymoul/trunk/src/moul/qt/errorhandler.py
===================================================================
--- pymoul/trunk/src/moul/qt/errorhandler.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/errorhandler.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -29,9 +29,9 @@
import os
import sys
from PyQt4.QtGui import QApplication
+from logging import getLogger
from traceback import format_exception
-from logging import getLogger
from moul.qt.utils import criticalMB
Modified: pymoul/trunk/src/moul/qt/i18n/__init__.py
===================================================================
--- pymoul/trunk/src/moul/qt/i18n/__init__.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/i18n/__init__.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -89,7 +89,7 @@
if qm is None:
qm = loadTranslationFile(shortname)
if qm is None:
- if lang != 'en':
+ if lang not in ('en', 'C'):
LOG.warning("No translation found!")
else:
LOG.info("Loading translation %s" % shortname)
@@ -97,6 +97,5 @@
LOG.info("Loading translation %s" % longname)
if qm is not None:
- LOG.debug("len(%i), type(%s)" % (len(qm), type(qm)))
translator.load(qm, len(qm))
app.installTranslator(translator)
Modified: pymoul/trunk/src/moul/qt/localization.py
===================================================================
--- pymoul/trunk/src/moul/qt/localization.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/localization.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -29,14 +29,14 @@
from PyQt4.QtCore import Qt
from PyQt4.QtCore import SIGNAL
from PyQt4.QtCore import pyqtSignature
+from logging import getLogger
from moul.file.localization import translationRegistry as tr
-from logging import getLogger
from moul.qt.simpleprogressbar import SimpleProgressbar
-from moul.qt.utils import QYieldingThreadlet
from moul.qt.utils import QNamespaceContainer
from moul.qt.utils import QSignalLoggerMetaclass
+from moul.qt.utils import QYieldingThreadlet
LOG = getLogger('moul.loc')
Modified: pymoul/trunk/src/moul/qt/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -18,39 +18,38 @@
"""Moul QT GUI main windows
"""
-from __future__ import with_statement
-
__author__ = "Christian Heimes"
__version__ = "$Id$"
__revision__ = "$Revision$"
import os
+import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4.QtCore import Qt
from PyQt4.QtCore import SIGNAL
from PyQt4.QtCore import pyqtSignature
-import sys
+from logging import getLogger
from moul import metadata
from moul.config import lookupDir
from moul.file.directory import UruGameDataDirectory
from moul.file.directory import UruPersonalDataDirectory
-from logging import getLogger
from moul.osdependent import isMoulRunning
from moul.server.ping import ServerList
-from moul.server.ping import isSocketError
from moul.server.ping import fmtSocketError
+from moul.server.ping import isSocketError
+from moul.qt import utils as qtutils
from moul.qt.dninumbers import DniTimeNumberContainer
from moul.qt.localization import LocalizationContainer
-from moul.qt.wdysini import IniFileContainer
from moul.qt.simpleprogressbar import SimpleProgressbar
-from moul.qt.utils import QYieldingThreadlet
-from moul.qt.utils import QThreadlet
from moul.qt.ui.mainwindow import Ui_MainWindow
-from moul.qt import utils as qtutils
+from moul.qt.utils import QThreadlet
+from moul.qt.utils import QYieldingThreadlet
+from moul.qt.wdysini import IniFileContainer
+
LOG = getLogger('moul.qt')
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
Modified: pymoul/trunk/src/moul/qt/moulqt.py
===================================================================
--- pymoul/trunk/src/moul/qt/moulqt.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/moulqt.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -23,21 +23,22 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
-from moul.log import createLogfile
-
import sys
from PyQt4 import QtGui
from logging import getLogger
+import moul.log # initialize log handler
+
from moul.config import getPyMoulDataDir
+from moul.log import createLogfile
from moul.osdependent import isMoulRunning
from moul.osdependent.singleapp import SimpleSingleApp
from moul.qt.errorhandler import criticalMB
from moul.qt.errorhandler import removeQtExceptHook
from moul.qt.errorhandler import setupQtExceptHook
+from moul.qt.i18n import installTranslator
from moul.qt.mainwindow import MainWindow
-from moul.qt.i18n import installTranslator
LOG = getLogger('moul.qt')
Modified: pymoul/trunk/src/moul/qt/utils.py
===================================================================
--- pymoul/trunk/src/moul/qt/utils.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/utils.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -35,16 +35,16 @@
import re
import sip
import warnings
+from PyQt4 import QtCore
+from PyQt4 import QtGui
from PyQt4.QtCore import SIGNAL
-from PyQt4 import QtGui
-from PyQt4 import QtCore
from datetime import datetime
+from types import FunctionType
from types import UnboundMethodType
-from types import FunctionType
from moul.osdependent import __FROZEN__
+from moul.time.utils import UTC
from moul.time.utils import normalizeTZ
-from moul.time.utils import UTC
LOG = logging.getLogger('moul.qt.utils')
Modified: pymoul/trunk/src/moul/qt/wdysini.py
===================================================================
--- pymoul/trunk/src/moul/qt/wdysini.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/qt/wdysini.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -18,8 +18,6 @@
"""Moul QT GUI main windows
"""
-from __future__ import with_statement
-
__author__ = "Christian Heimes"
__version__ = "$Id$"
__revision__ = "$Revision$"
@@ -30,18 +28,20 @@
from PyQt4.QtCore import Qt
from PyQt4.QtCore import SIGNAL
from PyQt4.QtCore import pyqtSignature
+from logging import getLogger
from moul import metadata
from moul.config import lookupDir
from moul.file.directory import UruGameDataDirectory
from moul.file.directory import UruPersonalDataDirectory
from moul.file.wdysini import videoModes
-from logging import getLogger
+
from moul.qt.utils import QNamespaceContainer
from moul.qt.utils import QSignalLoggerMetaclass
+from moul.qt.utils import criticalMB
from moul.qt.utils import questionMB
-from moul.qt.utils import criticalMB
+
LOG = getLogger('moul.qt')
class IniFileContainer(QNamespaceContainer):
Modified: pymoul/trunk/src/moul/time/cavern.py
===================================================================
--- pymoul/trunk/src/moul/time/cavern.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/time/cavern.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -25,13 +25,13 @@
from datetime import datetime
+from moul.time.utils import UNIX_0
+from moul.time.utils import UTC
from moul.time.utils import diffTD
from moul.time.utils import normalizeTZ
from moul.time.utils import td2sec
from moul.time.utils import timezone
from moul.time.utils import utcnow
-from moul.time.utils import UNIX_0
-from moul.time.utils import UTC
## not used in the current version
#SUPPORTED_TZ = ('America', 'Canada', 'Etc', 'Europe', 'US')
Modified: pymoul/trunk/src/moul/time/dni.py
===================================================================
--- pymoul/trunk/src/moul/time/dni.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/time/dni.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -84,15 +84,15 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+import sys
from datetime import datetime
from time import mktime
-import sys
+from moul.time.utils import UNIX_0
+from moul.time.utils import UTC
from moul.time.utils import td2sec
from moul.time.utils import timezone
from moul.time.utils import utcnow
-from moul.time.utils import UNIX_0
-from moul.time.utils import UTC
# list of month names with approx. dates
VAILEETEE = (
Modified: pymoul/trunk/src/moul/time/utils.py
===================================================================
--- pymoul/trunk/src/moul/time/utils.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/src/moul/time/utils.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -21,17 +21,19 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+from datetime import datetime
+from logging import getLogger
+
from moul.osdependent import __FROZEN__
+
# pytz is an egg
if not __FROZEN__:
import pkg_resources
pkg_resources.require("pytz>=2006p")
-from datetime import datetime
-from logging import getLogger
+from pytz import common_timezones
+from pytz import timezone
from pytz import utc as UTC
-from pytz import timezone
-from pytz import common_timezones
LOG = getLogger('timeutils')
Modified: pymoul/trunk/utilities/importorder.py
===================================================================
--- pymoul/trunk/utilities/importorder.py 2007-02-23 15:19:19 UTC (rev 186)
+++ pymoul/trunk/utilities/importorder.py 2007-02-23 16:41:50 UTC (rev 187)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.4
+#!/usr/bin/env python2.5
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
@@ -119,9 +119,14 @@
imp_list = filterList(import_list, 'import ')
from_list = filterList(import_list, 'from ')
+ #remove future statements from from_list
+ future_list = filterList(from_list, 'from __future__ import')
+ from_list = removeList(from_list, future_list)
+
#extracting non import content
non_import_block = removeList(import_list, imp_list)
non_import_block = removeList(non_import_block, from_list)
+ non_import_block = removeList(non_import_block, future_list)
non_import_block_fmt = formateBlock(non_import_block)
#comma separated imports into individual import statements
@@ -145,7 +150,8 @@
global_from_list = removeList(rem_from_list1, zope_from_list)
#formating the global, zope and zope.app package imports
- format_import_content = mergeAllBlocks(global_imp_list,
+ format_import_content = mergeAllBlocks(future_list,
+ global_imp_list,
zope_imp_list,
zope_app_imp_list,
global_from_list,
@@ -158,6 +164,7 @@
non_import_block_fmt += '\n\n'
fmt_content = format_import_content + non_import_block_fmt
+ fmt_content = fmt_content.strip() + '\n'
return {'import_order':fmt_content,
'non_import_order':import_content}
@@ -253,16 +260,20 @@
return [item for item in list
if item not in rem_list]
-def mergeAllBlocks(global_imp_list, zope_imp_list, zope_app_imp_list,
- global_from_list, zope_from_list, zope_app_from_list):
+def mergeAllBlocks(future_list, global_imp_list, zope_imp_list,
+ zope_app_imp_list, global_from_list, zope_from_list,
+ zope_app_from_list):
"""merges global, zope and zope.app imports """
import_block = ''
+ future_block = formateBlock(future_list)
global_imp_block = formateBlock(global_imp_list)
global_from_block = formateBlock(global_from_list)
zope_imp_block = formateBlock(zope_imp_list)
zope_from_block = formateBlock(zope_from_list)
zope_app_imp_block = formateBlock(zope_app_imp_list)
zope_app_from_block = formateBlock(zope_app_from_list)
+
+ import_block = future_block
import_block += formatsFromAndImportBlock(global_imp_block,
global_from_block)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-02-27 14:46:02
|
Revision: 205
http://pymoul.svn.sourceforge.net/pymoul/?rev=205&view=rev
Author: tiran
Date: 2007-02-27 06:45:53 -0800 (Tue, 27 Feb 2007)
Log Message:
-----------
Moved processinfo to external module
Modified Paths:
--------------
pymoul/trunk/INSTALL.txt
pymoul/trunk/setup.py
pymoul/trunk/src/moul/osdependent/__init__.py
pymoul/trunk/src/moul/osdependent/darwin/__init__.py
pymoul/trunk/src/moul/osdependent/linux/__init__.py
pymoul/trunk/src/moul/osdependent/win32/__init__.py
Removed Paths:
-------------
pymoul/trunk/src/moul/osdependent/processinfo.py
Modified: pymoul/trunk/INSTALL.txt
===================================================================
--- pymoul/trunk/INSTALL.txt 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/INSTALL.txt 2007-02-27 14:45:53 UTC (rev 205)
@@ -4,9 +4,10 @@
* Python 2.5.x http://www.python.org/
* easy_install http://peak.telecommunity.com/DevCenter/EasyInstall
- * setuptools (via easy install)
- * PyTz (via $ easy_install-2.5 -Z pytz)
- * Qt4 GPL 4.2+ http://www.trolltech.com/developer/downloads/qt/
+ * setuptools (via easy_install)
+ * pytz (via $ easy_install-2.5 -Z pytz)
+ * enumprocess (via $ easy_install-2.5 -Z enumprocess)
+ * Qt4 GPL 4.2+ http://www.trolltech.com/developer/downloads/qt/
* PyQt4 4.1.1+ http://www.riverbankcomputing.co.uk/pyqt/
Windows
Modified: pymoul/trunk/setup.py
===================================================================
--- pymoul/trunk/setup.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/setup.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -57,7 +57,7 @@
setup_options = dict(
setup_requires = ["setuptools>="+SETUPTOOLS_VERSION,],
- install_requires = ["pytz>=2006p",],
+ install_requires = ["pytz>=2006p", "enumprocess>=0.1"],
data_files = [
('docs', list(glob('*.txt'))),
('i18n', list(glob('src/moul/qt/i18n/pymoul_*.qm'))),
Modified: pymoul/trunk/src/moul/osdependent/__init__.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/__init__.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/src/moul/osdependent/__init__.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -38,14 +38,20 @@
import sys
from types import ModuleType
-from moul.osdependent.processinfo import getPidNames
-from moul.osdependent.processinfo import getPids
+# a program under py2exe is sys.frozen
+__FROZEN__ = bool(getattr(sys, 'frozen', False))
+if not __FROZEN__:
+ import pkg_resources
+ pkg_resources.require("enumprocess>=0.1")
+from enumprocess import getPidNames
+from enumprocess import getPids
+
+
LOG = getLogger('moul.osdependent')
-# a program under py2exe is sys.frozen
-__FROZEN__ = bool(getattr(sys, 'frozen', False))
+
# OS stuff
_plat = sys.platform.startswith
__WIN32__ = _plat('win32') # win64, cygwin?
Modified: pymoul/trunk/src/moul/osdependent/darwin/__init__.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -22,11 +22,11 @@
__revision__ = "$Revision$"
import os
+from logging import getLogger
+from enumprocess import getPidNames
from subprocess import Popen
-from logging import getLogger
-
LOG = getLogger('moul.darwin')
LOG.critical('Darwin/Mac support is not tested')
Modified: pymoul/trunk/src/moul/osdependent/linux/__init__.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -22,12 +22,11 @@
__revision__ = "$Revision$"
import os
+from logging import getLogger
+from enumprocess import getPidNames
from subprocess import Popen
-from moul.osdependent.processinfo import getPidNames
-from logging import getLogger
-
LOG = getLogger('moul.linux')
LOG.critical('Linux support is not tested')
Deleted: pymoul/trunk/src/moul/osdependent/processinfo.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/processinfo.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/src/moul/osdependent/processinfo.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -1,465 +0,0 @@
-# pyMoul - Python interface to Myst Online URU Live
-# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-"""Get process informations
-
-The module contains for implementations:
-
- - an Unsupported implementation that raises UnsupportedError
- - a Linux implementation that read the data from /proc
- - a Unix/POSIX implementation that parses the output of ps
- - a Windows implementation that uses ctypes to get the infos from psapi.dll
-
-API
-===
- getPids() - list of ints/longs
- getPidNames() - mapping pid -> name
- getPidDetails(pid) - detailed informations about a process
- getPidDetails('self') - detailed informations about current process
-
->>> cur = os.getpid()
->>> exe = sys.executable
->>> pids = getPids()
->>> pids > 1
-True
->>> isinstance(pids[0], (int, long))
-True
->>> cur in pids
-True
-
->>> mapping = getPidNames()
->>> cur in mapping
-True
->>> mapping[cur].lower() in sys.executable
-True
-
->>> getPidDetails('self')['name'] == getPidDetails(cur)['name']
-True
->>> getPidDetails(cur)['name'] == mapping[cur]
-True
-
->>> for impl in (WinEnumProcesses(), LinuxProcReader(), PsParser()):
-... if impl.supported():
-... isinstance(impl.getPids(), list) and None
-... isinstance(impl.getPidNames(), dict) and None
-"""
-__author__ = "Christian Heimes"
-__version__ = "$Id$"
-__revision__ = "$Revision$"
-__all__ = ['getPids', 'getPidNames', 'getPidDetails', 'supportedOS',
- 'UnsupportedError']
-
-import logging
-import os
-import os.path
-import sys
-
-
-LOG = logging.getLogger("processinfo")
-NULL = "\x00"
-
-_plat = sys.platform.startswith
-if _plat('win') or _plat('cygwin'):
- from ctypes import windll, c_ulong, sizeof, c_buffer, byref
- PSAPI = windll.psapi
- KERNEL = windll.kernel32
- PROCESS_QUERY_INFORMATION = 0x0400
- PROCESS_VM_READ = 0x0010
- PROCESS_FLAGS = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ
-else:
- from subprocess import Popen
- from subprocess import PIPE
-
-class UnsupportedError(OSError):
- """OS or command not supported error
- """
- pass
-
-class Unsupported(object):
- """Unsupported OS implementation
-
- Raises L{UnsupportedError}
- """
- __slots__ = ()
-
- @classmethod
- def supported(cls):
- """Supported flag property"""
- return False
-
- @classmethod
- def log(cls):
- """Log information about the implementation"""
- LOG.warning("Unsupported OS. Neither proc filesystem nor 'ps' works.")
-
- @classmethod
- def getPids(cls):
- """Get a list of pids
-
- @return: a list of pid numbers
- @rtype: list(int)
- """
- raise UnsupportedError
-
- @classmethod
- def getPidNames(cls):
- """Get a mapping of pid -> name
-
- @return: mapping of pid -> name
- @rtype: dict(int:str)
- """
- raise UnsupportedError
-
- @classmethod
- def getPidDetails(pid):
- """Get detailed informations about a process
-
- @param pid: pid number or 'self'
- @type pid: int or basestring
- @return: detailed information about a process
- @rtype: dict(str:data)
- """
- raise UnsupportedError
-
-class PsParser(object):
- """Parse the output of the ps command
- """
- __slots__ = ()
-
- CMD = "ps -e --no-header --cols=1024"
- PIDNAMES = "%s --format=pid,ucmd" % CMD
- PIDS = "%s --format=pid" % CMD
-
- @classmethod
- def supported(cls):
- """Supported flag property"""
- try:
- cls._exec(cls.PIDS)
- except Exception: # catch all!
- return False
- else:
- return True
-
- @classmethod
- def log(cls):
- """Log information about the implementation"""
- LOG.debug("Using the 'ps' command on POSIX os")
-
- @classmethod
- def getPids(cls):
- """Get a list of pids
- """
- stdout = cls._exec(cls.PIDS)
- if stdout is None:
- return None
- pids = []
- for line in stdout:
- try:
- pid = int(line.strip())
- except ValueError:
- pass
- else:
- pids.append(pid)
- return pids
-
- @classmethod
- def getPidNames(cls):
- """Get a list of pid -> name
- """
- stdout = cls._exec(cls.PIDNAMES)
- if stdout is None:
- return None
- mapping = {}
- for line in stdout:
- line = line.strip()
- idx = line.find(' ')
- pid, name = line[:idx], line[idx+1:]
- try:
- pid = int(pid)
- except ValueError:
- pass
- else:
- mapping[pid] = name
- return mapping
-
- @classmethod
- def getPidDetails(cls, pid):
- """Get detailed informations about a process
-
- TODO
- """
- if pid == 'self':
- pid = os.getpid()
- raise UnsupportedError("not implemented yet")
-
- @staticmethod
- def _exec(cmd):
- """Execute command cmd
-
- The method waits until the command has finished. It returns None of
- something went wrong.
-
- @param cmd: Command to execute
- @type cmd: str
- @return: None or stdin as file like object
- """
- try:
- popen = Popen(cmd, shell=True, bufsize=-1, stdout=PIPE,
- env = {'LC_ALL' : 'C'})
- rc = popen.wait()
- except (OSError, ValueError):
- LOG.exception("Failed to execute '%s'" % cmd)
- return None
- else:
- if rc != 0:
- LOG.error("'%s' returned with error code %i" % (cmd, rc))
- return None
- else:
- return popen.stdout
-
-class LinuxProcReader(object):
- """Get process informations under Linux by reading /proc
-
- Tested under Linux, may work on other POSIX os with /proc, too.
- """
- __slots__ = ()
-
- PROC = "/proc"
-
- @classmethod
- def supported(cls):
- return os.path.isfile("%s/self/status" % cls.PROC)
-
- @classmethod
- def log(cls):
- """Log information about the implementation"""
- LOG.debug("Using the proc filesystem on Linux")
-
- @classmethod
- def getPids(cls):
- """Get a list of pids
- """
- pids = []
- for name in os.listdir(cls.PROC):
- if os.path.isdir(cls.PROC + '/' + name):
- try:
- pids.append(int(name))
- except ValueError:
- pass
- return pids
-
- @classmethod
- def getPidNames(cls):
- """Get a list of pid -> name
- """
- mapping = {}
- for pid in cls.getPids():
- name = cls._readProcStatus(pid, searchkey='name')
- if name is not None:
- mapping[pid] = name
- return mapping
-
- def getPidDetails(cls, pid):
- """Get detailed informations about a process
- """
- details = cls._readProcStatus(pid)
- if details is None:
- return None
- details.update(cls._readProcOther(pid))
- details['cmdline'] = cls._readProcCmdline(pid)
- return details
-
- @classmethod
- def _readProcStatus(cls, pid, searchkey=None):
- """Read and parse status informations for PID pid
-
- pid - pid as long or int or 'self'
-
- If searchkey is None the method returns a mapping of lower keys
- to values (stripped).
- If searchkey is given than the method immediatly returns the value
- or returns None if they key can't be found.
- """
- mapping = {}
- status = '%s/%s/status' % (cls.PROC, pid)
- try:
- # read entiry file to avoid race conditions
- lines = open(status, 'r').readlines()
- except IOError:
- LOG.exception("%s not found" % status)
- return None
- for line in lines:
- try:
- key, value = line.split(':\t')
- except ValueError:
- continue
- key = key.lower()
- value = value.strip()
- #if value.endswith(' kB'):
- # value = value[:-3]
- if key == searchkey:
- return value
- mapping[key.lower()] = value
- if searchkey is not None:
- return None
- return mapping
-
- @classmethod
- def _readProcCmdline(cls, pid):
- """Read cmdline informations for pid and returns a list similar to sys.argv
- """
- try:
- # read entiry file to avoid race conditions
- data = open('%s/%s/cmdline' % (cls.PROC, pid), 'r').read()
- except IOError:
- return None
- return data.split(NULL)
-
- @classmethod
- def _readProcOther(cls, pid):
- """Read other possible useful things
-
- cwd -> current work directory (may not exist)
- exe -> path to executable (may not exist)
- """
- return {
- 'cwd' : os.path.realpath('%s/%s/cwd' % (cls.PROC, pid)),
- 'exe' : os.path.realpath('%s/%s/exe' % (cls.PROC, pid)),
- }
-
-class WinEnumProcesses(object):
- """""Get process informations under Win32 with psapi.dll
-
- Based on enumprocesses from Eric Koome
- http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/305279
- """
- __slots__ = ()
-
- @classmethod
- def supported(cls):
- try:
- cls.getPids()
- except Exception: # catch all!
- return False
- else:
- return True
-
- @classmethod
- def log(cls):
- """Log information about the implementation"""
- LOG.debug("Using ctypes on Windows")
-
- @classmethod
- def getPids(cls):
- """Get a list of pids
- """
- arr = c_ulong * 256
- lpidProcess = arr()
- cb = sizeof(lpidProcess)
- cbNeeded = c_ulong()
-
- # Call Enumprocesses to get hold of process id's
- PSAPI.EnumProcesses(byref(lpidProcess), cb, byref(cbNeeded))
- nReturned = cbNeeded.value/sizeof(c_ulong()) # number of processes returned
- return [pid for pid in lpidProcess][:nReturned]
-
- @classmethod
- def getPidNames(cls):
- """Get a list of pid -> name
- """
- hModule = c_ulong()
- count = c_ulong()
- modname = c_buffer(51)
- mapping = {}
- for pid in cls.getPids():
- # Get handle to the process based on PID
- hProcess = KERNEL.OpenProcess(PROCESS_FLAGS, False, pid)
- if hProcess:
- PSAPI.EnumProcessModules(hProcess, byref(hModule),
- sizeof(hModule), byref(count))
- PSAPI.GetModuleBaseNameA(hProcess, hModule.value, modname,
- sizeof(modname))
- try:
- name = u"".join([c for c in modname if c != NULL])
- except UnicodeError, msg:
- LOG.exception("Can't decode name of pid %s" % pid)
- else:
- mapping[pid] = name
- modname[:] = sizeof(modname) * NULL
- KERNEL.CloseHandle(hProcess)
-
- return mapping
-
- @classmethod
- def getPidDetails(cls, pid):
- """Get detailed informations about a process
- """
- if pid == 'self':
- pid = os.getpid()
-
- hModule = c_ulong()
- count = c_ulong()
- modname = c_buffer(51)
- hProcess = KERNEL.OpenProcess(PROCESS_FLAGS, False, pid)
- if not hProcess:
- return None
-
- PSAPI.EnumProcessModules(hProcess, byref(hModule),
- sizeof(hModule), byref(count))
- PSAPI.GetModuleBaseNameA(hProcess, hModule.value, modname,
- sizeof(modname))
- try:
- name = u"".join([c for c in modname if c != NULL])
- except UnicodeError, msg:
- LOG.exception("Can't decode name of pid %s" % pid)
- else:
- name = None
-
- KERNEL.CloseHandle(hProcess)
- return {'name' : name}
-
-
-# Initialize global methods
-_enumProcesses = None
-for impl in (WinEnumProcesses(), LinuxProcReader(), PsParser()):
- if impl.supported():
- impl.log()
- _enumProcesses = impl
- break
-
-if _enumProcesses is None:
- LOG.error("System %s is not supported" % sys.platform)
- _enumProcesses = Unsupported()
-
-getPids = _enumProcesses.getPids
-getPidNames = _enumProcesses.getPidNames
-getPidDetails = _enumProcesses.getPidDetails
-supportedOS = _enumProcesses.supported()
-
-def test_suite():
- import unittest
- from doctest import DocTestSuite
- return unittest.TestSuite((
- DocTestSuite()
- ))
-
-if __name__ == '__main__':
- import unittest
- logging.basicConfig()
- unittest.main(defaultTest="test_suite")
- print getPids()
- print getPidNames()
Modified: pymoul/trunk/src/moul/osdependent/win32/__init__.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/win32/__init__.py 2007-02-27 14:32:21 UTC (rev 204)
+++ pymoul/trunk/src/moul/osdependent/win32/__init__.py 2007-02-27 14:45:53 UTC (rev 205)
@@ -22,10 +22,10 @@
__revision__ = "$Revision$"
import os
+from enumprocess import getPidNames
+from logging import getLogger
from subprocess import Popen
-from logging import getLogger
-from moul.osdependent.processinfo import getPidNames
from moul.osdependent.win32 import winpath
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-02-28 12:14:00
|
Revision: 218
http://pymoul.svn.sourceforge.net/pymoul/?rev=218&view=rev
Author: tiran
Date: 2007-02-28 04:13:59 -0800 (Wed, 28 Feb 2007)
Log Message:
-----------
Moved code to external packages included with svn:externals
Modified Paths:
--------------
pymoul/trunk/INSTALL.txt
pymoul/trunk/src/moul/__init__.py
pymoul/trunk/src/moul/crypt/binary.py
pymoul/trunk/src/moul/crypt/tests/test_wdys.py
pymoul/trunk/src/moul/crypt/whatdoyousee.py
Added Paths:
-----------
pymoul/trunk/src/EXTERNALS.txt
Removed Paths:
-------------
pymoul/trunk/src/moul/crypt/binaryrecord.py
pymoul/trunk/src/moul/crypt/tests/test_binary.py
pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
pymoul/trunk/src/moul/crypt/xtea.py
pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py
Property Changed:
----------------
pymoul/trunk/src/
Modified: pymoul/trunk/INSTALL.txt
===================================================================
--- pymoul/trunk/INSTALL.txt 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/INSTALL.txt 2007-02-28 12:13:59 UTC (rev 218)
@@ -6,10 +6,14 @@
* easy_install http://peak.telecommunity.com/DevCenter/EasyInstall
* setuptools (via easy_install)
* pytz (via $ easy_install-2.5 -Z pytz)
- * enumprocess (via $ easy_install-2.5 -Z enumprocess)
* Qt4 GPL 4.2+ http://www.trolltech.com/developer/downloads/qt/
* PyQt4 4.1.1+ http://www.riverbankcomputing.co.uk/pyqt/
+ These external modules were created for pyMoul and are bundled with the tool.
+ * binaryfile
+ * enumprocess
+ * xtea
+
Windows
-------
Property changes on: pymoul/trunk/src
___________________________________________________________________
Name: svn:externals
+ xtea https://pymoul.svn.sourceforge.net/svnroot/pymoul/xtea/trunk/src/xtea
enumprocess https://pymoul.svn.sourceforge.net/svnroot/pymoul/enumprocess/trunk/src/enumprocess
binaryfile https://pymoul.svn.sourceforge.net/svnroot/pymoul/binaryfile/trunk/src/binaryfile
Added: pymoul/trunk/src/EXTERNALS.txt
===================================================================
--- pymoul/trunk/src/EXTERNALS.txt (rev 0)
+++ pymoul/trunk/src/EXTERNALS.txt 2007-02-28 12:13:59 UTC (rev 218)
@@ -0,0 +1,3 @@
+xtea https://pymoul.svn.sourceforge.net/svnroot/pymoul/xtea/trunk/src/xtea
+enumprocess https://pymoul.svn.sourceforge.net/svnroot/pymoul/enumprocess/trunk/src/enumprocess
+binaryfile https://pymoul.svn.sourceforge.net/svnroot/pymoul/binaryfile/trunk/src/binaryfile
Property changes on: pymoul/trunk/src/EXTERNALS.txt
___________________________________________________________________
Name: svn:keywords
+ 'Id Revision'
Name: svn:eol-style
+ native
Modified: pymoul/trunk/src/moul/__init__.py
===================================================================
--- pymoul/trunk/src/moul/__init__.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/__init__.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -12,3 +12,4 @@
except ImportError:
for p in __path__:
modulefinder.AddPackagePath(__name__, p)
+
Modified: pymoul/trunk/src/moul/crypt/binary.py
===================================================================
--- pymoul/trunk/src/moul/crypt/binary.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/binary.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -21,241 +21,30 @@
__version__ = "$Id"
__revision__ = "$Revision"
+from binaryfile import BinaryFile as BaseBinaryFile
+from binaryfile.binary import AbstractString
from struct import calcsize
from struct import pack
from struct import unpack
-from moul.crypt.binaryrecord import parseRecord
-from moul.crypt.binaryrecord import registerRecord
-class BinaryFile(file):
- """Binary file
-
- A file based class with additional methods to read and write binary data.
-
- The class supports reading and writing:
- - char: readChar / writeChar
- - byte: readByte / writeByte
- - bool: readBool / writeBool
- - signed int8: read8 / write8
- - unsigned int8: read8s / write8s
- - unsigned int 16: read16 / write16
- - signed int 16: read16s / write16s
- - unsigned int 32: read32 / write32
- - signed int 32: read32s / write32s
- - unsigned int 64: read64 / write64
- - signed int 64: read64s / write64s
- - float: readFloat / writeFloat
- - double: readDouble / writeDouble
- - packed data: readPacked(fmt) / writePacked(fmt, data)
- - quad (two int16): readQuad / writeQuad)
- - NULL: read0 / write0
- - null string: readString0 / writeString0 (size is string + NULL)
- - uru string: readUruString(version), writeUruString
- - string w/ 16bit size header: readString16(null terminated) / writeString16
- - string w/ 32bit size header: readString32(null terminated) / writeString32
+class BinaryFile(BaseBinaryFile):
+ """Binary file with suport for Uru String
- For conveniance the class has a size() method
-
- The class is using some optimization tricks like binding functions to the
- local namespace of a method.
+ - uru string: readUruString(version), writeUruString
"""
- def __new__(cls, fname, mode='rb'):
- assert 'b' in mode
- self = file.__new__(cls, fname, mode)
- self.NULL = '\x00'
- return self
-
- def size(self):
- pos = self.tell()
- try:
- self.seek(0, 2)
- return self.tell()
- finally:
- self.seek(pos)
-
- def readChar(self, _unpack=unpack):
- return _unpack('<c', self.read(1))[0]
-
- def readByte(self, _unpack=unpack):
- return _unpack('<B',self.read(1))[0]
-
- def readBool(self, _unpack=unpack):
- return bool(_unpack('<B', self.read(1))[0])
-
- def read8(self, _unpack=unpack):
- return _unpack('<B', self.read(1))[0]
-
- def read8s(self, _unpack=unpack):
- return _unpack('<b', self.read(1))[0]
-
- def read16(self, _unpack=unpack):
- return _unpack('<H', self.read(2))[0]
-
- def read16s(self, _unpack=unpack):
- return _unpack('<h', self.read(2))[0]
-
- def read32(self, _unpack=unpack):
- return _unpack('<I', self.read(4))[0]
-
- def read32s(self, _unpack=unpack):
- return _unpack('<i', self.read(4))[0]
-
- def read64(self, _unpack=unpack):
- return _unpack('<Q', self.read(8))[0]
-
- def read64s(self, _unpack=unpack):
- return _unpack('<q',self.read(8))[0]
-
- def readQuad(self, _unpack=unpack):
- return _unpack('<2I', self.read(8))
-
- def readFloat(self, _unpack=unpack):
- return _unpack('<f', self.read(4))[0]
-
- def readDouble(self, _unpack=unpack):
- return _unpack('<d', self.read(8))[0]
-
- def readPacked(self, fmt, _unpack=unpack):
- return unpack(fmt, self.read(calcsize(fmt)))
-
- def read0(self):
- null = self.read(1)
- if null != self.NULL:
- raise ValueError("%s != NULL at %i" % (null, self.tell()-1))
- return null
-
def readUruString(self, version=5):
return UruString('', version=version).readfd(self)
- def readString0(self, size):
- s = self.read(size-1)
- self.read0()
- return s
-
- def readString16(self, terminate=False):
- return String16('', terminate=terminate).readfd(self)
-
- def readString32(self, terminate=False):
- return String32('', terminate=terminate).readfd(self)
-
- def readRecord(self, name):
- return parseRecord(name, self)
-
- @staticmethod
- def registerRecord(name, fmt):
- return registerRecord(name, fmt)
-
- #write
- def writeChar(self, data, _pack=pack):
- self.write(_pack('<c', data))
-
- def writeByte(self, data, _pack=pack):
- self.write(_pack('<B', data))
-
- def writeBool(self, data, _pack=pack):
- self.write(_pack('<B', bool(data)))
-
- def write8(self, data, _pack=pack):
- self.write(_pack('<B', data))
-
- def write8s(self, data, _pack=pack):
- self.write(_pack('<b', data))
-
- def write16(self, data, _pack=pack):
- self.write(_pack('<H', data))
-
- def write16s(self, data, _pack=pack):
- self.write(_pack('<h', data))
-
- def write32(self, data, _pack=pack):
- self.write(_pack('<I', data))
-
- def write32s(self, data, _pack=pack):
- self.write(_pack('<i', data))
-
- def write64(self, data, _pack=pack):
- self.write(_pack('<Q', data))
-
- def write64s(self, data, _pack=pack):
- self.write(_pack('<q', data))
-
- def writeQuad(self, tupl, _pack=pack):
- self.write(_pack('<2I', *tupl))
-
- def writeFloat(self, data, _pack=pack):
- self.write(_pack('<f', data))
-
- def writeDouble(self, data, _pack=pack):
- self.write(_pack('<d', data))
-
- def write0(self):
- self.write(self.NULL)
-
- def writeString0(self, s):
- self.write(s)
- self.write0()
-
- def writePacked(self, data, fmt):
- self.write(pack(fmt, data))
-
def writeUruString(self, data, version=5):
UruString(data, version=version).writefd(self)
- def writeString16(self, data, terminate=False):
- String16(data, terminate=terminate).writefd(self)
-
- def writeString32(self, data, terminate=False):
- String32(data, terminate=terminate).writefd(self)
-
- def writeRecord(self, rec):
- self.write(rec.read())
-
-class AbstractString(object):
- """Abstract string class
- """
- def __init__(self, s=''):
- self._data = s
-
- def readfd(self, fd):
- raise NotImplementedError
-
- def writefd(self, fd):
- raise NotImplementedError
-
- def clear(self):
- """Clear data
- """
- self._data = ''
-
- def set(self, urustr):
- """Replace current data with urustr
- """
- self._data = urustr
-
- def __repr__(self):
- """repr(self)
- """
- return ("<%s at %x (%i)" % (self.__class__.__name__, id(self),
- len(self)))
-
- def __len__(self):
- """len(self)
- """
- return len(self._data)
-
- def __cmp__(self, other):
- if isinstance(other, AbstractString):
- return cmp(self._data, other._data)
- else:
- return cmp(self._data, other)
-
class UruString(AbstractString):
"""Uru Safe String
-
+
The algorithm is based on Alcug's Ustr. This version is optimized to
copy and convert as less data as possible.
-
+
version 0 - normal str
version 1 - auto (normal/inverted)
version 5 - inverted
@@ -329,51 +118,3 @@
result = fd.read(size)
self._data = result
return result
-
-class String32(AbstractString):
- """String with 32 bit size header
- """
- def __init__(self, s='', terminate=False):
- AbstractString.__init__(self, s)
- self._terminate = bool(terminate)
-
- def readfd(self, fd):
- size = fd.read32()
- if self._terminate:
- self._data = fd.readString0(size)
- else:
- self._data = fd.read(size)
- return self._data
-
- def writefd(self, fd):
- size = len(self)
- if self._terminate:
- fd.write32(size+1)
- fd.writeString0(self._data)
- else:
- fd.write32(size)
- fd.write(self._data)
-
-class String16(AbstractString):
- """String with 16 bit size header
- """
- def __init__(self, s='', terminate=False):
- AbstractString.__init__(self, s)
- self._terminate = bool(terminate)
-
- def readfd(self, fd):
- size = fd.read16()
- if self._terminate:
- self._data = fd.readString0(size)
- else:
- self._data = fd.read(size)
- return self._data
-
- def writefd(self, fd):
- size = len(self)
- if self._terminate:
- fd.write16(size+1)
- fd.writeString0(self._data)
- else:
- fd.write16(size)
- fd.write(self._data)
Deleted: pymoul/trunk/src/moul/crypt/binaryrecord.py
===================================================================
--- pymoul/trunk/src/moul/crypt/binaryrecord.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/binaryrecord.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -1,170 +0,0 @@
-# pyMoul - Python interface to Myst Online URU Live
-# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-"""Binary file helper: Records
-
-This module is roughly based on Maciej Obarski's recipe "parse and create
-fixed size binary data" from
-http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/465219
-"""
-__author__ = "Christian Heimes"
-__version__ = "$Id"
-__revision__ = "$Revision"
-
-from struct import calcsize
-from struct import pack
-from struct import unpack
-
-_marker = object()
-
-class RecordRegistry(dict):
- """Registry for record definitions
- """
- __slots__ = ()
- def register(self, name, fmt):
- """Register a format by name
-
- @param name: name of the format
- @type name: str
- @param fmt: a record format
- @type fmt: str
-
- Example:
- >>> reg = RecordRegistry()
- >>> registerRecord = reg.register
- >>> parseRecord = reg.parse
- >>> obj = registerRecord("connection", "4B.ip >H.port >I.session_id")
- >>> isinstance(obj, RecordDefinition)
- True
- >>> data = "\\xc0\\xa8\\x00\\x01" + "\\x00P" + "\\xFE\\xDC\\xBA\\x98"
-
- >>> rec = parseRecord("connection", data)
- >>> rec.ip
- (192, 168, 0, 1)
- >>> rec.port
- 80
- >>> rec.session_id
- 4275878552L
- >>> rec.read() == data or rec.read()
- True
- """
- if name in self:
- raise NameError("%s already registered!" % name)
- self[name] = RecordDefinition(name, fmt)
- return self[name]
-
- def parse(self, name, fd_data):
- """Parse data using the RecordDefinition 'name'
-
- @param name: name of the format
- @type name: str
- @param fd_data: data to parse: either a string or an open file
- @type fd_data: str or file
- """
- return self[name](fd_data)
-
-class RecordDefinition(object):
- """A record definition
- """
- __slots__ = ('_fields', '_recordsize', '_name')
-
- def __init__(self, name, recordfmt):
- self._name = name
- self._fields = []
- pos = 0
- for field in recordfmt.split():
- if field.startswith('#'):
- continue
- fmt, name = field.split('.')
- if '#' in name:
- name = name.split('#')[0]
- name = name.strip()
- size = calcsize(fmt)
- self._fields.append((name, fmt, pos, pos+size))
- pos += size
-
- self._recordsize = pos
-
- @property
- def name(self):
- return self._name
-
- @property
- def size(self):
- return self._recordsize
-
- def __call__(self, fd_data):
- """Parse data using the format string
-
- @param fd_data: data to parse: either a string or an open file
- @type fd_data: str or file
- """
- if isinstance(fd_data, basestring):
- # handle string
- data = fd_data
- elif hasattr(fd_data, 'read'):
- data = fd_data.read(self._recordsize)
- else:
- raise TypeError(type(fd_data))
- if len(data) != self._recordsize:
- raise ValueError("Data has wrong size: %i, required: %i" %
- (len(data), self._recordsize))
- return Record(self._fields, data)
-
-class Record(object):
- __slots__ = ('_fields', '_data')
-
- def __init__(self, fields, data=None):
- self._fields = fields
- self._data = {}
- if data is not None:
- self.write(data)
-
- def write(self, data):
- """Write data
-
- Creates the instance attributes defined in fmt
- """
- for name, fmt, start, stop in self._fields:
- value = unpack(fmt, data[start:stop])
- if len(value) == 1:
- value = value[0]
- self._data[name] = value
-
- def read(self):
- """Convert data to binary string
- """
- result = []
- for name, fmt, start, stop in self._fields:
- value = self._data[name]
- if not isinstance(value, (tuple, list)):
- value = (value,)
- result.append(pack(fmt, *value))
- return ''.join(result)
-
- def __getattr__(self, name, default=_marker):
- value = self._data.get(name, default)
- if value is _marker:
- raise AttributeError(name)
- return value
-
- def __str__(self):
- return self.read()
-
-_recordRegistry = RecordRegistry()
-registerRecord = _recordRegistry.register
-parseRecord = _recordRegistry.parse
Deleted: pymoul/trunk/src/moul/crypt/tests/test_binary.py
===================================================================
--- pymoul/trunk/src/moul/crypt/tests/test_binary.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/tests/test_binary.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -1,148 +0,0 @@
-# pyMoul - Python interface to Myst Online URU Live
-# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-"""moul.crypt.binary unit tests
-"""
-__author__ = "Christian Heimes"
-__version__ = "$Id$"
-__revision__ = "$Revision$"
-
-import os
-import unittest
-from doctest import DocTestSuite
-from tempfile import mkstemp
-
-from moul.crypt.binary import BinaryFile
-
-class BinaryFileTest(unittest.TestCase):
- def setUp(self):
- self.tmpname = mkstemp()[1]
- self.b = BinaryFile(self.tmpname, 'wb+')
-
- def tearDown(self):
- self.b.close()
- 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)
- self.b.seek(0)
- fdata = read()
- self.failUnlessEqual(data, fdata)
-
- def test_char(self):
- self._testrw('Char', 'a')
-
- def test_byte(self):
- self._testrw('Byte', 127)
-
- def test_bool(self):
- self._testrw('Bool', True)
-
- def test_8(self):
- self._testrw('8', 42)
-
- def test_8s(self):
- self._testrw('8s', -42)
-
- def test_16(self):
- self._testrw('16', 2**15)
-
- def test_16s(self):
- self._testrw('16s', -2**15)
-
- def test_32(self):
- self._testrw('32', 2*31)
-
- def test_32s(self):
- self._testrw('32s', -2*31)
-
- def test_64(self):
- self._testrw('64', 2*63)
-
- def test_64s(self):
- self._testrw('64s', -2*63)
-
- def test_float(self):
- data = -0.07
- self.b.writeFloat(data)
- self.b.seek(0)
- self.failUnlessAlmostEqual(data, self.b.readFloat())
-
- def test_double(self):
- self._testrw('Double', -23*10e200)
-
- def test_quad(self):
- data = (23, 42)
- self.b.writeQuad(data)
- self.b.seek(0)
- self.failUnlessEqual(data, self.b.readQuad())
-
- def test_urustring(self):
- # XXX: no test data
- pass
-
- def test_string0(self):
- s = "a test string"
- l = len(s)
- self.b.writeString0(s)
- self.b.seek(0)
- self.failUnlessEqual(self.b.size(), l+1)
- self.failUnlessEqual(self.b.readString0(l+1), s)
- self.b.seek(0)
- self.failUnlessEqual(self.b.read(), s+'\x00')
-
- def test_string16(self):
- s = "a test string"
- l = len(s)
- self.b.writeString16(s, terminate=False)
- self.b.seek(0)
- self.failUnlessEqual(self.b.size(), l+2)
- self.failUnlessEqual(self.b.readString16(terminate=False), s)
-
- self.b.seek(0)
- self.b.truncate(0)
- self.b.writeString16(s, terminate=True)
- self.b.seek(0)
- self.failUnlessEqual(self.b.size(), l+3)
- self.failUnlessEqual(self.b.readString16(terminate=True), s)
-
- def test_string32(self):
- s = "a test string"
- l = len(s)
- self.b.writeString32(s, terminate=False)
- self.b.seek(0)
- self.failUnlessEqual(self.b.size(), l+4)
- self.failUnlessEqual(self.b.readString32(terminate=False), s)
-
- self.b.seek(0)
- self.b.truncate(0)
- self.b.writeString32(s, terminate=True)
- self.b.seek(0)
- self.failUnlessEqual(self.b.size(), l+5)
- self.failUnlessEqual(self.b.readString32(terminate=True), s)
-
-
-def test_suite():
- return unittest.TestSuite((
- unittest.makeSuite(BinaryFileTest),
- ))
-
-if __name__ == '__main__':
- unittest.main(defaultTest="test_suite")
Deleted: pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py
===================================================================
--- pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/tests/test_binaryrecord.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -1,38 +0,0 @@
-# pyMoul - Python interface to Myst Online URU Live
-# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-"""moul.crypt.binaryrecord unit tests
-"""
-__author__ = "Christian Heimes"
-__version__ = "$Id$"
-__revision__ = "$Revision$"
-
-import os
-import unittest
-from doctest import DocTestSuite
-
-import moul.crypt.binaryrecord
-
-def test_suite():
- return unittest.TestSuite((
- DocTestSuite('moul.crypt.binaryrecord'),
- ))
-
-if __name__ == '__main__':
- unittest.main(defaultTest="test_suite")
-
-
Modified: pymoul/trunk/src/moul/crypt/tests/test_wdys.py
===================================================================
--- pymoul/trunk/src/moul/crypt/tests/test_wdys.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/tests/test_wdys.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -64,7 +64,6 @@
return unittest.TestSuite((
unittest.makeSuite(WDYSTest),
DocTestSuite('moul.crypt.whatdoyousee'),
- DocTestSuite('moul.crypt.xtea'),
))
if __name__ == '__main__':
Modified: pymoul/trunk/src/moul/crypt/whatdoyousee.py
===================================================================
--- pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -32,8 +32,8 @@
from logging import getLogger
from moul.crypt.binary import BinaryFile
-from moul.crypt.xtea import xtea_decrypt
-from moul.crypt.xtea import xtea_encrypt
+from xtea import xtea_decrypt
+from xtea import xtea_encrypt
HEADER = "whatdoyousee"
@@ -87,7 +87,7 @@
instr = instr.replace("\n", "\r\n")
fout.seek(0)
fout.write(HEADER)
-
+
flen = len(instr)
length = struct.pack(ENDIAN+"L", flen)
fout.write(length)
Deleted: pymoul/trunk/src/moul/crypt/xtea.py
===================================================================
--- pymoul/trunk/src/moul/crypt/xtea.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/crypt/xtea.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -1,104 +0,0 @@
-"""XTEA Block Encryption Algorithm
-
-Author: Paul Chakravarti (paul_dot_chakravarti_at_mac_dot_com)
-License: Public Domain
-
-Modified by Christian Heimes to add an endian switch.
-
-This module provides a Python implementation of the XTEA block encryption
-algorithm (http://www.cix.co.uk/~klockstone/xtea.pdf).
-
-The module implements the basic XTEA block encryption algortithm
-(`xtea_encrypt`/`xtea_decrypt`) and also provides a higher level `crypt`
-function which symmetrically encrypts/decrypts a variable length string using
-XTEA in OFB mode as a key generator. The `crypt` function does not use
-`xtea_decrypt` which is provided for completeness only (but can be used
-to support other stream modes - eg CBC/CFB).
-
-This module is intended to provide a simple 'privacy-grade' Python encryption
-algorithm with no external dependencies. The implementation is relatively slow
-and is best suited to small volumes of data. Note that the XTEA algorithm has
-not been subjected to extensive analysis (though is believed to be relatively
-secure - see http://en.wikipedia.org/wiki/XTEA). For applications requiring
-'real' security please use a known and well tested algorithm/implementation.
-
-The security of the algorithm is entirely based on quality (entropy) and
-secrecy of the key. You should generate the key from a known random source and
-exchange using a trusted mechanism. In addition, you should always use a random
-IV to seed the key generator (the IV is not sensitive and does not need to be
-exchanged securely)
-
- >>> import os
- >>> iv = 'ABCDEFGH'
- >>> z = crypt('0123456789012345','Hello There',iv)
- >>> z.encode('hex')
- 'fe196d0a40d6c222b9eff3'
- >>> crypt('0123456789012345',z,iv)
- 'Hello There'
-
-"""
-import struct
-
-
-def crypt(key,data,iv='\00\00\00\00\00\00\00\00',n=32,endian="!"):
- """
- Encrypt/decrypt variable length string using XTEA cypher as
- key generator (OFB mode)
- * key = 128 bit (16 char) / iv = 64 bit (8 char)
- * data = string (any length)
-
- >>> import os
- >>> key = os.urandom(16)
- >>> iv = os.urandom(8)
- >>> data = os.urandom(10000)
- >>> z = crypt(key,data,iv)
- >>> crypt(key,z,iv) == data
- True
-
- """
- def keygen(key,iv,n):
- while True:
- iv = xtea_encrypt(key,iv,n,endian)
- for k in iv:
- yield ord(k)
- xor = [ chr(x^y) for (x,y) in zip(map(ord,data),keygen(key,iv,n)) ]
- return "".join(xor)
-
-def xtea_encrypt(key,block,n=32, endian="!"):
- """
- Encrypt 64 bit data block using XTEA block cypher
- * key = 128 bit (16 char) / block = 64 bit (8 char)
-
- >>> xtea_encrypt('0123456789012345','ABCDEFGH').encode('hex')
- 'b67c01662ff6964a'
- """
- v0,v1 = struct.unpack(endian+"2L",block)
- k = struct.unpack(endian+"4L",key)
- sum,delta,mask = 0L,0x9e3779b9L,0xffffffffL
- for round in range(n):
- v0 = (v0 + (((v1<<4 ^ v1>>5) + v1) ^ (sum + k[sum & 3]))) & mask
- sum = (sum + delta) & mask
- v1 = (v1 + (((v0<<4 ^ v0>>5) + v0) ^ (sum + k[sum>>11 & 3]))) & mask
- return struct.pack(endian+"2L",v0,v1)
-
-def xtea_decrypt(key,block,n=32, endian="!"):
- """
- Decrypt 64 bit data block using XTEA block cypher
- * key = 128 bit (16 char) / block = 64 bit (8 char)
-
- >>> xtea_decrypt('0123456789012345','b67c01662ff6964a'.decode('hex'))
- 'ABCDEFGH'
- """
- v0,v1 = struct.unpack(endian+"2L",block)
- k = struct.unpack(endian+"4L",key)
- delta,mask = 0x9e3779b9L,0xffffffffL
- sum = (delta * n) & mask
- for round in range(n):
- v1 = (v1 - (((v0<<4 ^ v0>>5) + v0) ^ (sum + k[sum>>11 & 3]))) & mask
- sum = (sum - delta) & mask
- v0 = (v0 - (((v1<<4 ^ v1>>5) + v1) ^ (sum + k[sum & 3]))) & mask
- return struct.pack(endian+"2L",v0,v1)
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
\ No newline at end of file
Deleted: pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py
===================================================================
--- pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py 2007-02-28 12:10:44 UTC (rev 217)
+++ pymoul/trunk/src/moul/osdependent/tests/test_processinfo.py 2007-02-28 12:13:59 UTC (rev 218)
@@ -1,37 +0,0 @@
-# pyMoul - Python interface to Myst Online URU Live
-# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any ...
[truncated message content] |
|
From: <ti...@us...> - 2007-03-05 14:21:07
|
Revision: 234
http://pymoul.svn.sourceforge.net/pymoul/?rev=234&view=rev
Author: tiran
Date: 2007-03-05 06:20:57 -0800 (Mon, 05 Mar 2007)
Log Message:
-----------
Updated Windows stuff to compile extensions with mingw32
Added test.bat
Modified Paths:
--------------
pymoul/trunk/INSTALL.txt
pymoul/trunk/build.bat
pymoul/trunk/installer.bat
pymoul/trunk/run.bat
pymoul/trunk/src/moul/qt/mainwindow.py
Added Paths:
-----------
pymoul/trunk/test.bat
Modified: pymoul/trunk/INSTALL.txt
===================================================================
--- pymoul/trunk/INSTALL.txt 2007-03-05 14:08:57 UTC (rev 233)
+++ pymoul/trunk/INSTALL.txt 2007-03-05 14:20:57 UTC (rev 234)
@@ -49,6 +49,13 @@
http://www.riverbankcomputing.com/Downloads/PyQt4/GPL/
http://wftp.tu-chemnitz.de/pub/Qt/qt/source/qt-win-opensource-4.2.2-mingw.exe
+Extension module
+----------------
+
+The extension modules can be compiled and installed in place with
+
+ python setup.py build_ext -i -c mingw32
+
Adjust your environment for Qt/PyQt
-----------------------------------
Modified: pymoul/trunk/build.bat
===================================================================
--- pymoul/trunk/build.bat 2007-03-05 14:08:57 UTC (rev 233)
+++ pymoul/trunk/build.bat 2007-03-05 14:20:57 UTC (rev 234)
@@ -2,5 +2,5 @@
cls
set PYTHONPATH=src
python utilities\compileui.py src\moul\qt
-python setup.py py2exe
+python setup.py build_ext -c mingw32 py2exe
pause
Modified: pymoul/trunk/installer.bat
===================================================================
--- pymoul/trunk/installer.bat 2007-03-05 14:08:57 UTC (rev 233)
+++ pymoul/trunk/installer.bat 2007-03-05 14:20:57 UTC (rev 234)
@@ -3,5 +3,5 @@
set PYTHONPATH=src
set INNOSETUP=yes
python utilities\compileui.py src\moul\qt
-python setup.py py2exe
+python setup.py build_ext -c mingw32 py2exe
pause
Modified: pymoul/trunk/run.bat
===================================================================
--- pymoul/trunk/run.bat 2007-03-05 14:08:57 UTC (rev 233)
+++ pymoul/trunk/run.bat 2007-03-05 14:20:57 UTC (rev 234)
@@ -1,5 +1,6 @@
@echo off
cls
set PYTHONPATH=src
+python setup.py build_ext -i -c mingw32
python utilities\compileui.py src\moul\qt
python src\moul\qt\moulqt.py
Modified: pymoul/trunk/src/moul/qt/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-05 14:08:57 UTC (rev 233)
+++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-05 14:20:57 UTC (rev 234)
@@ -61,7 +61,7 @@
# Set up the user interface from Designer.
self.setupUi(self)
- #self.lb_top_image.setPixmap(QtGui.QPixmap(":/resources/moul_logo.png"))
+ self.lb_top_image.setPixmap(QtGui.QPixmap(":/resources/moul_logo.png"))
self.tabWidget.setCurrentIndex(0)
self.tab_sub_settings.setCurrentIndex(0)
self.tabwidget_about.setCurrentIndex(0)
Added: pymoul/trunk/test.bat
===================================================================
--- pymoul/trunk/test.bat (rev 0)
+++ pymoul/trunk/test.bat 2007-03-05 14:20:57 UTC (rev 234)
@@ -0,0 +1,6 @@
+@echo off
+cls
+set PYTHONPATH=src
+python setup.py build_ext -i -c mingw32
+python utilities\compileui.py src\moul\qt
+python test.py
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-03-08 02:42:58
|
Revision: 242
http://pymoul.svn.sourceforge.net/pymoul/?rev=242&view=rev
Author: tiran
Date: 2007-03-07 18:42:59 -0800 (Wed, 07 Mar 2007)
Log Message:
-----------
Changed status to beta
Added modules for pod age and eder gira
Modified Paths:
--------------
pymoul/trunk/setup.py
Added Paths:
-----------
pymoul/trunk/src/moul/time/edergira.py
pymoul/trunk/src/moul/time/podage.py
pymoul/trunk/src/moul/time/tests/test_podage.py
Modified: pymoul/trunk/setup.py
===================================================================
--- pymoul/trunk/setup.py 2007-03-08 02:28:11 UTC (rev 241)
+++ pymoul/trunk/setup.py 2007-03-08 02:42:59 UTC (rev 242)
@@ -49,8 +49,7 @@
license = "GPL",
keywords = "myst online uru live moul cyan",
classifiers = (
- 'Development Status :: 1 - Planning',
- 'Environment :: Console',
+ 'Development Status :: 2 - Alpha',
'Environment :: Win32 (MS Windows)',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Developers',
@@ -114,3 +113,4 @@
kwargs['packages'].append('moul.qt')
setup(**kwargs)
+
Added: pymoul/trunk/src/moul/time/edergira.py
===================================================================
--- pymoul/trunk/src/moul/time/edergira.py (rev 0)
+++ pymoul/trunk/src/moul/time/edergira.py 2007-03-08 02:42:59 UTC (rev 242)
@@ -0,0 +1,41 @@
+# pyMoul - Python interface to Myst Online URU Live
+# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc., 59
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+"""pyMoul Ede Gira day cycle
+
+Based on BrettM's information
+"""
+__author__ = "Christian Heimes"
+__version__ = "$Id"
+__revision__ = "$Revision"
+
+
+from datetime import datetime
+from datetime import timedelta
+
+from moul.time.utils import UTC
+from moul.time.utils import td2sec
+from moul.time.utils import utcnow
+
+delta = timedelta(days=0, hours=10, minutes=0) # 10h
+base_dt = datetime(2007, 3, 8, 9, 15, 0) # noon
+
+class EderGiraDay(object):
+ """Eder Gira day cycle class
+ """
+ def __init__(self):
+ pass
Property changes on: pymoul/trunk/src/moul/time/edergira.py
___________________________________________________________________
Name: svn:keywords
+ 'Id Revision'
Name: svn:eol-style
+ native
Added: pymoul/trunk/src/moul/time/podage.py
===================================================================
--- pymoul/trunk/src/moul/time/podage.py (rev 0)
+++ pymoul/trunk/src/moul/time/podage.py 2007-03-08 02:42:59 UTC (rev 242)
@@ -0,0 +1,181 @@
+# pyMoul - Python interface to Myst Online URU Live
+# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc., 59
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+"""pyMoul Pod age time
+
+>>> pod18.gatenumber
+18
+>>> getPodAge('Negilahn') is pod18
+True
+>>> getPodAgeByNumber(18) is pod18
+True
+
+>>> padneg = PodAgeTime('Negilahn')
+>>> for n, dt in iter(padneg):
+... if n > 20:
+... break
+
+>>> isinstance(padneg.get(), datetime)
+True
+
+"""
+__author__ = "Christian Heimes"
+__version__ = "$Id"
+__revision__ = "$Revision"
+
+
+import os
+import sys
+from datetime import datetime
+from datetime import timedelta
+from math import floor
+from time import mktime
+
+from moul.time.utils import UTC
+from moul.time.utils import td2sec
+from moul.time.utils import utcnow
+
+class PodAgeRegistry(dict):
+ """Registry for pod ages
+ """
+ __slots__ = ('_bynumber',)
+
+ def __new__(cls, **kw):
+ self = dict.__new__(cls, **kw)
+ self._bynumber = {}
+ return self
+
+ def __setitem__(self, key, item):
+ if not isinstance(item, PodAgeInformation):
+ raise TypeError(item)
+ self._bynumber[item.gatenumber] = item
+ return dict.__setitem__(self, key, item)
+
+ def __delitem__(self, key):
+ item = self[key]
+ del self._bynumber[item.gatenumber]
+ return dict.__delitem__(self, key)
+
+ def register(self, pod):
+ self[pod.name] = pod
+
+ def listNumbers(self):
+ return self._bynumber.keys()
+
+ def byNumber(self, nr):
+ return self._bynumber[nr]
+
+_podRegistry = PodAgeRegistry()
+getPodAge = _podRegistry.get
+getPodAgeByNumber = _podRegistry.byNumber
+registerPodAge = _podRegistry.register
+
+def listPodAges():
+ return [name for name in _podRegistry if name]
+
+class PodAgeInformation(dict):
+ """Information about a pod age
+ """
+ __slots__ = ()
+
+ def __init__(self, __registry=_podRegistry, **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'):
+ if key not in self:
+ raise KeyError(key)
+ __registry.register(self)
+
+ def __getattribute__(self, name):
+ if name in self:
+ return self[name]
+ else:
+ dict.__getattribute__(self, name)
+
+class PodAgeTime(object):
+ """A pod age day cycle and gate event timer
+ """
+ def __init__(self, name):
+ """
+ @param name: Registered name of a pod age
+ @type name: str
+ """
+ if isinstance(name, basestring):
+ age = getPodAge(name)
+ elif isinstance(name, int):
+ age = getPodAgeByNumber(name)
+ else:
+ raise TypeError(name)
+ if age is None:
+ raise ValueError("Unknown age: %s" % name)
+ self._age = age
+ self._name = age.name
+ self.setStart()
+
+ def setStart(self, startdt=None):
+ """Set start date from when the calculations are started
+
+ Internally the date of the last cycle is stored
+
+ @param startdt: date to start counting (None: now)
+ @type startdt: datetime instance or None
+ @return: None
+ """
+ if startdt is None:
+ startdt = utcnow()
+ # 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
+
+ def get(self, count=1):
+ """Get date by count
+
+ @param count: number of cycles from start date
+ @type count: int
+ @return: date and time of next event
+ @rtype: datetime instance
+ """
+ delta = count * self._age.daycycle
+ return self._base + delta
+
+ def __iter__(self):
+ """Iterate through events
+
+ @return: Iterator that yields (number, date)
+ @rtype: iterator (int, datetime)
+ """
+ delta = self._age.daycycle
+ dt = self._base + delta
+ n = 0
+ while True:
+ yield (n, dt)
+ dt += delta
+ n += 1
+
+# pod ages
+pod18 = PodAgeInformation(name = 'Negilahn', gatenumber = 18,
+ base_dt = datetime(2007, 3, 4, 10, 16, 0, tzinfo=UTC))
+
+if __name__ == '__main__':
+ padneg = PodAgeTime('Negilahn')
+ for n, dt in iter(padneg):
+ print n, dt
+ if n > 20:
+ break
Property changes on: pymoul/trunk/src/moul/time/podage.py
___________________________________________________________________
Name: svn:keywords
+ 'Id Revision'
Name: svn:eol-style
+ native
Added: pymoul/trunk/src/moul/time/tests/test_podage.py
===================================================================
--- pymoul/trunk/src/moul/time/tests/test_podage.py (rev 0)
+++ pymoul/trunk/src/moul/time/tests/test_podage.py 2007-03-08 02:42:59 UTC (rev 242)
@@ -0,0 +1,37 @@
+# pyMoul - Python interface to Myst Online URU Live
+# Copyright (C) 2007 Christian Heimes <christian (at) cheimes (dot) de>
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc., 59
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+"""moul.time.podage unit tests
+"""
+__author__ = "Christian Heimes"
+__version__ = "$Id: test_dni.py 122 2007-02-02 17:34:06Z tiran $"
+__revision__ = "$Revision: 122 $"
+
+import os
+import unittest
+from doctest import DocTestSuite
+
+import moul.time.podage
+
+
+def test_suite():
+ return unittest.TestSuite((
+ DocTestSuite('moul.time.podage'),
+ ))
+
+if __name__ == '__main__':
+ unittest.main(defaultTest="test_suite")
Property changes on: pymoul/trunk/src/moul/time/tests/test_podage.py
___________________________________________________________________
Name: svn:keywords
+ 'Id Revision'
Name: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-03-09 16:20:36
|
Revision: 245
http://pymoul.svn.sourceforge.net/pymoul/?rev=245&view=rev
Author: tiran
Date: 2007-03-09 08:20:35 -0800 (Fri, 09 Mar 2007)
Log Message:
-----------
Added tabs for eder gira and pod ages
updated translations
updated XXX report
svn propset
Modified Paths:
--------------
pymoul/trunk/doc/XXXreport.html
pymoul/trunk/src/moul/qt/i18n/pymoul_de.qm
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/tests/test_edergira.py
pymoul/trunk/src/moul/time/tests/test_podage.py
Property Changed:
----------------
pymoul/trunk/src/moul/time/edergira.py
pymoul/trunk/src/moul/time/podage.py
pymoul/trunk/src/moul/time/tests/test_edergira.py
pymoul/trunk/src/moul/time/tests/test_podage.py
Modified: pymoul/trunk/doc/XXXreport.html
===================================================================
--- pymoul/trunk/doc/XXXreport.html 2007-03-08 20:02:56 UTC (rev 244)
+++ pymoul/trunk/doc/XXXreport.html 2007-03-09 16:20:35 UTC (rev 245)
@@ -3,11 +3,11 @@
<body>
<h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1>
-<p>Generated on Tue, 13 Feb 2007 20:37:41 CET, based on Zope 3's XXX report</p>
+<p>Generated on Fri, 09 Mar 2007 17:18:53 CET, based on Zope 3's XXX report</p>
<hr>
<h3>Summary</h3>
<p>
- There are currently 133 XXX/TODO/FIXME comments.
+ There are currently 92 XXX/TODO/FIXME comments.
</p>
<hr/>
<h3>Listing</h3>
@@ -47,14 +47,14 @@
base-158- pass
base-159-
base-160-class Constrain(object):
-</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-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-556- # microphon missing -> OS mixer
-base-557- }
-</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-643-
-base-644-class GraphicsIni(ConfFile):
-base-645- _filename = 'graphics.ini'
+</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-557- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
+base-558- # microphon missing -> OS mixer
+base-559- }
+</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-645-
+base-646-class GraphicsIni(ConfFile):
+base-647- _filename = 'graphics.ini'
</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch
base-60- return len([name for name in os.listdir(path)
base-61- if os.path.isfile(os.path.join(path, name))])
@@ -68,7 +68,7 @@
base-116-class AudioIniTest(GenericIniTest):
base-117- enc = aud_enc
</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-153-
+base-153-
base-154- p.screenres = 0
base-155- eq(p._get('Graphics.Width'), 800)
</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
@@ -84,19 +84,7 @@
class AudioIniTest(GenericIniTest):
enc = aud_enc
</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:152</b><br/><pre> #XXX self.failIf(p.isChanged())
-
- p.screenres = 0
- eq(p._get('Graphics.Width'), 800)
-</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:105</b><br/><pre> # TODO: more
- def test_publicapi_create(self):
- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:116</b><br/><pre> # TODO: more
-
-class AudioIniTest(GenericIniTest):
- enc = aud_enc
-</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:154</b><br/><pre> #XXX self.failIf(p.isChanged())
-
p.screenres = 0
eq(p._get('Graphics.Width'), 800)
</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
@@ -123,58 +111,26 @@
pass
class Constrain(object):
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
+</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:556</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
# microphon missing -> OS mixer
}
-</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.
+</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:644</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer.
class GraphicsIni(ConfFile):
_filename = 'graphics.ini'
-</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct
- if header is None:
- fd = self._fd
- fd.seek(0)
-</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct
- 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!
- if not os.path.isfile(fixed):
- self._tocheck.append((ki, fixed))
- else:
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me
- pass
-
-class Constrain(object):
-</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check
- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
- # microphon missing -> OS mixer
- }
-</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.
-
-class GraphicsIni(ConfFile):
- _filename = 'graphics.ini'
-</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</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
</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch
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~:59</b><br/><pre> # TODO: fnmatch
- 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/crypt/.svn/text-base/whatdoyousee.py.svn-base:76</b><br/><pre> # XXX: dos format
-base-77- return data.replace("\r\n", "\n")
-base-78-
-base-79-def encryptWDYS(instr, fout):
-</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:86</b><br/><pre> # XXX: dos format
-base-87- instr = instr.replace("\n", "\r\n")
-base-88- fout.seek(0)
-base-89- fout.write(HEADER)
+</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-
+base-77-def encryptWDYS(instr, fout):
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:84</b><br/><pre> # XXX: dos format
+base-85- instr = instr.replace("\n", "\r\n")
+base-86- fout.seek(0)
+base-87- fout.write(HEADER)
</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:28</b><br/><pre># TODO: use BinaryFile
base-29-
base-30-def list2int(lst):
@@ -183,49 +139,26 @@
base-73- raise NotImplementedError
base-74-
base-75-def decipher(crypt, size, key):
-</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-294- raise ValueError("string is too long: %i" % size)
-base-295- if self.version == 5:
-base-296- size |= 0xF000
-</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-316- raise ValueError("size '%i' > 1024 at position %s(%s)" %
-base-317- (size, fd.tell(), repr(fd)))
-base-318- if self.version == 5:
-base:319: # XXX: testme
-base-320- # read data as tuple of integeres
-base-321- data = fd.readPacked("<%iI" % size)
-base-322- # OR integers with 0xff and write their char equivalent to string
-</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-99- pass
-base-100-
-base-101- def test_string0(self):
-</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py:98</b><br/><pre> # XXX: no test data
- pass
-
- def test_string0(self):
-</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py~:98</b><br/><pre> # XXX: no test data
- pass
-
- def test_string0(self):
-</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:76</b><br/><pre> # XXX: dos format
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:82</b><br/><pre> if size > 1024: # XXX: ???
+base-83- raise ValueError("string is too long: %i" % size)
+base-84- if self.version == 5:
+base-85- size |= 0xF000
+</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:104</b><br/><pre> if size > 1024: # XXX: ???
+base-105- raise ValueError("size '%i' > 1024 at position %s(%s)" %
+base-106- (size, fd.tell(), repr(fd)))
+base-107- if self.version == 5:
+base:108: # XXX: testme
+base-109- # read data as tuple of integeres
+base-110- data = fd.readPacked("<%iI" % size)
+base-111- # OR integers with 0xff and write their char equivalent to string
+</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:74</b><br/><pre> # XXX: dos format
return data.replace("\r\n", "\n")
def encryptWDYS(instr, fout):
-</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:86</b><br/><pre> # XXX: dos format
+</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:84</b><br/><pre> # XXX: dos format
instr = instr.replace("\n", "\r\n")
fout.seek(0)
fout.write(HEADER)
-</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:293</b><br/><pre> if size > 1024: # XXX: ???
- raise ValueError("string is too long: %i" % size)
- if self.version == 5:
- size |= 0xF000
-</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:315</b><br/><pre> if size > 1024: # XXX: ???
- raise ValueError("size '%i' > 1024 at position %s(%s)" %
- (size, fd.tell(), repr(fd)))
- if self.version == 5:
- # read data as tuple of integeres
- data = fd.readPacked("<%iI" % size)
- # OR integers with 0xff and write their char equivalent to string
</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:28</b><br/><pre># TODO: use BinaryFile
def list2int(lst):
@@ -234,105 +167,97 @@
raise NotImplementedError
def decipher(crypt, size, key):
-</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:293</b><br/><pre> if size > 1024: # XXX: ???
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:82</b><br/><pre> if size > 1024: # XXX: ???
raise ValueError("string is too long: %i" % size)
if self.version == 5:
size |= 0xF000
-</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:315</b><br/><pre> if size > 1024: # XXX: ???
+</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:104</b><br/><pre> if size > 1024: # XXX: ???
raise ValueError("size '%i' > 1024 at position %s(%s)" %
(size, fd.tell(), repr(fd)))
if self.version == 5:
# read data as tuple of integeres
data = fd.readPacked("<%iI" % size)
# OR integers with 0xff and write their char equivalent to string
-</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-155- self.emit(SIGNAL("close()"))
-base-156- event.accept()
-base-157- event.ignore()
-</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-294- del self._kiimage_progressbar
-base-295- self.pb_kiimage_repair.setEnabled(True)
-base-296- mb = qtutils.infoMB(self,
-</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-393- self._timezone_timer = QtCore.QTimer(self)
-base-394- self._timezone_timer.setInterval(1000) # 1 sec
-base:395: # TODO: needs optimization? run only when timer tab is active
-base-396- self.connect(self._timezone_timer, SIGNAL('timeout()'),
-base-397- self.on_timezone_timer_timeout)
-base-398- self._timezone_timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:507</b><br/><pre> # TODO: thread safety!
-base-508- self.servers = servers
-base-509- if not self.isRunning():
-base-510- self.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:513</b><br/><pre> # TODO: thread safety!
-base-514- # emit a list of names first
-base-515- for server in self.servers:
-base-516- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:551</b><br/><pre> # TODO check this
-base-552- self._running = False
-base-553- self.condition.wakeAll()
-base-554-
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:150</b><br/><pre> # FIXME: signal doesn't do anything
+base-151- self.emit(SIGNAL("close()"))
+base-152- event.accept()
+base-153- event.ignore()
+</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:289</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+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/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/mainwindow.py~:154</b><br/><pre> # FIXME: signal doesn't do anything
+</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/mainwindow.py:150</b><br/><pre> # FIXME: signal doesn't do anything
self.emit(SIGNAL("close()"))
event.accept()
event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:289</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
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~:392</b><br/><pre> # TODO: change timer from every second to every minute
- self._timezone_timer = QtCore.QTimer(self)
- self._timezone_timer.setInterval(1000) # 1 sec
- self.connect(self._timezone_timer, SIGNAL('timeout()'),
- self.on_timezone_timer_timeout)
- self._timezone_timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:507</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:478</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~:513</b><br/><pre> # TODO: thread safety!
+</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:484</b><br/><pre> # TODO: thread safety!
# emit a list of names first
- for server in self.servers:
- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:551</b><br/><pre> # TODO check this
+ 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
self._running = False
self.condition.wakeAll()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:154</b><br/><pre> # FIXME: signal doesn't do anything
- self.emit(SIGNAL("close()"))
- event.accept()
- event.ignore()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box
- 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:392</b><br/><pre> # TODO: change timer from every second to every minute
- self._timezone_timer = QtCore.QTimer(self)
- self._timezone_timer.setInterval(1000) # 1 sec
- self.connect(self._timezone_timer, SIGNAL('timeout()'),
- self.on_timezone_timer_timeout)
- self._timezone_timer.start()
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:507</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:513</b><br/><pre> # TODO: thread safety!
- # emit a list of names first
- for server in self.servers:
- self.emit(SIGNAL("server(const QString&)"), server.name)
-</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:551</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/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others?
+</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
+ #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
+ 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?
+ #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?
_thismodule = sys.modules[__name__]
if __WIN32__:
from moul.osdependent import win32 as osdep_win32
@@ -344,14 +269,18 @@
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/darwin/__init__.py~:37</b><br/><pre>EXEC_NAME = "???" # XXX
-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater"
-LOCATIONS = [
- "/Applications",
-</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-121-_thismodule = sys.modules[__name__]
-base-122-if __WIN32__:
-base-123- from moul.osdependent import win32 as osdep_win32
+</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
+ pass
+
+ def test_string0(self):
</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-15-base-549- # separated by a horizontal dash line. Only the first one of
base-16-base-550- # them is now colorized properly.
@@ -404,14 +333,14 @@
base-63-base-106-
base-64-base-107- def test_publicapi_create(self):
base-65-base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-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-67-base-117-
-base-68-base-118-class AudioIniTest(GenericIniTest):
-base-69-base-119- enc = aud_enc
-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-71-base-155-
-base-72-base-156- p.screenres = 0
-base-73-base-157- eq(p._get('Graphics.Width'), 800)
+base:66:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:114</b><br/><pre> # TODO: more
+base-67-base-115-
+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-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
base-75-base-81- fd = open(os.path.join(path, fname), 'wb')
base-76-base-82- fd.write('dummy')
@@ -420,1386 +349,1913 @@
base-79-
base-80- def test_publicapi_create(self):
base-81- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc))
-base:82:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more
+base:82:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:114</b><br/><pre> # TODO: more
base-83-
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:154</b><br/><pre> #XXX self.failIf(p.isChanged())
+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-88- p.screenres = 0
base-89- eq(p._get('Graphics.Width'), 800)
-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-91- fd = open(os.path.join(path, fname), 'wb')
-base-92- fd.write('dummy')
-base-93- fd.close()
-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-95- if not os.path.isdir(self._archivedir):
-base-96- LOG.warning("%s is not a directory" % self._archivedir)
-base-97- return
-base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct
-base-99- if header is None:
-base-100- fd = self._fd
-base-101- fd.seek(0)
-base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct
-base-103- if size is None:
-base-104- size = self.getFileSize()
-base-105- leading = 4* [None]
-base:106:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method!
-base-107- if not os.path.isfile(fixed):
-base-108- self._tocheck.append((ki, fixed))
-base-109- continue
-base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me
-base-111- pass
-base-112-
-base-113-class Constrain(object):
-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-115- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui
-base-116- # microphon missing -> OS mixer
-base-117- }
-base:118:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra hand...
[truncated message content] |
|
From: <ti...@us...> - 2007-03-10 14:34:31
|
Revision: 246
http://pymoul.svn.sourceforge.net/pymoul/?rev=246&view=rev
Author: tiran
Date: 2007-03-10 06:34:26 -0800 (Sat, 10 Mar 2007)
Log Message:
-----------
Added experimental Darwin support to setup
Modified Paths:
--------------
pymoul/trunk/setup.py
Added Paths:
-----------
pymoul/trunk/utilities/setup_darwin.py
Modified: pymoul/trunk/setup.py
===================================================================
--- pymoul/trunk/setup.py 2007-03-09 16:20:35 UTC (rev 245)
+++ pymoul/trunk/setup.py 2007-03-10 14:34:26 UTC (rev 246)
@@ -104,13 +104,18 @@
kwargs.update(setup_options)
# Do some windows stuff
-if sys.platform.startswith('win32'):
+_plat = sys.platform.startswith
+if _plat('win32'):
from utilities.setup_win32 import updateSetupOptions
from utilities.setup_win32 import updateSetupOptionsQT
updateSetupOptions(kwargs)
updateSetupOptionsQT(kwargs)
-elif sys.platform.startswith('linux2'):
+elif _plat('darwin'):
+ from utilities.setup_darwin import updateSetupOptions
+ updateSetupOptions(kwargs)
+elif _plat('linux2'):
kwargs['packages'].append('moul.qt')
+else:
+ raise OSError(sys.platform)
setup(**kwargs)
-
Added: pymoul/trunk/utilities/setup_darwin.py
===================================================================
--- pymoul/trunk/utilities/setup_darwin.py (rev 0)
+++ pymoul/trunk/utilities/setup_darwin.py 2007-03-10 14:34:26 UTC (rev 246)
@@ -0,0 +1,44 @@
+"""Mac OS X helpers for setup.py
+"""
+__author__ = "Christian Heimes"
+__version__ = "$Id: setup_win32.py 143 2007-02-05 16:48:00Z tiran $"
+__revision__ = "$Revision: 143 $"
+
+import os
+import sys
+from setuptools import find_packages
+
+try:
+ import py2app
+except ImportError:
+ print >>sys.stderr, "py2app missing, unable to create app package"
+else:
+ pass
+
+# PyTz uses some import magic
+def findPyTz():
+ import pytz
+ packages = ['pytz.zoneinfo']
+ for tz in ('GMT', 'UTC'):
+ packages.append('pytz.zoneinfo.%s' % tz)
+ # ('America', 'Canada', 'Etc', 'Europe', 'US'):
+ for tz in ('US',):
+ packages.append('pytz.zoneinfo.%s.*' % tz)
+ return packages
+# pytz_dir = os.path.dirname(pytz.__file__)
+# if not os.path.isdir(pytz_dir):
+# raise ValueError('Install pytz with easy_install -Z pytz')
+# packages = find_packages(pytz_dir)
+# packages = ['pytz.%s.*' % pack for pack in packages]
+# return packages
+
+def updateSetupOptions(kw):
+ for req in ("py2app >=0.3.56",):
+ kw['setup_requires'].append(req)
+ for req in ():
+ kw['install_requires'].append(req)
+ app = kw.setdefault('app', [])
+ app.append("src/moul/qt/moulqt.py")
+ kw.setdefault('options', {})
+ papp = kw['options'].setdefault('py2app', {})
+ papp['argv_emulation'] = True
Property changes on: pymoul/trunk/utilities/setup_darwin.py
___________________________________________________________________
Name: svn:keywords
+ 'Id Revision'
Name: svn:eol-style
+ native
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: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-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-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-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> ...
[truncated message content] |
|
From: <ti...@us...> - 2007-03-21 12:39:25
|
Revision: 275
http://pymoul.svn.sourceforge.net/pymoul/?rev=275&view=rev
Author: tiran
Date: 2007-03-21 05:39:25 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
Removed usage of crypt functions and disabled UI for audio and graphics settings
Modified Paths:
--------------
pymoul/trunk/Makefile.in
pymoul/trunk/src/moul/crypt/elf.py
pymoul/trunk/src/moul/crypt/whatdoyousee.py
pymoul/trunk/src/moul/file/directory.py
pymoul/trunk/src/moul/file/plasmalog.py
pymoul/trunk/src/moul/file/tests/test_directory.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/Makefile.in
===================================================================
--- pymoul/trunk/Makefile.in 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/Makefile.in 2007-03-21 12:39:25 UTC (rev 275)
@@ -39,13 +39,13 @@
$(PYTHON) utilities/compileui.py ./src/moul/
test_build: build
- PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
+ MOUL_ALLOW_CRYPT="YES" PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
test_inplace: inplace
- PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
+ MOUL_ALLOW_CRYPT="YES" PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
doc_html:
- PYTHONPATH="src" $(EPYDOC) -v --html --no-sourcecode \
+ MOUL_ALLOW_CRYPT="YES" PYTHONPATH="src" $(EPYDOC) -v --html --no-sourcecode \
--output="doc/html" moul
doc_html_graph:
Modified: pymoul/trunk/src/moul/crypt/elf.py
===================================================================
--- pymoul/trunk/src/moul/crypt/elf.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/crypt/elf.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -23,6 +23,10 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+import os
+if not os.environ.get("MOUL_ALLOW_CRYPT"):
+ raise ImportError("The import of this module has been restricted")
+
import struct
# TODO: use BinaryFile
Modified: pymoul/trunk/src/moul/crypt/whatdoyousee.py
===================================================================
--- pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/crypt/whatdoyousee.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -28,6 +28,7 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+import os
import struct
from crypttea import LITTLE_ENDIAN
from crypttea import XTEA
@@ -47,6 +48,9 @@
fin - open file descriptor in read only and binary mode
return - string
"""
+ # LLL:
+ if not os.environ.get("MOUL_ALLOW_CRYPT"):
+ raise RuntimeError("The usage of this function has been restricted")
fin.seek(0)
header = fin.read(12)
if header != HEADER:
@@ -81,6 +85,9 @@
fout - out file descriptor in write and binary mode
return - None
"""
+ # LLL:
+ if not os.environ.get("MOUL_ALLOW_CRYPT"):
+ raise RuntimeError("The usage of this function has been restricted")
# XXX: dos format
instr = instr.replace("\n", "\r\n")
fout.seek(0)
Modified: pymoul/trunk/src/moul/file/directory.py
===================================================================
--- pymoul/trunk/src/moul/file/directory.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/file/directory.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -29,8 +29,8 @@
from moul.file.kiimage import KIImageFixer
from moul.file.localization import LocDirParser
from moul.file.plasmalog import PlasmalogZipper
-from moul.file.wdysini import AudioIni
-from moul.file.wdysini import GraphicsIni
+# LLL: from moul.file.wdysini import AudioIni
+# LLL: from moul.file.wdysini import GraphicsIni
LOG = getLogger('moul.file.directory')
@@ -176,8 +176,8 @@
'logzipper' : (PlasmalogZipper, ('log', 'zipped')),
'kiimages' : (KIImageFixer, ('kiimages', 'fixed')),
'avatars' : (KIImageFixer, ('avatars', 'fixed')),
- 'graphicsini' : (GraphicsIni, ('ini',)),
- 'audioini' : (AudioIni, ('ini',)),
+ # LLL: 'graphicsini' : (GraphicsIni, ('ini',)),
+ # LLL: 'audioini' : (AudioIni, ('ini',)),
'chatmover' : (ChatlogMover, ('log', 'chatlogs')),
'chatview' : (ChatlogDirectoryView, ('chatlogs',)),
'zipped' : (DirectoryCount, ('zipped',)),
Modified: pymoul/trunk/src/moul/file/plasmalog.py
===================================================================
--- pymoul/trunk/src/moul/file/plasmalog.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/file/plasmalog.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -28,7 +28,6 @@
from logging import getLogger
from stat import ST_MTIME
-from moul.crypt.elf import decryptElf
from moul.file.utils import fileModTime
@@ -41,7 +40,7 @@
"""Zip plasma logs
"""
_save_patterns = ['*.elf', '*.txt', '*.log', '*.zip', '*.jpg']
-
+
def __init__(self, srcdir, destdir):
self._srcdir = srcdir
self._destdir = destdir
Modified: pymoul/trunk/src/moul/file/tests/test_directory.py
===================================================================
--- pymoul/trunk/src/moul/file/tests/test_directory.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/file/tests/test_directory.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -66,15 +66,15 @@
self.urudir = self.klass(tmpdir)
self.failIf(self.urudir.exists())
- self.failIf(self.urudir.factory('audioini').exists())
- self.failIf(self.urudir.factory('graphicsini').exists())
+ # LLL: self.failIf(self.urudir.factory('audioini').exists())
+ # LLL: self.failIf(self.urudir.factory('graphicsini').exists())
os.mkdir(tmpdir) # XXX
self.urudir.createTree()
self.failUnless(self.urudir.exists())
self.urudir.initializeFactories()
- self.failIf(self.urudir.audioini.exists())
- self.failIf(self.urudir.graphicsini.exists())
+ # LLL: self.failIf(self.urudir.audioini.exists())
+ # LLL: self.failIf(self.urudir.graphicsini.exists())
def test_create(self):
# setup a new, empty testing direcotry
@@ -86,13 +86,13 @@
self.failUnless(self.urudir.exists())
self.urudir.initializeFactories()
- self.failIf(self.urudir.audioini.exists())
- self.urudir.audioini.create()
- self.failUnless(self.urudir.audioini.exists())
+ # LLL: self.failIf(self.urudir.audioini.exists())
+ # LLL: self.urudir.audioini.create()
+ # LLL: self.failUnless(self.urudir.audioini.exists())
- self.failIf(self.urudir.graphicsini.exists())
- self.urudir.graphicsini.create()
- self.failUnless(self.urudir.graphicsini.exists())
+ # LLL: self.failIf(self.urudir.graphicsini.exists())
+ # LLL: self.urudir.graphicsini.create()
+ # LLL: self.failUnless(self.urudir.graphicsini.exists())
class UruGameDirTest(AbstractTest):
klass = UruGameDataDirectory
Modified: pymoul/trunk/src/moul/qt/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -47,7 +47,7 @@
from moul.qt.ui.mainwindow import Ui_MainWindow
from moul.qt.utils import QThreadlet
from moul.qt.utils import QYieldingThreadlet
-from moul.qt.wdysini import IniFileContainer
+# LLL: from moul.qt.wdysini import IniFileContainer
LOG = getLogger('moul.qt')
@@ -86,7 +86,7 @@
# init handlers
self.qcDniTimeNumber = DniTimeNumberContainer(self)
self.qcLocalization = LocalizationContainer(self)
- self.qcIniFile = IniFileContainer(self)
+ # LLL: self.qcIniFile = IniFileContainer(self)
self._ping_init()
#self._systray_init()
self._about_init()
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-21 12:39:25 UTC (rev 275)
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file './src/moul/qt/ui/mainwindow.ui'
#
-# Created: Mon Mar 19 14:34:52 2007
+# Created: Wed Mar 21 13:00:59 2007
# by: PyQt4 UI code generator 4.1.1
#
# WARNING! All changes made in this file will be lost!
@@ -146,6 +146,7 @@
self.tab_settings.setObjectName("tab_settings")
self.tab_sub_settings = QtGui.QTabWidget(self.tab_settings)
+ self.tab_sub_settings.setEnabled(False)
self.tab_sub_settings.setGeometry(QtCore.QRect(0,0,491,411))
self.tab_sub_settings.setObjectName("tab_sub_settings")
@@ -197,7 +198,7 @@
self.hboxlayout2.addWidget(self.groupBox_screenres)
self.groupBox_gra_checkboxes = QtGui.QGroupBox(self.horizontalLayout_4)
- self.groupBox_gra_checkboxes.setEnabled(True)
+ self.groupBox_gra_checkboxes.setEnabled(False)
self.groupBox_gra_checkboxes.setObjectName("groupBox_gra_checkboxes")
self.verticalLayout_28 = QtGui.QWidget(self.groupBox_gra_checkboxes)
@@ -229,7 +230,7 @@
self.hboxlayout2.addWidget(self.groupBox_gra_checkboxes)
self.groupBox_gra_quality = QtGui.QGroupBox(self.tab_graphics)
- self.groupBox_gra_quality.setEnabled(True)
+ self.groupBox_gra_quality.setEnabled(False)
self.groupBox_gra_quality.setGeometry(QtCore.QRect(10,90,451,281))
self.groupBox_gra_quality.setObjectName("groupBox_gra_quality")
@@ -462,7 +463,7 @@
self.tab_audio.setObjectName("tab_audio")
self.groupBox_aud_hardware = QtGui.QGroupBox(self.tab_audio)
- self.groupBox_aud_hardware.setEnabled(True)
+ self.groupBox_aud_hardware.setEnabled(False)
self.groupBox_aud_hardware.setGeometry(QtCore.QRect(10,250,451,111))
self.groupBox_aud_hardware.setObjectName("groupBox_aud_hardware")
@@ -525,7 +526,7 @@
self.cb_aud_eax.setObjectName("cb_aud_eax")
self.groupBox_voicechat = QtGui.QGroupBox(self.tab_audio)
- self.groupBox_voicechat.setEnabled(True)
+ self.groupBox_voicechat.setEnabled(False)
self.groupBox_voicechat.setGeometry(QtCore.QRect(10,190,451,51))
self.groupBox_voicechat.setObjectName("groupBox_voicechat")
@@ -534,7 +535,7 @@
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.setEnabled(False)
self.groupBox_aud_level.setGeometry(QtCore.QRect(10,0,451,181))
self.groupBox_aud_level.setObjectName("groupBox_aud_level")
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.ui
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-21 12:33:30 UTC (rev 274)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-21 12:39:25 UTC (rev 275)
@@ -349,6 +349,9 @@
<string>Settings</string>
</attribute>
<widget class="QTabWidget" name="tab_sub_settings" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
<property name="geometry" >
<rect>
<x>0</x>
@@ -451,7 +454,7 @@
<item>
<widget class="QGroupBox" name="groupBox_gra_checkboxes" >
<property name="enabled" >
- <bool>true</bool>
+ <bool>false</bool>
</property>
<property name="title" >
<string>Other</string>
@@ -511,7 +514,7 @@
</widget>
<widget class="QGroupBox" name="groupBox_gra_quality" >
<property name="enabled" >
- <bool>true</bool>
+ <bool>false</bool>
</property>
<property name="geometry" >
<rect>
@@ -981,7 +984,7 @@
</attribute>
<widget class="QGroupBox" name="groupBox_aud_hardware" >
<property name="enabled" >
- <bool>true</bool>
+ <bool>false</bool>
</property>
<property name="geometry" >
<rect>
@@ -1128,7 +1131,7 @@
</widget>
<widget class="QGroupBox" name="groupBox_voicechat" >
<property name="enabled" >
- <bool>true</bool>
+ <bool>false</bool>
</property>
<property name="geometry" >
<rect>
@@ -1157,7 +1160,7 @@
</widget>
<widget class="QGroupBox" name="groupBox_aud_level" >
<property name="enabled" >
- <bool>true</bool>
+ <bool>false</bool>
</property>
<property name="geometry" >
<rect>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ti...@us...> - 2007-03-25 17:55:35
|
Revision: 279
http://pymoul.svn.sourceforge.net/pymoul/?rev=279&view=rev
Author: tiran
Date: 2007-03-25 10:55:31 -0700 (Sun, 25 Mar 2007)
Log Message:
-----------
Updated pod age code
Modified Paths:
--------------
pymoul/trunk/Makefile.in
pymoul/trunk/src/moul/time/podage.py
Modified: pymoul/trunk/Makefile.in
===================================================================
--- pymoul/trunk/Makefile.in 2007-03-23 17:40:11 UTC (rev 278)
+++ pymoul/trunk/Makefile.in 2007-03-25 17:55:31 UTC (rev 279)
@@ -103,5 +103,8 @@
serverlist:
PYTHONPATH="src" $(PYTHON) src/moul/server/serverlist.py
+podage:
+ PYTHONPATH="src" $(PYTHON) src/moul/time/podage.py
+
infrastructure: clean inplace ui languages xxxreport propset fixlineendings doc_html serverlist
Modified: pymoul/trunk/src/moul/time/podage.py
===================================================================
--- pymoul/trunk/src/moul/time/podage.py 2007-03-23 17:40:11 UTC (rev 278)
+++ pymoul/trunk/src/moul/time/podage.py 2007-03-25 17:55:31 UTC (rev 279)
@@ -101,7 +101,12 @@
registerPodAge = _podRegistry.register
def listPodAges():
- return [name for name in _podRegistry if name]
+ """List pod ages sorted by offset
+ """
+ dec = [(age.offset, name)
+ for name, age in _podRegistry.items() if name]
+ dec.sort()
+ return [v[1] for v in dec]
class PodAgeInformation(dict):
"""Information about a pod age
@@ -113,6 +118,7 @@
for key in ('name', 'gatenumber', 'offset'):
if key not in self:
raise KeyError(key)
+ self['offset_td'] = timedelta(seconds=self['offset']*PAHRTAHVO_SEC)
def __getattribute__(self, name):
if name in self:
@@ -155,7 +161,7 @@
"""
if startdt is None:
startdt = utcnow()
- base_dt = BASE_DT + self._age.offset
+ base_dt = BASE_DT + self._age.offset_td
# calculate completed cycles since base_dt
sec = td2sec(startdt - base_dt)
cycles = floor(sec / PODDAY_SEC)
@@ -178,7 +184,7 @@
@return: Iterator that yields (number, date)
@rtype: iterator (int, datetime)
"""
- dt = self._base + PODDAY_TD
+ dt = self._base #+ PODDAY_TD
n = 0
while True:
yield (n, dt)
@@ -187,34 +193,21 @@
# pod ages
registerPodAge(PodAgeInformation(
- name = 'Dereno',
- gatenumber = 25,
- offset = timedelta(seconds=1*PAHRTAHVO_SEC)
- ))
-
-registerPodAge(PodAgeInformation(
name = 'Negilahn',
gatenumber = 18,
- offset = timedelta(seconds=0)
+ offset = 0, # Pahrtahvotee
))
registerPodAge(PodAgeInformation(
- name = 'Payiferen',
- gatenumber = -1,
- offset = timedelta(seconds=-1)
+ name = 'Dereno',
+ gatenumber = 25,
+ offset = 1, # Pahrtahvo
))
-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',
+def forumTimeTable(limit=5, 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
@@ -223,18 +216,20 @@
print "[spoiler=%s]" % tz
for age in listPodAges():
pat = PodAgeTime(age)
+ print
print age
- print "--------------------------------------------------------------------"
+ print 20 * "-"
for n, dt in iter(pat):
if n > limit:
break
- dni = DniTime.fromUTC(dt)
+ #dni = DniTime.fromUTC(dt)
ldt = normalizeTZ(tz, dt)
- print "Earth: %s, D'ni: %s, %i" % (ldt.strftime(fmt),
- str(dni), dni.pahrtahvo)
+ print ldt.strftime(fmt)
+ #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"):
+def allTzList(limit=50, fmt="%Y-%m-%d %H:%M %Z"):
"""Small utility function to create a nice list for the forum
"""
from pytz import common_timezones
@@ -251,8 +246,9 @@
print tzname
for age in listPodAges():
pat = PodAgeTime(age)
+ print >>fd
print >>fd, age
- print >>fd, "--------------------------------------------------------------------"
+ print >>fd, 20*"-"
for n, dt in iter(pat):
if n > limit:
break
@@ -266,5 +262,8 @@
fd.close()
if __name__ == '__main__':
- forumTimeTable(tzlist=('UTC',))
+ #forumTimeTable(tzlist=('CET',))
+ #forumTimeTable(tzlist=('UTC',))
+ forumTimeTable(tzlist=('US/Pacific',))
+ #forumTimeTable()
#allTzList()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|