aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>2005-12-23 05:19:57 +0000
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>2005-12-23 05:19:57 +0000
commitb2d6392a3b41f870b5615c8e19b26496e56f6310 (patch)
treedf2f0d446d2afb704941d7cd4e7e2262b1f3a660
parent7ae6b9f9b79a7fb2a94fcc4863f1cfdade7ce19b (diff)
downloadenigma2-b2d6392a3b41f870b5615c8e19b26496e56f6310.tar.gz
enigma2-b2d6392a3b41f870b5615c8e19b26496e56f6310.zip
beautify messagebox
add functionality to the messagebox
-rw-r--r--data/keymap.xml2
-rw-r--r--data/skin.xml19
-rw-r--r--lib/python/Plugins/Makefile.am2
-rw-r--r--lib/python/Plugins/example.py11
-rw-r--r--lib/python/Screens/HarddiskSetup.py2
-rw-r--r--lib/python/Screens/InfoBarGenerics.py2
-rw-r--r--lib/python/Screens/MessageBox.py37
-rw-r--r--lib/python/Screens/MovieSelection.py4
8 files changed, 59 insertions, 20 deletions
diff --git a/data/keymap.xml b/data/keymap.xml
index a60935f5..2462ef6e 100644
--- a/data/keymap.xml
+++ b/data/keymap.xml
@@ -212,7 +212,7 @@
</map>
<map context="MsgBoxActions">
- <key id="KEY_GREEN" mapto="ok" flags="m" />
+ <key id="KEY_GREEN" mapto="alwaysOK" flags="m" />
<key id="KEY_OK" mapto="ok" flags="m" />
<key id="KEY_RED" mapto="cancel" flags="m" />
<key id="KEY_EXIT" mapto="cancel" flags="m" />
diff --git a/data/skin.xml b/data/skin.xml
index 4c1a25c0..e8e8a9ec 100644
--- a/data/skin.xml
+++ b/data/skin.xml
@@ -270,9 +270,10 @@
<eLabel position="500,40" size="220,60" text="help..." font="Regular;50" />
</screen>
<screen name="MessageBox" position="0,300" size="720,10" title="Message">
- <widget name="text" position="0,35" size="650,0" font="Regular;22" />
- <widget name="key_red" position="0,0" size="140,30" backgroundColor="red" font="Regular;21" />
- <widget name="key_green" position="140,0" size="140,30" backgroundColor="green" font="Regular;21" />
+ <widget name="text" position="60,10" size="650,0" font="Regular;22" />
+ <widget name="ErrorPixmap" pixmap="/usr/share/enigma2/error.png" position="0,0" zPosition="3" size="53,53" alphatest="on" transparent="1" />
+ <widget name="QuestionPixmap" pixmap="/usr/share/enigma2/question.png" position="0,0" zPosition="3" size="53,53" alphatest="on" transparent="1" />
+ <widget name="list" position="100,100" size="550,375" />
<applet type="onLayoutFinish">
# this should be factored out into some helper code, but currently demonstrates applets.
from enigma import eSize, ePoint
@@ -283,8 +284,11 @@ textsize = self["text"].getSize()
# y size still must be fixed in font stuff...
textsize = (textsize[0] + 50, textsize[1] + 50)
-wsizex = textsize[0] + 50
-wsizey = textsize[1] + 50
+offset = 0
+if self.type == self.TYPE_YESNO:
+ offset = 60
+wsizex = textsize[0] + offset
+wsizey = textsize[1] + offset
if (280 > wsizex):
wsizex = 280
wsize = (wsizex, wsizey)
@@ -296,6 +300,11 @@ self.instance.resize(eSize(*wsize))
# resize label
self["text"].instance.resize(eSize(*textsize))
+# move list
+listsize = (wsizex, 50)
+self["list"].instance.move(ePoint(0, textsize[1]))
+self["list"].instance.resize(eSize(*listsize))
+
# center window
newwidth = wsize[0]
self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
diff --git a/lib/python/Plugins/Makefile.am b/lib/python/Plugins/Makefile.am
index 6cf5ffa7..610314d4 100644
--- a/lib/python/Plugins/Makefile.am
+++ b/lib/python/Plugins/Makefile.am
@@ -2,5 +2,5 @@ installdir = $(LIBDIR)/enigma2/python/Plugins
install_PYTHON = \
__init__.py \
- update.py
+ update.py
# example.py
diff --git a/lib/python/Plugins/example.py b/lib/python/Plugins/example.py
index 5b96ee37..f2011912 100644
--- a/lib/python/Plugins/example.py
+++ b/lib/python/Plugins/example.py
@@ -1,5 +1,7 @@
from enigma import *
from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+
from Components.ActionMap import ActionMap
from Components.Label import Label
@@ -13,16 +15,17 @@ class Example(Screen):
self.skin = Example.skin
Screen.__init__(self, session)
- self["text"] = Label("Small test")
+ self["text"] = Label("Big test")
self["actions"] = ActionMap(["WizardActions"],
{
- "ok": self.ok
+ "ok": self.ok,
+ "back": self.close
}, -1)
def ok(self):
- self.close()
-
+ self.session.open(MessageBox, "Bla bla bla bla bla bla bla bla\n bla bla bla bla bla bla\n bla bla bla bla bla bla\n bla bla bla bla bla", MessageBox.TYPE_YESNO)
+
def main(session):
session.open(Example)
diff --git a/lib/python/Screens/HarddiskSetup.py b/lib/python/Screens/HarddiskSetup.py
index 72480ce8..290d0bac 100644
--- a/lib/python/Screens/HarddiskSetup.py
+++ b/lib/python/Screens/HarddiskSetup.py
@@ -44,7 +44,7 @@ class HarddiskSetup(Screen):
def hddReady(self, result):
print "Result: " + str(result)
if (result != 0):
- self.session.open(MessageBox, _("Unable to initialize harddisk.\nPlease refer to the user manual.\nError: ") + str(self.hdd.errorList[0 - result]))
+ self.session.open(MessageBox, _("Unable to initialize harddisk.\nPlease refer to the user manual.\nError: ") + str(self.hdd.errorList[0 - result]), MessageBox.TYPE_ERROR)
else:
self.close()
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py
index 0fcb6ba9..96d85877 100644
--- a/lib/python/Screens/InfoBarGenerics.py
+++ b/lib/python/Screens/InfoBarGenerics.py
@@ -668,7 +668,7 @@ class InfoBarInstantRecord:
try:
stat = os.stat("/hdd/movies")
except:
- self.session.open(MessageBox, "No HDD found!")
+ self.session.open(MessageBox, "No HDD found!", MessageBox.TYPE_ERROR)
return
if self.isInstantRecordRunning():
diff --git a/lib/python/Screens/MessageBox.py b/lib/python/Screens/MessageBox.py
index 87da7f9c..632c9bc5 100644
--- a/lib/python/Screens/MessageBox.py
+++ b/lib/python/Screens/MessageBox.py
@@ -2,21 +2,42 @@ from Screen import Screen
from Components.ActionMap import ActionMap
from Components.Label import Label
from Components.Button import Button
+from Components.Pixmap import Pixmap
+from Components.MenuList import MenuList
from enigma import eSize, ePoint
class MessageBox(Screen):
- def __init__(self, session, text):
+ TYPE_YESNO = 0
+ TYPE_INFO = 1
+ TYPE_WARNING = 2
+ TYPE_ERROR = 3
+
+ def __init__(self, session, text, type = TYPE_YESNO):
+ self.type = type
Screen.__init__(self, session)
self["text"] = Label(text)
- self["key_green"] = Button("OK")
- self["key_red"] = Button("Exit")
+ self["ErrorPixmap"] = Pixmap()
+ self["QuestionPixmap"] = Pixmap()
+
+ self.list = []
+ if type != self.TYPE_ERROR:
+ self.onShown.append(self["ErrorPixmap"].hideWidget)
+ elif type != self.TYPE_YESNO:
+ self.onShown.append(self["QuestionPixmap"].hideWidget)
+
+ if type == self.TYPE_YESNO:
+ self.list = [ (_("yes"), 0), (_("no"), 1) ]
+
+ self["list"] = MenuList(self.list)
+
self["actions"] = ActionMap(["MsgBoxActions"],
{
"cancel": self.cancel,
- "ok": self.ok
+ "ok": self.ok,
+ "alwaysOK": self.alwaysOK
})
@@ -24,4 +45,10 @@ class MessageBox(Screen):
self.close(False)
def ok(self):
- self.close(True)
+ if self.type == self.TYPE_YESNO:
+ self.close(self["list"].getCurrent()[1] == 0)
+ else:
+ self.close(True)
+
+ def alwaysOK(self):
+ self.close(True) \ No newline at end of file
diff --git a/lib/python/Screens/MovieSelection.py b/lib/python/Screens/MovieSelection.py
index ffa73c14..2ba2d059 100644
--- a/lib/python/Screens/MovieSelection.py
+++ b/lib/python/Screens/MovieSelection.py
@@ -32,7 +32,7 @@ class ChannelContextMenu(FixedMenu):
if result == True:
self.session.openWithCallback(self.deleteConfirmed, MessageBox, _("Do you really want to delete this recording?"))
else:
- self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"))
+ self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR)
def deleteConfirmed(self, confirmed):
if not confirmed:
@@ -47,7 +47,7 @@ class ChannelContextMenu(FixedMenu):
result = True
if result == False:
- self.session.openWithCallback(self.close, MessageBox, _("Delete failed!"))
+ self.session.openWithCallback(self.close, MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
else:
list = self.csel["list"]
currentIndex = list.getCurrentIndex()