[Pymoul-svn] SF.net SVN: pymoul: [176] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-02-17 21:49:31
|
Revision: 176
http://pymoul.svn.sourceforge.net/pymoul/?rev=176&view=rev
Author: tiran
Date: 2007-02-17 13:49:15 -0800 (Sat, 17 Feb 2007)
Log Message:
-----------
Some optimizations and fine tunings on the D'ni clock
Modified Paths:
--------------
pymoul/trunk/src/moul/qt/dninumbers.py
pymoul/trunk/src/moul/qt/ui/mainwindow.py
pymoul/trunk/src/moul/qt/ui/mainwindow.ui
pymoul/trunk/src/moul/time/dni.py
Modified: pymoul/trunk/src/moul/qt/dninumbers.py
===================================================================
--- pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-17 18:10:20 UTC (rev 175)
+++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-17 21:49:15 UTC (rev 176)
@@ -33,6 +33,7 @@
from moul.time.cavern import CavernTime
from moul.time.dni import DniTime
from moul.time.dni import FACTOR_SP
+from moul.time.dni import decimal2dni
from moul.log import getLogger
from moul.qt.utils import QNamespaceContainer
from moul.qt.utils import QSignalLoggerMetaclass
@@ -52,17 +53,16 @@
def initialize(self):
# D'ni numbers
self.dninumbers = QDniNumbers()
+ self.dnitime = DniTime()
self.setup_dniclock()
self.setup_dninumbers()
-
# D'ni date and time
- self.dnitime = DniTime()
- self.on_dnitimer_timeout()
self.dnitime_timer = QtCore.QTimer(self.context)
self.dnitime_timer.setInterval(FACTOR_SP*1000)
self.connect(self.dnitime_timer, SIGNAL('timeout()'),
self.on_dnitimer_timeout)
self.dnitime_timer.start()
+ self.on_dnitimer_timeout(True)
# time zone
self.caverntime = CavernTime()
@@ -104,13 +104,14 @@
@pyqtSignature("")
@skipLogging
- def on_dnitimer_timeout(self):
+ def on_dnitimer_timeout(self, initialize=False):
"""
SIGNAL: QTimer timeout
"""
- dni = self.dnitime.fromUTC() # set to now
+ self.dnitime.fromUTC() # set to now
self.context.le_dnitime.setText(str(self.dnitime)+", bell: %s" %
self.dnitime.pahrtovo)
+ self.setClockByDnidate(self.dnitime, initialize)
def setup_dniclock(self):
height = 15
@@ -140,18 +141,35 @@
self.yahrl.setPos(widthyahr, height+space)
self.yahrr = QDniNumberRing(dniclock, 0, 24, height, 'right')
self.yahrr.setPos(widthyahr+widthl, height+space)
-
- for i, ring in enumerate((self.hahrl, self.hahrm, self.hahrr, self.vailee,
- self.yahrl, self.yahrr)):
- ring.setNumber(i)
-
for i, name in enumerate(('gahrtahvo', 'tahvo', 'gorahn', 'prorahn')):
ring = QDniNumberRing(dniclock, 0, 24, height, cyclic=True)
setattr(self, name, ring)
ring.setPos((width+space)*i+width/2, 0)
- ring.setNumber(i)
+ #ring.setNumber(i)
+ #for i, ring in enumerate((self.hahrl, self.hahrm, self.hahrr, self.vailee,
+ #self.yahrl, self.yahrr)):
+ #ring.setNumber(i)
+ def setClockByDnidate(self, dnitime, initialize=False):
+ if dnitime.prorahn == self.prorahn.get() and not initialize:
+ return
+ hahr = decimal2dni(dnitime.hahr, digits=3)
+ self.hahrl.setNumber(hahr[0])
+ self.hahrm.setNumber(hahr[1])
+ self.hahrr.setNumber(hahr[2])
+
+ self.vailee.setNumber(dnitime.vailee)
+
+ yahr = decimal2dni(dnitime.yahr, digits=2)
+ self.yahrl.setNumber(yahr[0])
+ self.yahrr.setNumber(yahr[1])
+
+ self.gahrtahvo.setNumber(dnitime.gahrtahvo)
+ self.tahvo.setNumber(dnitime.tahvo)
+ self.gorahn.setNumber(dnitime.gorahn)
+ self.prorahn.setNumber(dnitime.prorahn)
+
def setup_dninumbers(self):
# may change!
widget = self.context.gridLayout_3
@@ -360,18 +378,7 @@
def setByDecimal(self, number, digits=1):
"""Set numbers by decial value with minimum digits
"""
- numbers = []
- pos = 0
- while True:
- div = 25**pos
- cur = (number / div) % 25
- number -= cur * div
- pos+=1
- numbers.insert(0, cur)
- if not number:
- break
- while len(numbers) < digits:
- numbers.insert(0, 0)
+ numbers = decimal2dni(number, digits)
return self.setNumbers(*numbers)
def setNumbers(self, *args):
@@ -458,11 +465,11 @@
>>> example = QDniNumberRing(scene, start=1, stop=25)
>>> example.setPosition(24)
- <Pixmap Graphics Item 24>
+ 24
>>> example.next()
- <Pixmap Graphics Item 25>
+ 25
>>> example.next()
- <Pixmap Graphics Item 25>
+ 1
"""
__slots__ = ('_elements', '_first', '_last', '_pos')
@@ -484,6 +491,9 @@
def __getitem__(self, pos):
return self._elements[pos - self._first]
+ def get(self):
+ return self._pos
+
def next(self):
"""Get next item
@@ -497,7 +507,7 @@
self._pos = pos
element = self[pos]
element.show()
- return element
+ return pos
def setNumber(self, nr):
"""Set current number to nr
@@ -509,7 +519,7 @@
element = self[nr]
element.show()
self._pos = nr
- return element
+ return nr
def setPos(self, xpos, y=None):
"""Set position of element
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-17 18:10:20 UTC (rev 175)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-17 21:49:15 UTC (rev 176)
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file './src/moul/qt/ui/mainwindow.ui'
#
-# Created: Sat Feb 17 18:51:48 2007
+# Created: Sat Feb 17 22:12:04 2007
# by: PyQt4 UI code generator 4.1.1
#
# WARNING! All changes made in this file will be lost!
@@ -142,11 +142,11 @@
self.hboxlayout1.addItem(spacerItem3)
self.gb_caverntime = QtGui.QGroupBox(self.tab_tasks)
- self.gb_caverntime.setGeometry(QtCore.QRect(10,180,451,101))
+ 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(10,20,431,74))
+ self.gridLayout.setGeometry(QtCore.QRect(10,20,431,61))
self.gridLayout.setObjectName("gridLayout")
self.gridlayout1 = QtGui.QGridLayout(self.gridLayout)
@@ -203,20 +203,20 @@
self.gridlayout1.addItem(spacerItem4,0,3,1,1)
self.gb_dnitime = QtGui.QGroupBox(self.tab_tasks)
- self.gb_dnitime.setGeometry(QtCore.QRect(10,280,451,121))
+ self.gb_dnitime.setGeometry(QtCore.QRect(10,270,451,131))
self.gb_dnitime.setObjectName("gb_dnitime")
+ self.gv_dniclock = QtGui.QGraphicsView(self.gb_dnitime)
+ self.gv_dniclock.setGeometry(QtCore.QRect(10,20,150,55))
+ self.gv_dniclock.setAcceptDrops(False)
+ self.gv_dniclock.setFrameShadow(QtGui.QFrame.Plain)
+ self.gv_dniclock.setObjectName("gv_dniclock")
+
self.le_dnitime = QtGui.QLineEdit(self.gb_dnitime)
- self.le_dnitime.setGeometry(QtCore.QRect(200,20,241,25))
+ self.le_dnitime.setGeometry(QtCore.QRect(10,90,271,25))
self.le_dnitime.setEchoMode(QtGui.QLineEdit.Normal)
self.le_dnitime.setReadOnly(True)
self.le_dnitime.setObjectName("le_dnitime")
-
- self.gv_dniclock = QtGui.QGraphicsView(self.gb_dnitime)
- self.gv_dniclock.setGeometry(QtCore.QRect(10,20,181,94))
- self.gv_dniclock.setAcceptDrops(False)
- self.gv_dniclock.setFrameShadow(QtGui.QFrame.Plain)
- self.gv_dniclock.setObjectName("gv_dniclock")
self.tabwidget.addTab(self.tab_tasks,"")
self.tab_settings = QtGui.QWidget()
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.ui
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-02-17 18:10:20 UTC (rev 175)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-02-17 21:49:15 UTC (rev 176)
@@ -349,7 +349,7 @@
<x>10</x>
<y>180</y>
<width>451</width>
- <height>101</height>
+ <height>91</height>
</rect>
</property>
<property name="title" >
@@ -361,7 +361,7 @@
<x>10</x>
<y>20</y>
<width>431</width>
- <height>74</height>
+ <height>61</height>
</rect>
</property>
<layout class="QGridLayout" >
@@ -470,44 +470,44 @@
<property name="geometry" >
<rect>
<x>10</x>
- <y>280</y>
+ <y>270</y>
<width>451</width>
- <height>121</height>
+ <height>131</height>
</rect>
</property>
<property name="title" >
<string>D'ni time</string>
</property>
- <widget class="QLineEdit" name="le_dnitime" >
+ <widget class="QGraphicsView" name="gv_dniclock" >
<property name="geometry" >
<rect>
- <x>200</x>
+ <x>10</x>
<y>20</y>
- <width>241</width>
- <height>25</height>
+ <width>150</width>
+ <height>55</height>
</rect>
</property>
- <property name="echoMode" >
- <enum>QLineEdit::Normal</enum>
+ <property name="acceptDrops" >
+ <bool>false</bool>
</property>
- <property name="readOnly" >
- <bool>true</bool>
+ <property name="frameShadow" >
+ <enum>QFrame::Plain</enum>
</property>
</widget>
- <widget class="QGraphicsView" name="gv_dniclock" >
+ <widget class="QLineEdit" name="le_dnitime" >
<property name="geometry" >
<rect>
<x>10</x>
- <y>20</y>
- <width>181</width>
- <height>94</height>
+ <y>90</y>
+ <width>271</width>
+ <height>25</height>
</rect>
</property>
- <property name="acceptDrops" >
- <bool>false</bool>
+ <property name="echoMode" >
+ <enum>QLineEdit::Normal</enum>
</property>
- <property name="frameShadow" >
- <enum>QFrame::Plain</enum>
+ <property name="readOnly" >
+ <bool>true</bool>
</property>
</widget>
</widget>
Modified: pymoul/trunk/src/moul/time/dni.py
===================================================================
--- pymoul/trunk/src/moul/time/dni.py 2007-02-17 18:10:20 UTC (rev 175)
+++ pymoul/trunk/src/moul/time/dni.py 2007-02-17 21:49:15 UTC (rev 176)
@@ -151,6 +151,23 @@
return checker
return wrapper
+def decimal2dni(number, digits=1):
+ """Convert decimal number to dni number
+ """
+ numbers = []
+ pos = 0
+ while True:
+ div = 25**pos
+ cur = (number / div) % 25
+ number -= cur * div
+ pos+=1
+ numbers.insert(0, cur)
+ if not number:
+ break
+ while len(numbers) < digits:
+ numbers.insert(0, 0)
+ return numbers
+
class DniTime(object):
"""D'ni time representation
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|