client/bin/pack/root/uicandidate.py

153 lines
3.7 KiB
Python
Raw Normal View History

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)