client/bin/pack/root/uicommon.py

420 lines
9.9 KiB
Python
Raw Normal View History

import ui
import localeInfo
import app
import ime
import uiScriptLocale
class PopupDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__LoadDialog()
self.acceptEvent = lambda *arg: None
def __del__(self):
ui.ScriptWindow.__del__(self)
def __LoadDialog(self):
try:
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "UIScript/PopupDialog.py")
self.board = self.GetChild("board")
self.message = self.GetChild("message")
self.accceptButton = self.GetChild("accept")
self.accceptButton.SetEvent(ui.__mem_func__(self.Close))
except:
import exception
exception.Abort("PopupDialog.LoadDialog.BindObject")
def Open(self):
self.SetCenterPosition()
self.SetTop()
self.Show()
def Close(self):
self.Hide()
self.acceptEvent()
def Destroy(self):
self.Close()
self.ClearDictionary()
def SetWidth(self, width):
height = self.GetHeight()
self.SetSize(width, height)
self.board.SetSize(width, height)
self.SetCenterPosition()
self.UpdateRect()
def SetText(self, text):
self.message.SetText(text)
def SetAcceptEvent(self, event):
self.acceptEvent = event
def SetButtonName(self, name):
self.accceptButton.SetText(ButtonName)
def OnPressEscapeKey(self):
self.Close()
return TRUE
def OnIMEReturn(self):
self.Close()
return TRUE
class InputDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
def __del__(self):
ui.ScriptWindow.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/inputdialog.py")
getObject = self.GetChild
self.board = getObject("Board")
self.acceptButton = getObject("AcceptButton")
self.cancelButton = getObject("CancelButton")
self.inputSlot = getObject("InputSlot")
self.inputValue = getObject("InputValue")
def Open(self):
self.inputValue.SetFocus()
self.SetCenterPosition()
self.SetTop()
self.Show()
def Close(self):
self.ClearDictionary()
self.board = None
self.acceptButton = None
self.cancelButton = None
self.inputSlot = None
self.inputValue = None
self.Hide()
def SetTitle(self, name):
self.board.SetTitleName(name)
def SetNumberMode(self):
self.inputValue.SetNumberMode()
def SetSecretMode(self):
self.inputValue.SetSecret()
def SetFocus(self):
self.inputValue.SetFocus()
def SetMaxLength(self, length):
width = length * 6 + 10
self.SetBoardWidth(max(width + 50, 160))
self.SetSlotWidth(width)
self.inputValue.SetMax(length)
def SetSlotWidth(self, width):
self.inputSlot.SetSize(width, self.inputSlot.GetHeight())
self.inputValue.SetSize(width, self.inputValue.GetHeight())
if self.IsRTL():
self.inputValue.SetPosition(self.inputValue.GetWidth(), 0)
def SetBoardWidth(self, width):
self.SetSize(max(width + 50, 160), self.GetHeight())
self.board.SetSize(max(width + 50, 160), self.GetHeight())
if self.IsRTL():
self.board.SetPosition(self.board.GetWidth(), 0)
self.UpdateRect()
def SetAcceptEvent(self, event):
self.acceptButton.SetEvent(event)
self.inputValue.OnIMEReturn = event
def SetCancelEvent(self, event):
self.board.SetCloseEvent(event)
self.cancelButton.SetEvent(event)
self.inputValue.OnPressEscapeKey = event
def GetText(self):
return self.inputValue.GetText()
class InputDialogWithDescription(InputDialog):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
def __del__(self):
InputDialog.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
if localeInfo.IsARABIC() :
pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "inputdialogwithdescription.py")
else:
pyScrLoader.LoadScriptFile(self, "uiscript/inputdialogwithdescription.py")
try:
getObject = self.GetChild
self.board = getObject("Board")
self.acceptButton = getObject("AcceptButton")
self.cancelButton = getObject("CancelButton")
self.inputSlot = getObject("InputSlot")
self.inputValue = getObject("InputValue")
self.description = getObject("Description")
except:
import exception
exception.Abort("InputDialogWithDescription.LoadBoardDialog.BindObject")
def SetDescription(self, text):
self.description.SetText(text)
class InputDialogWithDescription2(InputDialog):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
def __del__(self):
InputDialog.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/inputdialogwithdescription2.py")
try:
getObject = self.GetChild
self.board = getObject("Board")
self.acceptButton = getObject("AcceptButton")
self.cancelButton = getObject("CancelButton")
self.inputSlot = getObject("InputSlot")
self.inputValue = getObject("InputValue")
self.description1 = getObject("Description1")
self.description2 = getObject("Description2")
except:
import exception
exception.Abort("InputDialogWithDescription.LoadBoardDialog.BindObject")
def SetDescription1(self, text):
self.description1.SetText(text)
def SetDescription2(self, text):
self.description2.SetText(text)
class QuestionDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
def __del__(self):
ui.ScriptWindow.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog.py")
self.board = self.GetChild("board")
self.textLine = self.GetChild("message")
self.acceptButton = self.GetChild("accept")
self.cancelButton = self.GetChild("cancel")
def Open(self):
self.SetCenterPosition()
self.SetTop()
self.Show()
def Close(self):
self.Hide()
def SetWidth(self, width):
height = self.GetHeight()
self.SetSize(width, height)
self.board.SetSize(width, height)
self.SetCenterPosition()
self.UpdateRect()
def SAFE_SetAcceptEvent(self, event):
self.acceptButton.SAFE_SetEvent(event)
def SAFE_SetCancelEvent(self, event):
self.cancelButton.SAFE_SetEvent(event)
def SetAcceptEvent(self, event):
self.acceptButton.SetEvent(event)
def SetCancelEvent(self, event):
self.cancelButton.SetEvent(event)
def SetText(self, text):
self.textLine.SetText(text)
def SetAcceptText(self, text):
self.acceptButton.SetText(text)
def SetCancelText(self, text):
self.cancelButton.SetText(text)
def OnPressEscapeKey(self):
self.Close()
return TRUE
class QuestionDialog2(QuestionDialog):
def __init__(self):
QuestionDialog.__init__(self)
self.__CreateDialog()
def __del__(self):
QuestionDialog.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py")
self.board = self.GetChild("board")
self.textLine1 = self.GetChild("message1")
self.textLine2 = self.GetChild("message2")
self.acceptButton = self.GetChild("accept")
self.cancelButton = self.GetChild("cancel")
def SetText1(self, text):
self.textLine1.SetText(text)
def SetText2(self, text):
self.textLine2.SetText(text)
class QuestionDialogWithTimeLimit(QuestionDialog2):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
self.endTime = 0
def __del__(self):
QuestionDialog2.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py")
self.board = self.GetChild("board")
self.textLine1 = self.GetChild("message1")
self.textLine2 = self.GetChild("message2")
self.acceptButton = self.GetChild("accept")
self.cancelButton = self.GetChild("cancel")
def Open(self, msg, timeout):
self.SetCenterPosition()
self.SetTop()
self.Show()
self.SetText1(msg)
self.endTime = app.GetTime() + timeout
def OnUpdate(self):
leftTime = max(0, self.endTime - app.GetTime())
self.SetText2(localeInfo.UI_LEFT_TIME % (leftTime))
class MoneyInputDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.moneyHeaderText = localeInfo.MONEY_INPUT_DIALOG_SELLPRICE
self.__CreateDialog()
self.SetMaxLength(9)
def __del__(self):
ui.ScriptWindow.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/moneyinputdialog.py")
getObject = self.GetChild
self.board = self.GetChild("board")
self.acceptButton = getObject("AcceptButton")
self.cancelButton = getObject("CancelButton")
self.inputValue = getObject("InputValue")
self.inputValue.SetNumberMode()
self.inputValue.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdate)
self.moneyText = getObject("MoneyValue")
def Open(self):
self.inputValue.SetText("")
self.inputValue.SetFocus()
self.__OnValueUpdate()
self.SetCenterPosition()
self.SetTop()
self.Show()
def Close(self):
self.ClearDictionary()
self.board = None
self.acceptButton = None
self.cancelButton = None
self.inputValue = None
self.Hide()
def SetTitle(self, name):
self.board.SetTitleName(name)
def SetFocus(self):
self.inputValue.SetFocus()
def SetMaxLength(self, length):
length = min(9, length)
self.inputValue.SetMax(length)
def SetMoneyHeaderText(self, text):
self.moneyHeaderText = text
def SetAcceptEvent(self, event):
self.acceptButton.SetEvent(event)
self.inputValue.OnIMEReturn = event
def SetCancelEvent(self, event):
self.board.SetCloseEvent(event)
self.cancelButton.SetEvent(event)
self.inputValue.OnPressEscapeKey = event
def SetValue(self, value):
value=str(value)
self.inputValue.SetText(value)
self.__OnValueUpdate()
ime.SetCursorPosition(len(value))
def GetText(self):
return self.inputValue.GetText()
def __OnValueUpdate(self):
ui.EditLine.OnIMEUpdate(self.inputValue)
text = self.inputValue.GetText()
money = 0
if text and text.isdigit():
try:
money = int(text)
except ValueError:
money = 199999999
self.moneyText.SetText(self.moneyHeaderText + localeInfo.NumberToMoneyString(money))