[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.
|