forked from metin2/client
153 lines
3.7 KiB
Python
153 lines
3.7 KiB
Python
|
import ui
|
||
|
import ime
|
||
|
import wndMgr
|
||
|
|
||
|
class VerticalCandidateBoard(ui.Board):
|
||
|
|
||
|
CORNER_WIDTH = 3
|
||
|
CORNER_HEIGHT = 3
|
||
|
LINE_WIDTH = 16
|
||
|
LINE_HEIGHT = 16
|
||
|
|
||
|
SLOT_WIDTH = 14
|
||
|
SLOT_HEIGHT = 14
|
||
|
|
||
|
def __init__(self):
|
||
|
ui.Window.__init__(self, "CURTAIN")
|
||
|
|
||
|
self.Base = None
|
||
|
self.BaseBar = None
|
||
|
self.numberList = []
|
||
|
self.slotList = []
|
||
|
|
||
|
def __del__(self):
|
||
|
ui.Board.__del__(self)
|
||
|
|
||
|
def SetCharacterCount(self, xCount, yCount):
|
||
|
self.SetSize(xCount*14 + 14, yCount*14 + 7)
|
||
|
self.BaseBar.SetSize(xCount*14 + 1, yCount*14 + 1)
|
||
|
|
||
|
self.numberList = []
|
||
|
self.slotList = []
|
||
|
|
||
|
for y in xrange(yCount):
|
||
|
|
||
|
number = ui.ImageBox()
|
||
|
number.SetParent(self.BaseBar)
|
||
|
number.LoadImage("d:/ymir work/ui/pattern/ime/%d.tga" % (y+1))
|
||
|
number.SetPosition(5 - 10, 8 + y * 14 - 3)
|
||
|
number.Show()
|
||
|
self.numberList.append(number)
|
||
|
|
||
|
slot = ui.Bar()
|
||
|
slot.SetParent(self.BaseBar)
|
||
|
slot.SetPosition(10 + 1 - 10, 3 + y*14 + 1 - 3)
|
||
|
slot.SetSize(xCount*14 - 1, 13)
|
||
|
slot.SetColor(0xFF302C2A)
|
||
|
slot.Show()
|
||
|
self.slotList.append(slot)
|
||
|
|
||
|
#################################################################
|
||
|
|
||
|
def SetCandidatePosition(self, x, y, textCount):
|
||
|
xPos = x + (textCount - 5) * 6 + 2
|
||
|
yPos = y - self.GetHeight() - 2
|
||
|
self.SetPosition(xPos, yPos)
|
||
|
|
||
|
def Load(self):
|
||
|
self.MakeBoard("d:/ymir work/ui/pattern/ime/corner_", "d:/ymir work/ui/pattern/ime/bar_")
|
||
|
|
||
|
BaseBar = ui.Bar()
|
||
|
BaseBar.SetParent(self)
|
||
|
BaseBar.SetPosition(10, 3)
|
||
|
BaseBar.SetColor(0xff000000)
|
||
|
BaseBar.Show()
|
||
|
self.BaseBar = BaseBar
|
||
|
|
||
|
candidateListBox = ui.CandidateListBox(ui.CandidateListBox.VERTICAL_MODE)
|
||
|
candidateListBox.SetParent(self)
|
||
|
candidateListBox.SetPosition(11, 4)
|
||
|
candidateListBox.SetItemSize(16, 14)
|
||
|
candidateListBox.SetItemStep(14)
|
||
|
candidateListBox.Show()
|
||
|
self.candidateListBox = candidateListBox
|
||
|
|
||
|
def Clear(self):
|
||
|
self.candidateListBox.RemoveAllItems()
|
||
|
|
||
|
def Append(self, text):
|
||
|
self.candidateListBox.AppendItem(ui.CandidateListBox.Item(text))
|
||
|
|
||
|
def Refresh(self):
|
||
|
|
||
|
maxTextLength = 0
|
||
|
yCount = ime.GetCandidateCount()
|
||
|
|
||
|
for i in xrange(yCount):
|
||
|
text, length = ime.GetCandidate(i)
|
||
|
self.Append(text)
|
||
|
|
||
|
if length > maxTextLength:
|
||
|
maxTextLength = length
|
||
|
|
||
|
if maxTextLength > 0:
|
||
|
self.SetCharacterCount(maxTextLength, yCount)
|
||
|
|
||
|
self.candidateListBox.SelectIndex(ime.GetCandidateSelection())
|
||
|
|
||
|
class KORCandidateWindow(ui.ScriptWindow):
|
||
|
|
||
|
def __init__(self):
|
||
|
ui.Window.__init__(self, "CURTAIN")
|
||
|
self.candidateListBox=None
|
||
|
|
||
|
def __del__(self):
|
||
|
ui.Window.__del__(self)
|
||
|
|
||
|
def SetCandidatePosition(self, x, y, textCount):
|
||
|
xPos = x + textCount*6 - 20
|
||
|
yPos = y + 20
|
||
|
xPos = min(xPos, wndMgr.GetScreenWidth() - self.GetWidth())
|
||
|
self.SetPosition(xPos, yPos)
|
||
|
|
||
|
def Clear(self):
|
||
|
self.candidateListBox.RemoveAllItems()
|
||
|
|
||
|
def Append(self, text):
|
||
|
self.candidateListBox.AppendItem(ui.CandidateListBox.Item(text))
|
||
|
|
||
|
def Refresh(self):
|
||
|
for i in xrange(9):
|
||
|
text, length = ime.GetCandidate(i)
|
||
|
self.Append(text)
|
||
|
|
||
|
self.candidateListBox.SelectIndex(ime.GetCandidateSelection())
|
||
|
|
||
|
def Select(self, pos):
|
||
|
self.candidateListBox.SelectIndex(pos)
|
||
|
|
||
|
def Load(self):
|
||
|
self.__LoadScript()
|
||
|
self.__BindObject()
|
||
|
|
||
|
def __LoadScript(self):
|
||
|
try:
|
||
|
pyScrLoader = ui.PythonScriptLoader()
|
||
|
pyScrLoader.LoadScriptFile(self, "UIScript/IMEKOR.py")
|
||
|
except:
|
||
|
import exception
|
||
|
exception.Abort("CandidateWindow.__LoadScript")
|
||
|
|
||
|
def __BindObject(self):
|
||
|
try:
|
||
|
self.candidateListBox=self.GetChild("CandidateList")
|
||
|
|
||
|
except:
|
||
|
import exception
|
||
|
exception.Abort("CandidateWindow.__BindObject")
|
||
|
|
||
|
ui.RegisterCandidateWindowClass(949, KORCandidateWindow)
|
||
|
ui.RegisterCandidateWindowClass(932, VerticalCandidateBoard)
|
||
|
ui.RegisterCandidateWindowClass(936, VerticalCandidateBoard)
|
||
|
ui.RegisterCandidateWindowClass(950, VerticalCandidateBoard)
|