open-toontown/otp/login/LeaveToPayDialog.py

96 lines
3.9 KiB
Python

from otp.otpbase import OTPGlobals
from otp.otpbase import OTPLauncherGlobals
from otp.otpbase import OTPLocalizer
from direct.gui.DirectGui import *
from panda3d.core import *
import os
class LeaveToPayDialog:
def __init__(self, paidUser, destructorHook = None, doneFunc = None):
self.destructorHook = destructorHook
self.dialog = None
self.okHandler = self.__handleLeaveToPayOK
self.cancelHandler = self.__handleLeaveToPayCancel
self.paidUser = paidUser
self.doneFunc = doneFunc
return
def setOK(self, handler):
self.okHandler = handler
def setCancel(self, handler):
self.cancelHandler = handler
def show(self):
if self.paidUser:
if base.cr.productName in ['DisneyOnline-AP',
'DisneyOnline-UK',
'JP',
'FR']:
directFrameText = OTPLocalizer.LeaveToEnableChatUK
directButtonYesText = OTPLocalizer.LeaveToEnableChatUKYes
directButtonNoText = OTPLocalizer.LeaveToEnableChatUKNo
else:
directFrameText = OTPLocalizer.LeaveToSetParentPassword
directButtonYesText = OTPLocalizer.LeaveToSetParentPasswordYes
directButtonNoText = OTPLocalizer.LeaveToSetParentPasswordNo
else:
directFrameText = OTPLocalizer.LeaveToPay
directButtonYesText = OTPLocalizer.LeaveToPayYes
directButtonNoText = OTPLocalizer.LeaveToPayNo
if self.dialog == None:
buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
okButtonImage = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
cancelButtonImage = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr'))
self.dialog = DirectFrame(parent=aspect2dp, pos=(0.0, 0.0, 0.0), relief=None, image=DGG.getDefaultDialogGeom(), image_color=OTPGlobals.GlobalDialogColor, image_scale=(0.9, 1.0, 0.5), text=directFrameText, text_align=TextNode.ALeft, text_wordwrap=14, text_scale=OTPLocalizer.LTPDdirectFrameText, text_pos=(-0.4, 0.15), textMayChange=0)
DirectButton(self.dialog, image=okButtonImage, relief=None, text=directButtonYesText, text_scale=OTPLocalizer.LTPDdirectButtonYesText, text_pos=(0.0, -0.1), textMayChange=0, pos=(-0.23, 0.0, -0.1), command=self.okHandler)
DirectButton(self.dialog, image=cancelButtonImage, relief=None, text=directButtonNoText, text_scale=OTPLocalizer.LTPDdirectButtonNoText, text_pos=(0.0, -0.1), textMayChange=0, pos=(0.23, 0.0, -0.1), command=self.cancelHandler)
buttons.removeNode()
self.dialog.show()
return
def hide(self):
self.dialog.hide()
def destroy(self):
if self.destructorHook:
self.destructorHook()
if self.dialog:
self.dialog.hide()
self.dialog.destroy()
self.destructorHook
self.dialog = None
self.okHandler = None
self.cancelHandler = None
return
def removed(self):
if hasattr(self, 'dialog') and self.dialog:
return self.dialog.removed()
else:
return 1
def __handleLeaveToPayOK(self):
self.destroy()
errorCode = None
if self.paidUser:
if base.cr.productName in ['DisneyOnline-AP',
'DisneyOnline-UK',
'JP',
'DE',
'FR']:
errorCode = OTPLauncherGlobals.ExitEnableChat
else:
errorCode = OTPLauncherGlobals.ExitSetParentPassword
else:
errorCode = OTPLauncherGlobals.ExitPurchase
base.setExitErrorCode(errorCode)
base.cr.loginFSM.request('shutdown', [errorCode])
return
def __handleLeaveToPayCancel(self):
if self.doneFunc:
self.doneFunc()
self.destroy()