DialogBox.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from DirectObject import *
  2. from ShowBaseGlobal import *
  3. from GuiGlobals import *
  4. import string
  5. import OnscreenText
  6. import Button
  7. import StateData
  8. import OnscreenPanel
  9. # just an OK button
  10. Acknowledge = 1
  11. # OK and CANCEL buttons
  12. TwoChoice = 2
  13. class DialogBox(OnscreenPanel.OnscreenPanel):
  14. def __init__(self, doneEvent, message = "", style = Acknowledge,
  15. font = getDefaultFont(), wordwrap = 12):
  16. """___init___(self, Event, string="", int, model, int=12)"""
  17. self.doneEvent = doneEvent
  18. self.message = message
  19. self.style = style
  20. self.font = font
  21. self.wordwrap = wordwrap
  22. self.soundRollover = None
  23. self.soundOk = None
  24. self.isLoaded = 0
  25. # initialize our OnscreenPanel essence
  26. OnscreenPanel.OnscreenPanel.__init__(self, self.doneEvent)
  27. return None
  28. def show(self):
  29. """show(self)
  30. """
  31. if self.isLoaded == 0:
  32. self.load()
  33. OnscreenPanel.OnscreenPanel.show(self)
  34. return None
  35. def hide(self):
  36. """hide(self)
  37. """
  38. if self.isLoaded == 0:
  39. return None
  40. OnscreenPanel.OnscreenPanel.hide(self)
  41. return None
  42. def load(self):
  43. """load(self)
  44. """
  45. if self.isLoaded == 1:
  46. return None
  47. # make the panel
  48. self.makePanel(rect = (-0.5, 0.5, -0.4, 0.4),
  49. font = self.font,
  50. bg = (0.8, 0.8, 0.8, 1.0))
  51. # create a message
  52. self.makeText(self.message, wordwrap = self.wordwrap, scale = 0.08,
  53. pos = (0.0, 0.25))
  54. if (self.style == TwoChoice):
  55. # create OK and CANCEL buttons
  56. self.makeButton("OK", pos = (-0.325, -0.25),
  57. func = self.__handleOk)
  58. self.makeButton("CANCEL", pos = (0.2, -0.25),
  59. func = self.__handleCancel)
  60. else:
  61. # create a centered OK button
  62. self.makeButton("OK", pos = (0.0, -0.25), func = self.__handleOk)
  63. self.isLoaded = 1
  64. return None
  65. def unload(self):
  66. """unload(self)
  67. """
  68. if self.isLoaded == 0:
  69. return None
  70. self.hide()
  71. self.cleanup()
  72. self.isLoaded = 0
  73. return None
  74. def __handleRollover(self):
  75. return None
  76. def __handleOk(self):
  77. self.doneStatus = "ok"
  78. messenger.send(self.doneEvent)
  79. def __handleCancel(self):
  80. self.doneStatus = "cancel"
  81. messenger.send(self.doneEvent)
  82. def setMessage(self, message):
  83. """setMessage(self, string)
  84. """
  85. if self.isLoaded == 1:
  86. self.panelText[0].setText(message)