[Pymoul-svn] SF.net SVN: pymoul: [177] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
From: <ti...@us...> - 2007-02-19 16:36:33
|
Revision: 177 http://pymoul.svn.sourceforge.net/pymoul/?rev=177&view=rev Author: tiran Date: 2007-02-19 08:36:31 -0800 (Mon, 19 Feb 2007) Log Message: ----------- Enhanced D'ni clock Modified Paths: -------------- pymoul/trunk/src/moul/qt/dninumbers.py pymoul/trunk/src/moul/qt/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui pymoul/trunk/src/moul/time/utils.py Modified: pymoul/trunk/src/moul/qt/dninumbers.py =================================================================== --- pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-17 21:49:15 UTC (rev 176) +++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-19 16:36:31 UTC (rev 177) @@ -23,6 +23,7 @@ __revision__ = "$Revision$" import operator +import math import sys from PyQt4 import QtCore from PyQt4 import QtGui @@ -53,28 +54,42 @@ def initialize(self): # D'ni numbers self.dninumbers = QDniNumbers() - self.dnitime = DniTime() - self.setup_dniclock() + self.caverntime = CavernTime() self.setup_dninumbers() + # D'ni date and time + view = self.gv_dniclock + self.clockscene = QDniClockScene(view.parent()) + view.setScene(self.clockscene) + view.show() 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) + self.dnitime_timer.setInterval(FACTOR_SP*1000+60) # XXX: smooth # time zone - self.caverntime = CavernTime() - self.timezone_update() # TODO: change timer from every second to every minute self.timezone_timer = QtCore.QTimer(self.context) self.timezone_timer.setInterval(1000) # 1 sec # TODO: needs optimization? run only when timer tab is active self.connect(self.timezone_timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) - self.timezone_timer.start() + self.connect(self.dnitime_timer, SIGNAL('timeout()'), + self.clockscene.timeEvent) + self.connect(self.context, SIGNAL("timerEnable(bool)"), + self.on_timer_timerEnable) + self.emit(SIGNAL("timerEnable(bool)"), True) + @pyqtSignature("bool") + def on_timer_timerEnable(self, value=True): + value = bool(value) + for timer in (self.dnitime_timer, self.timezone_timer): + if value == timer.isActive(): + pass + elif value: + timer.emit(SIGNAL("timeout()")) # emit to update + timer.start() + else: + timer.stop() + def timezone_update(self): """ Update datetime widgets @@ -102,74 +117,6 @@ self.dt_cavern.setDateTime(ct['cavern']) self.dt_pacific.setDateTime(ct['pacific']) - @pyqtSignature("") - @skipLogging - def on_dnitimer_timeout(self, initialize=False): - """ - SIGNAL: QTimer timeout - """ - 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 - space = 5 - width = self.dninumbers.get(0, height=height).width() - widthl = self.dninumbers.getLeft(0, height=height).width() - widthm = self.dninumbers.getMiddle(0, height=height).width() - widthr = self.dninumbers.getRight(0, height=height).width() - widthhahr = widthl + widthm + widthr - widthyahr = widthhahr + 2 * space + width - - view = self.gv_dniclock - dniclock = self.dniclock = QtGui.QGraphicsScene(view.parent()) - view.setScene(self.dniclock) - view.show() - - self.hahrl = QDniNumberRing(dniclock, 0, 24, height, 'left') - self.hahrl.setPos(0, height+space) - self.hahrm = QDniNumberRing(dniclock, 0, 24, height, 'middle') - self.hahrm.setPos(widthl, height+space) - self.hahrr = QDniNumberRing(dniclock, 0, 24, height, 'right') - self.hahrr.setPos(widthl+widthm, height+space) - - self.vailee = QDniNumberRing(dniclock, 1, 10, height) - self.vailee.setPos(widthhahr+space, height+space) - self.yahrl = QDniNumberRing(dniclock, 0, 10, height, 'left') - self.yahrl.setPos(widthyahr, height+space) - self.yahrr = QDniNumberRing(dniclock, 0, 24, height, 'right') - self.yahrr.setPos(widthyahr+widthl, height+space) - 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) - - #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 @@ -222,8 +169,6 @@ dnipix.setPosition(grid, 5, 0, QtCore.Qt.AlignRight) grid.addWidget(dnipix, 5, 0, 1, 2) -QtGui.QPixmapCache.setCacheLimit(QtGui.QPixmapCache.cacheLimit() + 1024) - class QDniNumbers(object): """Qt D'ni Number helper class @@ -232,6 +177,9 @@ efficency drawbacks """ __slots__ = () + + QtGui.QPixmapCache.setCacheLimit(QtGui.QPixmapCache.cacheLimit() + 1024) + # w, h = 67, 55 _rectleft = QtCore.QRect(0, 0, 60, 55) # with right border _rectright = QtCore.QRect(12, 0, 55, 55) # w/o left border @@ -257,7 +205,8 @@ else: return pm - def get(self, nr, height=None): + @classmethod + def get(cls, nr, height=None): """Get pixmap by number and scale it @param nr: number (0-25, 'cyclic') @@ -267,7 +216,7 @@ @return: (scaled) pixmap @rtype: QPixmap instance """ - pm = self._findCache(nr, height, 'full') + pm = cls._findCache(nr, height, 'full') if pm: return pm @@ -277,20 +226,21 @@ nr = int(nr) fname = "%02i.png" % nr - if nr not in self._valid: + if nr not in cls._valid: raise ValueError(nr) # lookup non scaled - pm = self._findCache(nr, None, 'full') + pm = cls._findCache(nr, None, 'full') if not pm: pm = QtGui.QPixmap(":/dninumbers/resources/dninumbers/%s" % fname) - self._insertCache(nr, None, 'full', pm) + cls._insertCache(nr, None, 'full', pm) - spm = self._scale(pm, height) - self._insertCache(nr, height, 'full', spm) + spm = cls._scale(pm, height) + cls._insertCache(nr, height, 'full', spm) return spm - def getLeft(self, nr, height=None): + @classmethod + def getLeft(cls, nr, height=None): """Get pixmap for left digit of combined number @param nr: number (0-25, 'cyclic') @@ -300,15 +250,16 @@ @return: (scaled) pixmap @rtype: QPixmap instance """ - pm = self._findCache(nr, height, 'left') + pm = cls._findCache(nr, height, 'left') if pm: return pm - pm = self.get(nr).copy(self._rectleft) - spm = self._scale(pm, height) - self._insertCache(nr, height, 'left', spm) + pm = cls.get(nr).copy(cls._rectleft) + spm = cls._scale(pm, height) + cls._insertCache(nr, height, 'left', spm) return spm - def getRight(self, nr, height=None): + @classmethod + def getRight(cls, nr, height=None): """Get pixmap for right digit of combined number @param nr: number (0-25, 'cyclic') @@ -318,15 +269,16 @@ @return: (scaled) pixmap @rtype: QPixmap instance """ - pm = self._findCache(nr, height, 'right') + pm = cls._findCache(nr, height, 'right') if pm: return pm - pm = self.get(nr).copy(self._rectright) - spm = self._scale(pm, height) - self._insertCache(nr, height, 'right', spm) + pm = cls.get(nr).copy(cls._rectright) + spm = cls._scale(pm, height) + cls._insertCache(nr, height, 'right', spm) return spm - def getMiddle(self, nr, height=None): + @classmethod + def getMiddle(cls, nr, height=None): """Get pixmap for middle digit of combined number @param nr: number (0-25, 'cyclic') @@ -336,31 +288,285 @@ @return: (scaled) pixmap @rtype: QPixmap instance """ - pm = self._findCache(nr, height, 'middle') + pm = cls._findCache(nr, height, 'middle') if pm: return pm - pm = self.get(nr).copy(self._rectmiddle) - spm = self._scale(pm, height) - self._insertCache(nr, height, 'middle', spm) + pm = cls.get(nr).copy(cls._rectmiddle) + spm = cls._scale(pm, height) + cls._insertCache(nr, height, 'middle', spm) return spm - def getFactory(self, model='full'): + @classmethod + def getFactory(cls, model='full'): """Get factory method for model """ if model == 'full': - return self.get + return cls.get elif model == 'left': - return self.getLeft + return cls.getLeft elif model == 'right': - return self.getRight + return cls.getRight elif model == 'middle': - return self.getMiddle + return cls.getMiddle else: raise ValueError(model) +class QDniNumberRing(object): + """Qt D'ni number graphics item ring + + The class emulates a ring structure similar to a clock. Internally it + stores a list of QGraphicsPixmapItem assossiacted with a scene. All items + are hidden by default and at position (0,0) + + >>> example = QDniNumberRing(scene, start=1, stop=25) + >>> example.setPosition(24) + 24 + >>> example.next() + 25 + >>> example.next() + 1 + """ + __slots__ = ('_elements', '_first', '_last', '_pos') + + def __init__(self, scene, start=0, stop=24, height=None, + model='full', cyclic=False): + factory = QDniNumbers().getFactory(model) + self._elements = [] + self._first = start + self._last = stop + self._pos = start + for i in range(start, stop+1): + if cyclic and i == 0: + i = 'cyclic' + pmitem = QtGui.QGraphicsPixmapItem(factory(i, height=height)) + pmitem.hide() + scene.addItem(pmitem) + self._elements.append(pmitem) + + def __getitem__(self, pos): + return self._elements[pos - self._first] + + def get(self): + return self._pos + + def next(self): + """Get next item + + Hides the current item and returns the next item after it is made visible + """ + pos = self._pos + self[pos].hide() + pos += 1 + if pos > self._last: + pos = self._first + self._pos = pos + element = self[pos] + element.show() + return pos + + def setNumber(self, nr): + """Set current number to nr + + Also hides all elements before returning the current element + """ + for element in self._elements: + element.hide() + element = self[nr] + element.show() + self._pos = nr + return nr + + def setPos(self, xpos, y=None): + """Set position of element + """ + for element in self._elements: + if y is not None: + element.setPos(xpos, y) + else: + element.setPos(xpos) + + def moveBy(self, dx, dy): + """Move every elemenet + """ + for element in self._elements: + element.moveBy(dx, dy) + +class QDniClockScene(QtGui.QGraphicsScene): + """Graphics scene for D'ni clock + """ + def __init__(self, parent=None): + QtGui.QGraphicsScene.__init__(self, parent) + self.dninumbers = QDniNumbers() + self.dnitime = DniTime() + + height = 15 + space = 5 + xoff = 50 + yoff = 20 + + # set widths from pixmaps + width = self.dninumbers.get(0, height=height).width() + widthl = self.dninumbers.getLeft(0, height=height).width() + widthm = self.dninumbers.getMiddle(0, height=height).width() + widthr = self.dninumbers.getRight(0, height=height).width() + widthhahr = widthl + widthm + widthr + widthyahr = widthhahr + 2 * space + width + + # setup clock D'ni numbers + self.hahrl = QDniNumberRing(self, 0, 24, height, 'left') + self.hahrl.setPos(0, height+space) + self.hahrm = QDniNumberRing(self, 0, 24, height, 'middle') + self.hahrm.setPos(widthl, height+space) + self.hahrr = QDniNumberRing(self, 0, 24, height, 'right') + self.hahrr.setPos(widthl+widthm, height+space) + self.vailee = QDniNumberRing(self, 1, 10, height) + self.vailee.setPos(widthhahr+space, height+space) + self.yahrl = QDniNumberRing(self, 0, 10, height, 'left') + self.yahrl.setPos(widthyahr, height+space) + self.yahrr = QDniNumberRing(self, 0, 24, height, 'right') + self.yahrr.setPos(widthyahr+widthl, height+space) + for i, name in enumerate(('gahrtahvo', 'tahvo', 'gorahn', 'prorahn')): + ring = QDniNumberRing(self, 0, 24, height, cyclic=True) + setattr(self, name, ring) + ring.setPos((width+space)*i+width/2, 0) + + for value in self.__dict__.values(): + if isinstance(value, QDniNumberRing): + value.moveBy(xoff, yoff) + + # clock text + # XXX: parent? + self.clocktext = QtGui.QGraphicsTextItem(None, self) + self.clocktext.setPos(0, yoff+2*height+2*space) + # circular day clock + self.circle = QDniClockCircle(None, self) + self.circle.setPos(300, 3) + + # initialize view + self.timeEvent(initialize=True) + + def setClockByDnidate(self, dnitime, initialize=False): + if dnitime.prorahn == self.prorahn.get() and not initialize: + return + + self.clocktext.setPlainText(str(self.dnitime)) + + self.circle.setPahrtovo(dnitime.pahrtovo + dnitime.tahvo / 5.0) + + 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) + + @pyqtSignature("") + @skipLogging + def timeEvent(self, initialize=False): + """ + SIGNAL: QTimer timeout + """ + self.dnitime.fromUTC() # set to now + self.setClockByDnidate(self.dnitime, initialize) + +class QDniClockCircle(QtGui.QGraphicsItem): + """Circular part of the D'ni clock + """ + r = 45.0 # radios of circle + rdot = 3.0 # radius of dots + rinner = 5.0 # radius of inner circle + outrect = QtCore.QRectF(0.0, 0.0, 2.0*r, 2.0*r) + center = (r, r) + angel = 2.0*math.pi/25.0 + offset = 0.5 * math.pi + 5.0 * angel + + def __init__(self, parent=None, scene=None): + QtGui.QGraphicsItem.__init__(self, parent, scene) + self._pahrtovo = 0.0 + self._dni =QDniNumbers() + + def boundingRect(self): + return self.outrect + + def setPahrtovo(self, value): + if value != self._pahrtovo: + self._pahrtovo = value + self.update() + + def paint(self, painter, option, widget): + # pie pieces for darkness + painter.save() + painter.setBrush(QtGui.QColor(Qt.lightGray)) + painter.setPen(QtGui.QPen(Qt.NoPen)) + for i in (-1, 0): + rot = 270.0 + i*360.0/5.0 # 6 o'clock +/- angel + painter.drawPie(self.outrect, rot*16.0, 360.0/5.0*16.0) + painter.restore() + + # outer circle + painter.drawEllipse(self.outrect) + # inner dot + painter.save() + painter.setBrush(QtGui.QColor(Qt.black)) + painter.drawEllipse(self.center[0]-self.rinner/2.0, + self.center[1]-self.rinner/2.0, + self.rinner, self.rinner) + painter.restore() + + painter.save() + painter.setBrush(QtGui.QBrush(QtGui.QColor(Qt.white))) + # stripes and dots + for i in range(0, 25): + rot = i * self.angel + self.offset + if i % 5 == 0: + # lines + end = QtCore.QPointF(self.center[0] + self.r * math.cos(rot), + self.center[1] + self.r * math.sin(rot)) + painter.drawLine(QtCore.QPointF(*self.center), end) + else: + # outer ring of dots + rect = QtCore.QRectF( + self.center[0] - self.rdot/2 + (self.r - self.rdot-1.0) * math.cos(rot), + self.center[1] - self.rdot/2 + (self.r - self.rdot-1.0) * math.sin(rot), + self.rdot, self.rdot) + painter.drawEllipse(rect) + painter.restore() + + # number + h = 15 + pm = self._dni.get(self._pahrtovo, height=h) + w = pm.width() + posx, posy = self.center[0]-w/2.0, self.center[1]+10.0 + painter.save() + painter.setBrush(QtGui.QBrush(QtGui.QColor(Qt.white))) + painter.setPen(QtGui.QPen(Qt.NoPen)) + painter.drawRect(posx-1, posy-1, w+2, h+2) + painter.drawPixmap(posx, posy, pm) + painter.restore() + + # pointer + painter.save() + pen = QtGui.QPen(Qt.black) + pen.setWidth(2) + pen.setCapStyle(Qt.RoundCap) + painter.setPen(pen) + rot = self.angel * self._pahrtovo + self.offset + end = QtCore.QPointF(self.center[0] + (self.r-self.rdot) * math.cos(rot), + self.center[1] + (self.r-self.rdot) * math.sin(rot)) + painter.drawLine(QtCore.QPointF(*self.center), end) + painter.restore() + class QDniNumberWidget(QtGui.QWidget): """Q D'ni number widget - + + XXX: hacky, replace it + Displays combined number """ def __init__(self, parent): @@ -455,77 +661,3 @@ movex = movex // 2 self.move(geometry.x()+movex, geometry.y()) self._layout = None - -class QDniNumberRing(object): - """Qt D'ni number graphics item ring - - The class emulates a ring structure similar to a clock. Internally it - stores a list of QGraphicsPixmapItem assossiacted with a scene. All items - are hidden by default and at position (0,0) - - >>> example = QDniNumberRing(scene, start=1, stop=25) - >>> example.setPosition(24) - 24 - >>> example.next() - 25 - >>> example.next() - 1 - """ - __slots__ = ('_elements', '_first', '_last', '_pos') - - def __init__(self, scene, start=0, stop=24, height=None, - model='full', cyclic=False): - factory = QDniNumbers().getFactory(model) - self._elements = [] - self._first = start - self._last = stop - self._pos = start - for i in range(start, stop+1): - if cyclic and i == 0: - i = 'cyclic' - pmitem = QtGui.QGraphicsPixmapItem(factory(i, height=height)) - pmitem.hide() - scene.addItem(pmitem) - self._elements.append(pmitem) - - def __getitem__(self, pos): - return self._elements[pos - self._first] - - def get(self): - return self._pos - - def next(self): - """Get next item - - Hides the current item and returns the next item after it is made visible - """ - pos = self._pos - self[pos].hide() - pos += 1 - if pos > self._last: - pos = self._first - self._pos = pos - element = self[pos] - element.show() - return pos - - def setNumber(self, nr): - """Set current number to nr - - Also hides all elements before returning the current element - """ - for element in self._elements: - element.hide() - element = self[nr] - element.show() - self._pos = nr - return nr - - def setPos(self, xpos, y=None): - """Set position of element - """ - for element in self._elements: - if y is not None: - element.setPos(xpos, y) - else: - element.setPos(xpos) Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-17 21:49:15 UTC (rev 176) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-19 16:36:31 UTC (rev 177) @@ -85,20 +85,20 @@ self.urupersonaldir.initializeFactories() # init handlers + self.qcDniTimeNumber = DniTimeNumberContainer(self) + self.qcLocalization = LocalizationContainer(self) + self.qcIniFile = IniFileContainer(self) self._ping_init() - self._systray_init() + #self._systray_init() self._about_init() self._chatlog_init() - self.qcLocalization = LocalizationContainer(self) - self.qcIniFile = IniFileContainer(self) - self.qcDniTimeNumber = DniTimeNumberContainer(self) # run checker - self._moulrunning = None - self._moulrunning_thread = MoulRunningThread() - self.connect(self._moulrunning_thread, SIGNAL('moulIsRunning(bool)'), - self.on_moulIsRunning) - self._moulrunning_thread.startChecker(5.0) # check now and every 5 seconds + #self._moulrunning = None + #self._moulrunning_thread = MoulRunningThread() + #self.connect(self._moulrunning_thread, SIGNAL('moulIsRunning(bool)'), + # self.on_moulIsRunning) + #self._moulrunning_thread.startChecker(5.0) # check now and every 5 seconds def on_moulIsRunning(self, boolean): """ Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-17 21:49:15 UTC (rev 176) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-19 16:36:31 UTC (rev 177) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file './src/moul/qt/ui/mainwindow.ui' # -# Created: Sat Feb 17 22:12:04 2007 +# Created: Mon Feb 19 15:44:53 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -207,16 +207,17 @@ 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.setGeometry(QtCore.QRect(10,20,431,101)) + 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.le_dnitime = QtGui.QLineEdit(self.gb_dnitime) - 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.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 21:49:15 UTC (rev 176) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-02-19 16:36:31 UTC (rev 177) @@ -483,32 +483,37 @@ <rect> <x>10</x> <y>20</y> - <width>150</width> - <height>55</height> + <width>431</width> + <height>101</height> </rect> </property> + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="contextMenuPolicy" > + <enum>Qt::NoContextMenu</enum> + </property> <property name="acceptDrops" > <bool>false</bool> </property> <property name="frameShadow" > <enum>QFrame::Plain</enum> </property> - </widget> - <widget class="QLineEdit" name="le_dnitime" > - <property name="geometry" > - <rect> - <x>10</x> - <y>90</y> - <width>271</width> - <height>25</height> - </rect> + <property name="verticalScrollBarPolicy" > + <enum>Qt::ScrollBarAlwaysOff</enum> </property> - <property name="echoMode" > - <enum>QLineEdit::Normal</enum> + <property name="horizontalScrollBarPolicy" > + <enum>Qt::ScrollBarAlwaysOff</enum> </property> - <property name="readOnly" > - <bool>true</bool> + <property name="interactive" > + <bool>false</bool> </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + <property name="renderHints" > + <set>QPainter::Antialiasing|QPainter::SmoothPixmapTransform|QPainter::TextAntialiasing</set> + </property> </widget> </widget> </widget> Modified: pymoul/trunk/src/moul/time/utils.py =================================================================== --- pymoul/trunk/src/moul/time/utils.py 2007-02-17 21:49:15 UTC (rev 176) +++ pymoul/trunk/src/moul/time/utils.py 2007-02-19 16:36:31 UTC (rev 177) @@ -30,6 +30,7 @@ from datetime import datetime from pytz import utc as UTC from pytz import timezone +from pytz import common_timezones # timestamp 0 - start of unix time UNIX_0 = datetime(1970, 1, 1, 0, 0, 0, 0, tzinfo=UTC) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |