[Pymoul-svn] SF.net SVN: pymoul: [63] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
From: <ti...@us...> - 2007-01-23 22:53:02
|
Revision: 63 http://pymoul.svn.sourceforge.net/pymoul/?rev=63&view=rev Author: tiran Date: 2007-01-23 14:53:02 -0800 (Tue, 23 Jan 2007) Log Message: ----------- First version that actually parses a real life graphics.ini file TODO: lot's of checks Modified Paths: -------------- pymoul/trunk/src/moul/config/__init__.py pymoul/trunk/src/moul/file/wdysini.py pymoul/trunk/src/moul/qt/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui Modified: pymoul/trunk/src/moul/config/__init__.py =================================================================== --- pymoul/trunk/src/moul/config/__init__.py 2007-01-23 22:52:09 UTC (rev 62) +++ pymoul/trunk/src/moul/config/__init__.py 2007-01-23 22:53:02 UTC (rev 63) @@ -17,11 +17,8 @@ # """Configuration package """ -__all__ = ('setMoulInstallDir', 'startMOUL', 'getMoulDir') - import os import sys -from moul.log import getLogger # a program under py2exe is sys.frozen __FROZEN__ = bool(getattr(sys, 'frozen', False)) Modified: pymoul/trunk/src/moul/file/wdysini.py =================================================================== --- pymoul/trunk/src/moul/file/wdysini.py 2007-01-23 22:52:09 UTC (rev 62) +++ pymoul/trunk/src/moul/file/wdysini.py 2007-01-23 22:53:02 UTC (rev 63) @@ -21,6 +21,9 @@ __version__ = "$Id$" __revision__ = "$Revision$" +import os +import shutil + from moul.crypt.whatdoyousee import decryptWDYS from moul.crypt.whatdoyousee import encryptWDYS @@ -281,23 +284,57 @@ return self._reverse_vm[(w, h)] def widths(self): + """List of available widths + """ return [w for w, h, wr, hr in self._videomodes] def heights(self): + """List of available heights + """ return [h for w, h, wr, hr in self._videomodes] videoModes = _VideoModes() class ConfFile(object): _options = {} + _filename = None def __init__(self): self.clear() + self._fpath = None def clear(self): self._filedata = {} self._newdata = {} self._order = [] + + def open(self, path): + """Open encrypted file at 'path' + """ + if self._fpath is not None: + raise ValueError("File already open") + self._fpath = os.path.join(path, self._filename) + self.parseEncFile(self._fpath) + + def write(self): + """Write data to file + + The write method uses the savest way possible. The old file is backed + up, the new data is written to another file and at last the original + file is replaced with the new file. + + WINDOWS: os.rename() can't replace the file in place under Windows. + The final operation is not atomic. :( + """ + orig = self._fpath + if orig is None: + raise ValueError("Full path not set") + bak = orig + ".bak" + new = orig + ".new" + shutils.copyfile(orig, bak) # make backup + self.writeEncFile(new) # write new + os.unlink(orig) # stupid windows can't perform an atomic rename + os.rename(new, orig) # move new to orig def parseEncFile(self, fd_name): """Read and parse file (fd or file name) @@ -308,7 +345,8 @@ else: fd = fd_name data = decryptWDYS(fd) - return self.parseString(data) + fd.close() + self.parseString(data) def parseString(self, s): """Parse string with file contents @@ -370,9 +408,21 @@ else: fd = fd_name data = self.writeString() - return encryptWDYS(data, fd) + encryptWDYS(data, fd) + fd.close() + def _get(self, name): + """get descriptor helper + """ + return self._newdata[name] + + def _set(self, name, value): + """set descriptor helper + """ + self._newdata[name] = value + class AudioIni(ConfFile): + _filename = 'audio.ini' _options = { 'Audio.Initialize' : (BoolString, Constrain()), 'Audio.UseEAX' : (BoolString, Constrain()), @@ -388,6 +438,7 @@ } class GraphicsIni(ConfFile): + _filename = 'graphics.ini' _options = { 'Graphics.Width' : (int, Contains(videoModes.widths())), 'Graphics.Height' : (int, Contains(videoModes.heights())), @@ -413,12 +464,6 @@ self._newdata['Graphics.Width'] = w self._newdata['Graphics.Height'] = h - def _get(self, name): - return self._newdata[name] - - def _set(self, name, value): - self._newdata[name] = value - screenres = property(_getScreenRes, _setScreenRes, doc="Screen resolution by index") windowed = property(lambda self: self._get('Graphics.Windowed'), lambda self, v: self._set('Graphics.Windowed', v), Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-23 22:52:09 UTC (rev 62) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-23 22:53:02 UTC (rev 63) @@ -32,14 +32,15 @@ from PyQt4.QtCore import SIGNAL from moul.qt.ui.mainwindow import Ui_MainWindow -from moul.time.cavern import CavernTime -from moul.file.wdysini import AudioIni +from moul.config import lookupDir +#from moul.file.wdysini import AudioIni from moul.file.wdysini import GraphicsIni from moul.file.wdysini import videoModes +from moul.log import getLogger +from moul.log import signalLogDecorator from moul.server.ping import ServerList from moul.server.ping import isSocketError -from moul.log import getLogger -from moul.log import signalLogDecorator +from moul.time.cavern import CavernTime LOG = getLogger('moul.qt') @@ -98,19 +99,36 @@ def _graphics_init(self): """init graphics tab """ + inipath = lookupDir('ini') + self._graphics_ini = gini = GraphicsIni() + gini.open(inipath) + length = len(videoModes) - 1 self.sl_gra_screenres.setMaximum(length) + + self.on_graphicsini_loaded(gini) # XXX: hard coded for testing purpose def on_graphicsini_loaded(self, gini): """SIGNAL: graphicsIniLoaded(file) """ self.sl_gra_screenres.setValue(gini.screenres) + self.sl_gra_quality.setValue(gini.quality) + self.sl_gra_texture.setValue(gini.texture) + self.sl_gra_antialias.setValue(gini.antialias) + self.sl_gra_anisotropic.setValue(gini.anisotropic) + # TODO: self.sl_gra_shadow.setValue(gini.shadow) + self.cb_gra_windowed.setChecked(gini.windowed) + self.cb_gra_vsync.setChecked(gini.vsync) + self.cb_gra_shadow.setChecked(gini.shadow_enabled) @signalLogDecorator(LOG) @pyqtSignature("int") def on_sl_gra_screenres_valueChanged(self, idx): """SIGNAL: valueChanged (int) """ + # XXX: fixme + txt = videoModes.getVidModeHuman(idx) + self.lb_screenres.setText(QtCore.QString(txt)) @signalLogDecorator(LOG) @pyqtSignature("int") Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-01-23 22:52:09 UTC (rev 62) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-01-23 22:53:02 UTC (rev 63) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'src\moul\qt\ui\mainwindow.ui' # -# Created: Fri Jan 19 17:47:21 2007 +# Created: Tue Jan 23 23:44:34 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -219,17 +219,17 @@ self.label_13.setObjectName("label_13") self.vboxlayout4.addWidget(self.label_13) - self.sl_gra_aa = QtGui.QSlider(self.verticalLayout_5) - self.sl_gra_aa.setMinimum(1) - self.sl_gra_aa.setMaximum(4) - self.sl_gra_aa.setPageStep(1) - self.sl_gra_aa.setSliderPosition(1) - self.sl_gra_aa.setTracking(False) - self.sl_gra_aa.setOrientation(QtCore.Qt.Horizontal) - self.sl_gra_aa.setTickPosition(QtGui.QSlider.TicksBelow) - self.sl_gra_aa.setTickInterval(1) - self.sl_gra_aa.setObjectName("sl_gra_aa") - self.vboxlayout4.addWidget(self.sl_gra_aa) + self.sl_gra_antialias = QtGui.QSlider(self.verticalLayout_5) + self.sl_gra_antialias.setMinimum(1) + self.sl_gra_antialias.setMaximum(4) + self.sl_gra_antialias.setPageStep(1) + self.sl_gra_antialias.setSliderPosition(1) + self.sl_gra_antialias.setTracking(False) + self.sl_gra_antialias.setOrientation(QtCore.Qt.Horizontal) + self.sl_gra_antialias.setTickPosition(QtGui.QSlider.TicksBelow) + self.sl_gra_antialias.setTickInterval(1) + self.sl_gra_antialias.setObjectName("sl_gra_antialias") + self.vboxlayout4.addWidget(self.sl_gra_antialias) self.hboxlayout2 = QtGui.QHBoxLayout() self.hboxlayout2.setMargin(0) Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.ui =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-01-23 22:52:09 UTC (rev 62) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-01-23 22:53:02 UTC (rev 63) @@ -433,7 +433,7 @@ </widget> </item> <item> - <widget class="QSlider" name="sl_gra_aa" > + <widget class="QSlider" name="sl_gra_antialias" > <property name="minimum" > <number>1</number> </property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |