DialogBox.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. # NOTE: all db's have the same name so we can kill them easily
  27. OnscreenPanel.OnscreenPanel.__init__(self, "globalDialog")
  28. return None
  29. def show(self):
  30. """show(self)
  31. """
  32. if self.isLoaded == 0:
  33. self.load()
  34. OnscreenPanel.OnscreenPanel.show(self)
  35. return None
  36. def hide(self):
  37. """hide(self)
  38. """
  39. if self.isLoaded == 0:
  40. return None
  41. OnscreenPanel.OnscreenPanel.hide(self)
  42. return None
  43. def load(self):
  44. """load(self)
  45. """
  46. if self.isLoaded == 1:
  47. return None
  48. # make the panel
  49. self.makePanel(rect = (-0.5, 0.5, -0.4, 0.4),
  50. drawOrder = 32000, font = self.font,
  51. bg = (0.8, 0.8, 0.8, 1.0))
  52. # create a message
  53. self.makeText(self.message, wordwrap = self.wordwrap, scale = 0.08,
  54. pos = (0.0, 0.25))
  55. if (self.style == TwoChoice):
  56. # create OK and CANCEL buttons
  57. self.makeButton("OK", pos = (-0.325, -0.25),
  58. func = self.__handleOk)
  59. self.makeButton("Cancel", pos = (0.2, -0.25),
  60. func = self.__handleCancel)
  61. else:
  62. # create a centered OK button
  63. self.makeButton("OK", pos = (0.0, -0.25), func = self.__handleOk)
  64. self.isLoaded = 1
  65. return None
  66. def unload(self):
  67. """unload(self)
  68. """
  69. if self.isLoaded == 0:
  70. return None
  71. self.hide()
  72. self.cleanup()
  73. self.isLoaded = 0
  74. return None
  75. def __handleRollover(self):
  76. return None
  77. def __handleOk(self):
  78. self.doneStatus = "ok"
  79. messenger.send(self.doneEvent)
  80. def __handleCancel(self):
  81. self.doneStatus = "cancel"
  82. messenger.send(self.doneEvent)
  83. def setMessage(self, message):
  84. """setMessage(self, string)
  85. """
  86. if self.isLoaded == 1:
  87. self.panelText[0].setText(message)