[Pymoul-svn] SF.net SVN: pymoul: [175] pymoul/trunk/src/moul/qt
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-02-17 18:10:25
|
Revision: 175
http://pymoul.svn.sourceforge.net/pymoul/?rev=175&view=rev
Author: tiran
Date: 2007-02-17 10:10:20 -0800 (Sat, 17 Feb 2007)
Log Message:
-----------
Added basics for 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
Modified: pymoul/trunk/src/moul/qt/dninumbers.py
===================================================================
--- pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-16 13:09:45 UTC (rev 174)
+++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-02-17 18:10:20 UTC (rev 175)
@@ -22,6 +22,7 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+import operator
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
@@ -29,37 +30,214 @@
from PyQt4.QtCore import SIGNAL
from PyQt4.QtCore import pyqtSignature
+from moul.time.cavern import CavernTime
+from moul.time.dni import DniTime
+from moul.time.dni import FACTOR_SP
+from moul.log import getLogger
from moul.qt.utils import QNamespaceContainer
from moul.qt.utils import QSignalLoggerMetaclass
-from moul.qt.utils import questionMB
-from moul.qt.utils import criticalMB
+from moul.qt.utils import skipLogging
+NUMBER_HEIGHT = 25
+LOG = getLogger('moul.qt.dni')
+
+class DniTimeNumberContainer(QNamespaceContainer):
+ """Container for Dni Date and Dni
+ number stuff
+ """
+ __metaclass__ = QSignalLoggerMetaclass
+ __logger__ = LOG.debug
+
+ def initialize(self):
+ # D'ni numbers
+ self.dninumbers = QDniNumbers()
+ 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()
+
+ # 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()
+
+ def timezone_update(self):
+ """
+ Update datetime widgets
+ """
+ ct = self.caverntime.info()
+
+ self.dt_cavern.setDateTime(ct['cavern']['datetime'])
+ self.dt_pacific.setDateTime(ct['pacific']['datetime'])
+
+ off = ct['cavern']['utcoffset']
+ txt = "UTC %s%i" % (off[0], abs(off[1]))
+ self.lb_cavern_utc.setText(QtCore.QString(txt))
+
+ off = ct['pacific']['utcoffset']
+ txt = "UTC %s%i" % (off[0], abs(off[1]))
+ self.lb_pacific_utc.setText(QtCore.QString(txt))
+
+ @pyqtSignature("")
+ @skipLogging
+ def on_timezone_timer_timeout(self):
+ """
+ SIGNAL: QTimer timeout
+ """
+ ct = self.caverntime()
+ self.dt_cavern.setDateTime(ct['cavern'])
+ self.dt_pacific.setDateTime(ct['pacific'])
+
+ @pyqtSignature("")
+ @skipLogging
+ def on_dnitimer_timeout(self):
+ """
+ SIGNAL: QTimer timeout
+ """
+ dni = self.dnitime.fromUTC() # set to now
+ self.context.le_dnitime.setText(str(self.dnitime)+", bell: %s" %
+ self.dnitime.pahrtovo)
+
+ 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, 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)
+
+
+ def setup_dninumbers(self):
+ # may change!
+ widget = self.context.gridLayout_3
+ grid = self.context.gridlayout3
+
+ alignl = QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter
+ alignc = QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter
+ for i in range(0, 5):
+ for j in range(0, 5):
+ nr = QtGui.QLabel(widget)
+ nr.setObjectName("lb_dninumber_nr_%02i_%02i" % (i, j))
+ nr.setAlignment(alignc)
+ nr.setText(str(i + j*5))
+ grid.addWidget(nr, j, i*2)
+ dni_pic = self.dninumbers.get(i + j*5, height=NUMBER_HEIGHT)
+ dni = QtGui.QLabel(widget)
+ dni.setObjectName("lb_dninumber_%02i_%02i" % (i, j))
+ dni.setPixmap(dni_pic)
+ dni.setAlignment(alignl)
+ grid.addWidget(dni, j, i*2+1)
+
+ nr = QtGui.QLabel(widget)
+ nr.setObjectName("lb_dninumber_nr_25")
+ nr.setAlignment(alignc)
+ nr.setText("25")
+ grid.addWidget(nr, 5, 2)
+ dni_pic = self.dninumbers.get(25, height=NUMBER_HEIGHT)
+ dni = QtGui.QLabel(widget)
+ dni.setObjectName("lb_dninumber_25")
+ dni.setAlignment(alignl)
+ dni.setPixmap(dni_pic)
+ grid.addWidget(dni, 5, 3)
+
+ nr = QtGui.QLabel(widget)
+ nr.setObjectName("lb_dninumber_nr_00c")
+ nr.setAlignment(alignc)
+ nr.setText(self.trUtf8("cyclic 0"))
+ grid.addWidget(nr, 5, 5, 1, 2)
+ dni_pic = self.dninumbers.get("cyclic", height=NUMBER_HEIGHT)
+ dni = QtGui.QLabel(widget)
+ dni.setObjectName("lb_dninumber_00c")
+ dni.setAlignment(alignl)
+ dni.setPixmap(dni_pic)
+ grid.addWidget(dni, 5, 7)
+
+ dnipix = QDniNumberWidget(widget)
+ dnipix.setHeight(NUMBER_HEIGHT)
+ dnipix.setByDecimal(25, digits=2)
+ dnipix.setObjectName("dnw_dninumber_250")
+ 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
-
- Lookup and scale pixmaps for D'ni numbers
+
+ Lookup and scale pixmaps for D'ni numbers. Pixmaps are cached in a
+ QPixmapCache. You can create as many instances as you require w/o much
+ efficency drawbacks
"""
- def __init__(self):
- self.pixmaps = {}
- for i in range(0, 26):
- self.pixmaps[i] = QtGui.QPixmap(
- ":/dninumbers/resources/dninumbers/%02i.png" % i)
- self.pixmaps['cyclic'] = QtGui.QPixmap(
- ":/dninumbers/resources/dninumbers/00c.png")
- # w, h = 67, 55
- self._rectleft = QtCore.QRect(0, 0, 60, 55) # with right border
- self._rectright = QtCore.QRect(12, 0, 55, 55) # w/o left border
- self._rectmiddle = QtCore.QRect(12, 0, 49, 55) # right line
+ __slots__ = ()
+ # 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
+ _rectmiddle = QtCore.QRect(12, 0, 49, 55) # right line
+ _valid = tuple(range(0, 26)) + ('cyclic',)
@staticmethod
- def _scale(pixmap, height=None):
+ def _insertCache(nr, height, pos, pm):
+ key = 'dninumber%s_%s_%s' % (nr, height if height else '', pos)
+ QtGui.QPixmapCache.insert(key, pm)
+
+ @staticmethod
+ def _findCache(nr, height, pos):
+ key = 'dninumber%s_%s_%s' % (nr, height if height else '', pos)
+ return QtGui.QPixmapCache.find(key)
+
+ @staticmethod
+ def _scale(pm, height=None):
"""Scale a pixmap to height
"""
if height is not None:
- return pixmap.scaledToHeight(height, QtCore.Qt.SmoothTransformation)
+ return pm.scaledToHeight(height, QtCore.Qt.SmoothTransformation)
else:
- return pixmap
+ return pm
def get(self, nr, height=None):
"""Get pixmap by number and scale it
@@ -71,13 +249,29 @@
@return: (scaled) pixmap
@rtype: QPixmap instance
"""
- try:
+ pm = self._findCache(nr, height, 'full')
+ if pm:
+ return pm
+
+ if nr == "cyclic":
+ fname = "00c.png"
+ else:
nr = int(nr)
- except ValueError:
- pass
- pixmap = self.pixmaps[nr]
- return self._scale(pixmap, height)
+ fname = "%02i.png" % nr
+ if nr not in self._valid:
+ raise ValueError(nr)
+
+ # lookup non scaled
+ pm = self._findCache(nr, None, 'full')
+ if not pm:
+ pm = QtGui.QPixmap(":/dninumbers/resources/dninumbers/%s" % fname)
+ self._insertCache(nr, None, 'full', pm)
+
+ spm = self._scale(pm, height)
+ self._insertCache(nr, height, 'full', spm)
+ return spm
+
def getLeft(self, nr, height=None):
"""Get pixmap for left digit of combined number
@@ -88,8 +282,13 @@
@return: (scaled) pixmap
@rtype: QPixmap instance
"""
- pixmap = self.get(nr).copy(self._rectleft)
- return self._scale(pixmap, height)
+ pm = self._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)
+ return spm
def getRight(self, nr, height=None):
"""Get pixmap for right digit of combined number
@@ -101,10 +300,15 @@
@return: (scaled) pixmap
@rtype: QPixmap instance
"""
- pixmap = self.get(nr).copy(self._rectright)
- return self._scale(pixmap, height)
+ pm = self._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)
+ return spm
- def getMiddle(self, nr, heigh=None):
+ def getMiddle(self, nr, height=None):
"""Get pixmap for middle digit of combined number
@param nr: number (0-25, 'cyclic')
@@ -114,9 +318,28 @@
@return: (scaled) pixmap
@rtype: QPixmap instance
"""
- pixmap = self.get(nr).copy(self._rectmiddle)
- return self._scale(pixmap, height)
+ pm = self._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)
+ return spm
+ def getFactory(self, model='full'):
+ """Get factory method for model
+ """
+ if model == 'full':
+ return self.get
+ elif model == 'left':
+ return self.getLeft
+ elif model == 'right':
+ return self.getRight
+ elif model == 'middle':
+ return self.getMiddle
+ else:
+ raise ValueError(model)
+
class QDniNumberWidget(QtGui.QWidget):
"""Q D'ni number widget
@@ -124,42 +347,61 @@
"""
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
- self.dni = None
+ self.dni = QDniNumbers()
self.height = None
self.numbers = ()
self._layout = None
- def setDniNumbers(self, dninumbers):
- """Set D'ni number instance
- """
- if not isinstance(dninumbers, QDniNumbers):
- raise TypeError(type(dninumbers))
- self.dni = dninumbers
-
def setHeight(self, height=None):
"""Set height to scale
"""
self.height=height
+ 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)
+ return self.setNumbers(*numbers)
+
def setNumbers(self, *args):
"""Set numbers to display
"""
valid = tuple(range(0, 26)) + ('cyclic',)
for number in args:
- if not isinstance(number, int):
+ if not isinstance(number, (int, basestring)):
raise TypeError(number)
if number not in valid:
raise ValueError(number)
self.numbers = args
- self._pmleft = self.dni.getLeft(self.numbers[0], height=self.height)
- self._pmright = self.dni.getRight(self.numbers[-1], height=self.height)
- self._pmmiddle = [self.dni.getMiddle(nr, height=self.height)
- for nr in self.numbers[1:-1]]
- if self._pmmiddle:
- raise NotImplementedError
+ self.pmlist = []
+ if len(args) == 1:
+ self.pmlist.append(self.dni.get(self.numbers[0],
+ height=self.height))
else:
- middlewidth = 0
- self.width = self._pmleft.width() + self._pmright.width() + middlewidth
+ for i, number in enumerate(args):
+ if i == 0:
+ # first
+ self.pmlist.append(self.dni.getLeft(number,
+ height=self.height))
+ elif i == len(self.numbers)-1:
+ # last
+ self.pmlist.append(self.dni.getRight(number,
+ height=self.height))
+ else:
+ self.pmlist.append(self.dni.getMiddle(number,
+ height=self.height))
+ self.width = reduce(operator.add, [pm.width() for pm in self.pmlist])
self.setMinimumSize(self.width, self.height)
self.setMaximumSize(self.width, self.height)
self.resize(self.width, self.height)
@@ -190,8 +432,10 @@
#painter.setWindow(self.parent().rect())
# left
- painter.drawPixmap(0, 0, self._pmleft)
- painter.drawPixmap(self.width-self._pmright.width(), 0, self._pmright)
+ pos = 0
+ for i, pm in enumerate(self.pmlist):
+ painter.drawPixmap(pos, 0, pm)
+ pos += pm.width()
painter.end()
# remove the hack!
@@ -204,3 +448,74 @@
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)
+ <Pixmap Graphics Item 24>
+ >>> example.next()
+ <Pixmap Graphics Item 25>
+ >>> example.next()
+ <Pixmap Graphics Item 25>
+ """
+ __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 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 element
+
+ 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 element
+
+ 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-16 13:09:45 UTC (rev 174)
+++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-17 18:10:20 UTC (rev 175)
@@ -41,10 +41,8 @@
from moul.server.ping import ServerList
from moul.server.ping import isSocketError
from moul.server.ping import fmtSocketError
-from moul.time.cavern import CavernTime
-from moul.time.dni import DniTime
-from moul.time.dni import FACTOR_SP
+from moul.qt.dninumbers import DniTimeNumberContainer
from moul.qt.localization import LocalizationContainer
from moul.qt.wdysini import IniFileContainer
from moul.qt.simpleprogressbar import SimpleProgressbar
@@ -52,8 +50,6 @@
from moul.qt.threadlet import Threadlet
from moul.qt.ui.mainwindow import Ui_MainWindow
from moul.qt import utils as qtutils
-from moul.qt.dninumbers import QDniNumbers
-from moul.qt.dninumbers import QDniNumberWidget
LOG = getLogger('moul.qt')
@@ -89,14 +85,13 @@
self.urupersonaldir.initializeFactories()
# init handlers
- self._dninumbers_init()
- self._timezone_init()
self._ping_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
@@ -388,68 +383,6 @@
sfdonate_url))
# ************************************************************************
- # time zones
- def _timezone_init(self):
- """
- Init time zone tab"""
- # create info object and update display the first time
- self._caverntime = CavernTime()
- self._timezone_update()
-
- # create a timer to update the display every second
- # TODO: change timer from every second to every minute
- self._timezone_timer = QtCore.QTimer(self)
- 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._dnitime = DniTime()
- self.on_dnitimer_timeout()
- self._dnitime_timer = QtCore.QTimer(self)
- self._dnitime_timer.setInterval(FACTOR_SP*1000)
- self.connect(self._dnitime_timer, SIGNAL('timeout()'),
- self.on_dnitimer_timeout)
- self._dnitime_timer.start()
-
- def _timezone_update(self):
- """
- Update datetime widgets
- """
- ct = self._caverntime.info()
-
- self.dt_cavern.setDateTime(ct['cavern']['datetime'])
- self.dt_pacific.setDateTime(ct['pacific']['datetime'])
-
- off = ct['cavern']['utcoffset']
- txt = "UTC %s%i" % (off[0], abs(off[1]))
- self.lb_cavern_utc.setText(QtCore.QString(txt))
-
- off = ct['pacific']['utcoffset']
- txt = "UTC %s%i" % (off[0], abs(off[1]))
- self.lb_pacific_utc.setText(QtCore.QString(txt))
-
- @pyqtSignature("")
- @qtutils.skipLogging
- def on_timezone_timer_timeout(self):
- """
- SIGNAL: QTimer timeout
- """
- ct = self._caverntime()
- self.dt_cavern.setDateTime(ct['cavern'])
- self.dt_pacific.setDateTime(ct['pacific'])
-
- @pyqtSignature("")
- @qtutils.skipLogging
- def on_dnitimer_timeout(self):
- """
- SIGNAL: QTimer timeout
- """
- dni = self._dnitime.fromUTC() # set to now
- self.le_dnitime.setText(str(self._dnitime)+", bell: %s" % self._dnitime.pahrtovo)
-
- # ************************************************************************
# ping
def _ping_init(self):
"""
@@ -506,59 +439,6 @@
else:
LOG.error("Ping thread is already running")
- def _dninumbers_init(self):
- self._dninumbers = QDniNumbers()
- height = 25
- widget = self.gridLayout_3
- grid = self.gridlayout3
- alignl = QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter
- alignc = QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter
- for i in range(0, 5):
- for j in range(0, 5):
- nr = QtGui.QLabel(widget)
- nr.setObjectName("lb_dninumber_nr_%02i_%02i" % (i, j))
- nr.setAlignment(alignc)
- nr.setText(str(i + j*5))
- grid.addWidget(nr, j, i*2)
- dni_pic = self._dninumbers.get(i + j*5, height=height)
- dni = QtGui.QLabel(widget)
- dni.setObjectName("lb_dninumber_%02i_%02i" % (i, j))
- dni.setPixmap(dni_pic)
- dni.setAlignment(alignl)
- grid.addWidget(dni, j, i*2+1)
-
- nr = QtGui.QLabel(widget)
- nr.setObjectName("lb_dninumber_nr_25")
- nr.setAlignment(alignc)
- nr.setText("25")
- grid.addWidget(nr, 5, 2)
- dni_pic = self._dninumbers.get(25, height=height)
- dni = QtGui.QLabel(widget)
- dni.setObjectName("lb_dninumber_25")
- dni.setAlignment(alignl)
- dni.setPixmap(dni_pic)
- grid.addWidget(dni, 5, 3)
-
- nr = QtGui.QLabel(widget)
- nr.setObjectName("lb_dninumber_nr_00c")
- nr.setAlignment(alignc)
- nr.setText(self.trUtf8("cyclic 0"))
- grid.addWidget(nr, 5, 5, 1, 2)
- dni_pic = self._dninumbers.get("cyclic", height=height)
- dni = QtGui.QLabel(widget)
- dni.setObjectName("lb_dninumber_00c")
- dni.setAlignment(alignl)
- dni.setPixmap(dni_pic)
- grid.addWidget(dni, 5, 7)
-
- dnipix = QDniNumberWidget(widget)
- dnipix.setDniNumbers(self._dninumbers)
- dnipix.setHeight(25)
- dnipix.setNumbers(1, 0)
- dnipix.setObjectName("dnw_dninumber_250")
- dnipix.setPosition(grid, 5, 0, QtCore.Qt.AlignRight)
- grid.addWidget(dnipix, 5, 0, 1, 2)
-
class PingServerThread(QtCore.QThread):
def __init__(self, parent=None):
QtCore.QThread.__init__(self, parent)
Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-16 13:09:45 UTC (rev 174)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-02-17 18:10:20 UTC (rev 175)
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file './src/moul/qt/ui/mainwindow.ui'
#
-# Created: Thu Feb 15 13:28:03 2007
+# Created: Sat Feb 17 18:51:48 2007
# by: PyQt4 UI code generator 4.1.1
#
# WARNING! All changes made in this file will be lost!
@@ -117,11 +117,11 @@
self.gridlayout.addWidget(self.lb_log_remove,1,1,1,3)
self.groupBox_2 = QtGui.QGroupBox(self.tab_tasks)
- self.groupBox_2.setGeometry(QtCore.QRect(10,120,451,81))
+ self.groupBox_2.setGeometry(QtCore.QRect(10,120,451,61))
self.groupBox_2.setObjectName("groupBox_2")
self.layoutWidget1 = QtGui.QWidget(self.groupBox_2)
- self.layoutWidget1.setGeometry(QtCore.QRect(10,30,431,30))
+ self.layoutWidget1.setGeometry(QtCore.QRect(10,20,431,30))
self.layoutWidget1.setObjectName("layoutWidget1")
self.hboxlayout1 = QtGui.QHBoxLayout(self.layoutWidget1)
@@ -142,7 +142,7 @@
self.hboxlayout1.addItem(spacerItem3)
self.gb_caverntime = QtGui.QGroupBox(self.tab_tasks)
- self.gb_caverntime.setGeometry(QtCore.QRect(10,200,451,101))
+ self.gb_caverntime.setGeometry(QtCore.QRect(10,180,451,101))
self.gb_caverntime.setObjectName("gb_caverntime")
self.gridLayout = QtGui.QWidget(self.gb_caverntime)
@@ -203,14 +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,300,451,101))
+ self.gb_dnitime.setGeometry(QtCore.QRect(10,280,451,121))
self.gb_dnitime.setObjectName("gb_dnitime")
self.le_dnitime = QtGui.QLineEdit(self.gb_dnitime)
- self.le_dnitime.setGeometry(QtCore.QRect(10,40,281,25))
+ self.le_dnitime.setGeometry(QtCore.QRect(200,20,241,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-16 13:09:45 UTC (rev 174)
+++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-02-17 18:10:20 UTC (rev 175)
@@ -282,7 +282,7 @@
<x>10</x>
<y>120</y>
<width>451</width>
- <height>81</height>
+ <height>61</height>
</rect>
</property>
<property name="title" >
@@ -292,7 +292,7 @@
<property name="geometry" >
<rect>
<x>10</x>
- <y>30</y>
+ <y>20</y>
<width>431</width>
<height>30</height>
</rect>
@@ -347,7 +347,7 @@
<property name="geometry" >
<rect>
<x>10</x>
- <y>200</y>
+ <y>180</y>
<width>451</width>
<height>101</height>
</rect>
@@ -470,9 +470,9 @@
<property name="geometry" >
<rect>
<x>10</x>
- <y>300</y>
+ <y>280</y>
<width>451</width>
- <height>101</height>
+ <height>121</height>
</rect>
</property>
<property name="title" >
@@ -481,9 +481,9 @@
<widget class="QLineEdit" name="le_dnitime" >
<property name="geometry" >
<rect>
- <x>10</x>
- <y>40</y>
- <width>281</width>
+ <x>200</x>
+ <y>20</y>
+ <width>241</width>
<height>25</height>
</rect>
</property>
@@ -494,6 +494,22 @@
<bool>true</bool>
</property>
</widget>
+ <widget class="QGraphicsView" name="gv_dniclock" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>181</width>
+ <height>94</height>
+ </rect>
+ </property>
+ <property name="acceptDrops" >
+ <bool>false</bool>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Plain</enum>
+ </property>
+ </widget>
</widget>
</widget>
<widget class="QWidget" name="tab_settings" >
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|