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