| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- from DirectObject import *
- from ShowBaseGlobal import *
- from GuiGlobals import *
- import DirectNotifyGlobal
- import string
- import OnscreenText
- import Button
- import StateData
- import OnscreenPanel
- # No buttons at all
- NoButtons = 0
- # just an OK button
- Acknowledge = 1
- # OK and CANCEL buttons
- TwoChoice = 2
- class DialogBox(OnscreenPanel.OnscreenPanel):
- notify = DirectNotifyGlobal.directNotify.newCategory("DialogBox")
- def __init__(self, message = "", doneEvent = None, style = NoButtons,
- font = getDefaultFont(), wordwrap = 12):
- """___init___(self, Event, string="", int, model, int=12)"""
- # Sanity check
- if (doneEvent == None) and (style != NoButtons):
- self.notify.error("Boxes with buttons must specify a doneEvent.")
-
- self.__doneEvent = doneEvent
- self.message = message
- self.style = style
- self.font = font
- self.wordwrap = wordwrap
- # initialize our OnscreenPanel essence
- # NOTE: all db's have the same name so we can kill them easily
- OnscreenPanel.OnscreenPanel.__init__(self, "globalDialog")
-
- # make the panel
- self.makePanel(rect = (-0.5, 0.5, -0.4, 0.4),
- drawOrder = 32000, font = self.font,
- bg = (0.8, 0.8, 0.8, 1.0))
-
- # create a message
- self.makeText(self.message, wordwrap = self.wordwrap, scale = 0.08,
- pos = (0.0, 0.25))
- if (self.style == TwoChoice):
- # create OK and CANCEL buttons
- self.makeButton("OK", pos = (-0.325, -0.25),
- func = self.handleOk, event = "ok")
- self.makeButton("Cancel", pos = (0.2, -0.25),
- func = self.handleCancel, event = "cancel")
- elif (self.style == Acknowledge):
- # create a centered OK button
- self.makeButton("OK", pos = (0.0, -0.25), func = self.handleOk,
- event = "ok")
- elif (self.style == NoButtons):
- # No buttons at all
- pass
- else:
- "Sanity check"
- self.notify.error("No such style as: " + str(self.style))
-
- return None
- def show(self):
- """show(self)
- """
- base.transitions.fadeScreen()
- OnscreenPanel.OnscreenPanel.show(self)
-
- return None
- def hide(self):
- """hide(self)
- """
- base.transitions.noTransitions()
- OnscreenPanel.OnscreenPanel.hide(self)
- return None
-
- def cleanup(self):
- """unload(self)
- """
- self.hide()
- OnscreenPanel.OnscreenPanel.cleanup(self)
- return None
- # def handleRollover(self):
- # return None
- def handleOk(self, okButton, item):
- assert(self.style != NoButtons)
- if (okButton == item):
- self.doneStatus = "ok"
- messenger.send(self.__doneEvent)
- def handleCancel(self, cancelButton, item):
- assert(self.style == TwoChoice)
- if (cancelButton == item):
- self.doneStatus = "cancel"
- messenger.send(self.__doneEvent)
- def setMessage(self, message):
- """setMessage(self, string)
- """
- self.panelText[0].setText(message)
|