rythme24 0 Posted May 5 Share Posted May 5 (edited) Can anyone help me with this error message? this error always comes up when i move the scrollbar. Spoiler 1 : syserr Spoiler 2: uiWiki.py Spoiler 0505 17:14:27212 :: Traceback (most recent call last): 0505 17:14:27212 :: File "ui.py", line 3154, in OnMove 0505 17:14:27213 :: File "ui.py", line 58, in __call__ 0505 17:14:27213 :: File "ui.py", line 40, in __call__ 0505 17:14:27213 :: File "uiWiki.py", line 1191, in OnMove 0505 17:14:27213 :: File "ui.py", line 58, in __call__ 0505 17:14:27214 :: File "ui.py", line 40, in __call__ 0505 17:14:27214 :: File "uiWiki.py", line 1297, in __OnScroll 0505 17:14:27214 :: File "uiWiki.py", line 1321, in SetBasePos 0505 17:14:27214 :: File "uiWiki.py", line 2377, in OnRender 0505 17:14:27215 :: AttributeError 0505 17:14:27215 :: : 0505 17:14:27215 :: 'NoneType' object has no attribute 'GetGlobalPosition' 0505 17:14:27215 :: Spoiler import localeInfo import dbg, ui, grp, app, wiki, item, nonplayer, renderTarget def calculateRect(curValue, maxValue): return -1.0 + float(curValue) / float(maxValue) def HAS_FLAG(value, flag): return (value & flag) == flag def calculatePos(pos, maxWidth): yincrease = 0 x , y = 0,0 for j in xrange(30): if pos <= maxWidth: if yincrease > 0: pos = pos-1 if pos < 0: pos = 0 x = 32*pos break else: pos-= maxWidth yincrease+=1 if yincrease > 0: y = yincrease * 32 return (x,y) IMG_DIR = "d:/ymir work/ui/game/wiki/" class EncyclopediaofGame(ui.BoardWithTitleBar): def __init__(self): ui.BoardWithTitleBar.__init__(self) self.AddFlag("movable") # Search self.selectedMob = 0 self.selectedItem = 0 self.searchSlot = None self.searchButton = None self.searchText = None self.searchItemNameText = None self.searchItemName = None self.searchClearBtn = None self.mobSlot = None self.searchButtonMob = None self.searchMobNameText = None self.searchMobName = None self.searchClearBtnMob = None # Category self.categoryText = None self.listBoxCube = None self.scrollBarListBoxCube = None self.tooltipItem = None # Block self.blockImage = None # Result Page self.resultpageImage=None self.resultpagebtn=None self.characterList = [] self.characterIndex = 0 self.resultpageListbox = None self.resultpageListboxScrollbar = None self.blocImage = None self.selectArg="" self.Initialize() def __del__(self): ui.BoardWithTitleBar.__del__(self) def Initialize(self): self.SetSize(720,480) self.SetTitleName(localeInfo.WIKI_TITLE) self.SetCenterPosition() self.LoadSearchInfos() self.LoadCategoryInfos() self.LoadBlock() self.LoadResultPage() def SetTooltip(self, tooltip): self.tooltipItem = tooltip def LoadResultPage(self): self.resultpagebtn = ui.Button() self.resultpagebtn.SetParent(self) self.resultpagebtn.SetUpVisual(IMG_DIR+"guide_wall.tga") self.resultpagebtn.SetOverVisual(IMG_DIR+"guide_wall.tga") self.resultpagebtn.SetDownVisual(IMG_DIR+"guide_wall.tga") self.resultpagebtn.SetPosition(140+10,32) self.resultpagebtn.SAFE_SetEvent(self.LoadGuidePage) self.resultpagebtn.Show() self.resultPageImage = ui.ImageBox() self.resultPageImage.SetParent(self) self.resultPageImage.LoadImage(IMG_DIR+"result_wall.tga") self.resultPageImage.SetPosition(140+10,104) self.resultPageImage.Show() for j in xrange(4): ch = ui.RadioButton() ch.SetParent(self.resultPageImage) ch.SetEvent(ui.__mem_func__(self.__SelectCharacters),self.characterList,j) ch.SetUpVisual(IMG_DIR+"character/%d_0.tga"%j) ch.SetOverVisual(IMG_DIR+"character/%d_1.tga"%j) ch.SetDownVisual(IMG_DIR+"character/%d_2.tga"%j) ch.SetPosition(16+(132*j),11) ch.Hide() self.characterList.append(ch) self.resultpageListbox = ListBoxWiki() self.resultpageListbox.SetParent(self) self.resultpageListbox.SetPosition(140+18,104+34+5+11) self.resultpageListbox.SetSize(570, 326) self.resultpageListbox.SetViewItemCount(10) self.resultpageListboxScrollbar = ScrollBarNew() self.resultpageListboxScrollbar.SetParent(self) self.resultpageListboxScrollbar.SetPosition(140+18+541,104+34+5+11) self.resultpageListboxScrollbar.SetScrollBarSize(310) self.resultpageListbox.SetScrollBar(self.resultpageListboxScrollbar) def LoadGuidePage(self): self.resultpagebtn.SetUpVisual(IMG_DIR+"guide_wall.tga") self.resultpagebtn.SetOverVisual(IMG_DIR+"guide_wall.tga") self.resultpagebtn.SetDownVisual(IMG_DIR+"guide_wall.tga") def LoadBlock(self): self.blocImage = ui.ImageBox() self.blocImage.SetParent(self) # <board> self.blocImage.LoadImage(IMG_DIR+"block.tga") self.blocImage.SetPosition(140,32) self.blocImage.Show() def LoadSearchInfos(self): self.selectedMob = 0 self.selectedItem = 0 self.searchSlot = ui.ImageBox() self.searchSlot.SetParent(self) # <board> self.searchSlot.LoadImage(IMG_DIR+"search_slot.tga") self.searchSlot.SetPosition(13,32) self.searchSlot.Show() self.searchButton = ui.Button() self.searchButton.SetParent(self.searchSlot) # <self.searchSlot> self.searchButton.SetUpVisual(IMG_DIR+"button_0.tga") self.searchButton.SetOverVisual(IMG_DIR+"button_1.tga") self.searchButton.SetDownVisual(IMG_DIR+"button_2.tga") self.searchButton.SAFE_SetEvent(self.StartSearchItem) self.searchButton.SetPosition(91,3) self.searchButton.Show() self.searchItemNameText = ui.TextLine() self.searchItemNameText.SetParent(self.searchSlot) self.searchItemNameText.SetPosition(2,5) self.searchItemNameText.SetFontName("Tahoma:11") self.searchItemNameText.SetText("") self.searchItemNameText.Show() self.searchItemName = ui.EditLine() self.searchItemName.SetParent(self.searchSlot) self.searchItemName.SetPosition(2,5) self.searchItemName.SetSize(91,26) self.searchItemName.SetFontName("Tahoma:11") self.searchItemName.SetText(localeInfo.WIKI_ITEM_NAME) self.searchItemName.SetMax(30) self.searchItemName.Show() self.searchItemName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateItem) self.searchItemName.SetReturnEvent(ui.__mem_func__(self.StartSearchItem)) self.searchClearBtn = ui.Button() self.searchClearBtn.SetParent(self.searchSlot) self.searchClearBtn.SetUpVisual(IMG_DIR+"clear_button_1.tga") self.searchClearBtn.SetOverVisual(IMG_DIR+"clear_button_2.tga") self.searchClearBtn.SetDownVisual(IMG_DIR+"clear_button_1.tga") self.searchClearBtn.SetPosition(75,5) self.searchClearBtn.SAFE_SetEvent(self.ClearEditlineItem) self.searchClearBtn.Hide() self.mobSlot = ui.ImageBox() self.mobSlot.SetParent(self) # <board> self.mobSlot.LoadImage(IMG_DIR+"search_slot.tga") self.mobSlot.SetPosition(13,32+29) self.mobSlot.Show() self.searchButtonMob = ui.Button() self.searchButtonMob.SetParent(self.mobSlot) # <self.searchSlot> self.searchButtonMob.SetUpVisual(IMG_DIR+"button_0.tga") self.searchButtonMob.SetOverVisual(IMG_DIR+"button_1.tga") self.searchButtonMob.SetDownVisual(IMG_DIR+"button_2.tga") self.searchButtonMob.SAFE_SetEvent(self.StartSearchMob) self.searchButtonMob.SetPosition(91,2) self.searchButtonMob.Show() self.searchMobNameText = ui.TextLine() self.searchMobNameText.SetParent(self.mobSlot) self.searchMobNameText.SetPosition(2,5) self.searchMobNameText.SetFontName("Tahoma:11") self.searchMobNameText.SetText("") self.searchMobNameText.Show() self.searchMobName = ui.EditLine() self.searchMobName.SetParent(self.mobSlot) self.searchMobName.SetPosition(2,5) self.searchMobName.SetSize(91,26) self.searchMobName.SetFontName("Tahoma:11") self.searchMobName.SetText(localeInfo.WIKI_MOB_NAME) self.searchMobName.SetMax(30) self.searchMobName.Show() self.searchMobName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateMob) self.searchMobName.SetReturnEvent(ui.__mem_func__(self.StartSearchMob)) self.searchClearBtnMob = ui.Button() self.searchClearBtnMob.SetParent(self.mobSlot) self.searchClearBtnMob.SetUpVisual(IMG_DIR+"clear_button_1.tga") self.searchClearBtnMob.SetOverVisual(IMG_DIR+"clear_button_2.tga") self.searchClearBtnMob.SetDownVisual(IMG_DIR+"clear_button_1.tga") self.searchClearBtnMob.SetPosition(75,5) self.searchClearBtnMob.SAFE_SetEvent(self.ClearEditlineMob) self.searchClearBtnMob.Hide() def UpdateItemsList(self): if len(self.searchItemName.GetText()) > 0: self.searchClearBtn.Show() items_list = item.GetItemsByName(str(self.searchItemName.GetText())) for i, items in enumerate(items_list, start=1): item.SelectItem(items) if len(self.searchItemName.GetText()) > len(item.GetItemName()): self.searchItemNameText.SetText("") continue if item.GetItemName().find("+") != -1: if item.GetItemName()[:-2] == self.searchItemName.GetText(): self.selectedItem=items self.selectedType=0 self.searchItemNameText.SetText("|cff00ff00%s"%item.GetItemName()[:-2]) else: if item.GetItemName() == self.searchItemName.GetText(): self.selectedType=0 self.selectedItem=items self.searchItemNameText.SetText("|cff00ff00%s"%item.GetItemName()) if len(self.searchItemNameText.GetText()) == len(self.searchItemName.GetText()): self.searchItemNameText.SetText("") else: self.selectedItem=0 self.searchItemName.SetText("") self.searchItemNameText.SetText("") self.searchClearBtn.Hide() def __OnValueUpdateItem(self): ui.EditLine.OnIMEUpdate(self.searchItemName) self.UpdateItemsList() if len(self.searchItemName.GetText()) > 0: self.searchClearBtn.Show() def OnKeyDown(self, key): if app.DIK_RETURN == key: if self.selectedItem > 1: self.StartSearchItem() else: self.StartSearchItem() return True return True def ClearEditlineItem(self): self.selectedItem=0 self.searchItemName.SetText("") self.searchItemNameText.SetText("") self.searchClearBtn.Hide() def StartSearchItem(self): if self.selectedItem != 0: self.ShowItemInfo(self.selectedItem,0) ######################################### def UpdateMobsList(self): if len(self.searchMobName.GetText()) > 0: self.searchClearBtnMob.Show() mobs_list = nonplayer.GetMobsByNameWiki(str(self.searchMobName.GetText())) for i, mobs in enumerate(mobs_list, start=1): mob_name = nonplayer.GetMonsterName(mobs) if len(self.searchMobName.GetText()) > len(mob_name): self.searchMobNameText.SetText("") continue if mob_name.find("+") != -1: if mob_name[:-2] == self.searchMobName.GetText(): self.selectedMob=mobs self.searchMobNameText.SetText("|cff00ff00%s"%mob_name[:-2]) else: if mob_name == self.searchMobName.GetText(): self.selectedMob=mobs self.searchMobNameText.SetText("|cff00ff00%s"%mob_name) if len(self.searchMobNameText.GetText()) == len(self.searchMobName.GetText()): self.searchMobNameText.SetText("") else: self.selectedMob=0 self.searchMobName.SetText("") self.searchMobNameText.SetText("") self.searchClearBtnMob.Hide() def __OnValueUpdateMob(self): ui.EditLine.OnIMEUpdate(self.searchMobName) self.UpdateMobsList() if len(self.searchMobName.GetText()) > 0: self.searchClearBtnMob.Show() def OnKeyDown(self, key): if app.DIK_RETURN == key: if self.selectedMob > 1: self.StartSearchMob() else: self.StartSearchMob() return True return True def ClearEditlineMob(self): self.selectedMob=0 self.searchMobName.SetText("") self.searchMobNameText.SetText("") self.searchClearBtnMob.Hide() def StartSearchMob(self): if self.selectedMob != 0: self.ShowItemInfo(self.selectedMob,1) def LoadCategoryInfos(self): self.categoryText = ui.TextLine() self.categoryText.SetParent(self) # <board> self.categoryText.SetPosition(13,89) self.categoryText.SetText(localeInfo.WIKI_CATEGORY) self.categoryText.Show() self.listBoxCube = DropdownTree() self.listBoxCube.SetParent(self) self.listBoxCube.SetPosition(13,105) self.listBoxCube.SetSize(109, 295) self.listBoxCube.SetItemSize(109, 18) self.listBoxCube.SetViewItemCount(18) self.listBoxCube.Show() self.scrollBarListBoxCube = ScrollBarNew() self.scrollBarListBoxCube.SetParent(self) self.scrollBarListBoxCube.SetPosition(109+15,105) self.scrollBarListBoxCube.SetScrollBarSize(365) self.scrollBarListBoxCube.Show() self.listBoxCube.SetScrollBar(self.scrollBarListBoxCube) listBoxCubeItems = [ { 'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_EQUIPMENT, lambda arg = ("Equipment#"): self.__EmptyFunction(arg)), 'children' : ( {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_WEAPONS, lambda arg = ("Equipment#0"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_ARMOR, lambda arg = ("Equipment#1"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_HELMET, lambda arg = ("Equipment#2"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_SHIELD, lambda arg = ("Equipment#3"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_EARRING, lambda arg = ("Equipment#4"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_BRACELET, lambda arg = ("Equipment#5"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_NECKLACE, lambda arg = ("Equipment#6"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_SHOES, lambda arg = ("Equipment#7"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_BELT, lambda arg = ("Equipment#8"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_TALISMAN, lambda arg = ("Equipment#9"): self.__SelectType(arg)),}, ) }, { 'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_CHESTS, lambda arg = ("Chests#"): self.__EmptyFunction(arg)), 'children' : ( {'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_BOSS, lambda arg = ("Chests#0"): self.__SelectType(arg))}, {'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_EVENT, lambda arg = ("Chests#1"): self.__SelectType(arg))}, {'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_ALTERNATIVE, lambda arg = ("Chests#2"): self.__SelectType(arg))}, ) }, { 'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_BOSSES, lambda arg = ("Bosses#"): self.__EmptyFunction(arg)), 'children' : ( {'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Bosses#0"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Bosses#1"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Bosses#2"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_BOSSES_EVENT, lambda arg = ("Bosses#3"): self.__SelectType(arg)),}, ) }, { 'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_MONSTER, lambda arg = ("Monster#"): self.__EmptyFunction(arg)), 'children' : ( {'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Monster#0"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Monster#1"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Monster#2"): self.__SelectType(arg)),}, ) }, { 'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_METINSTONE, lambda arg = ("Metinstone#"): self.__EmptyFunction(arg)), 'children' : ( {'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Metinstone#0"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Metinstone#1"): self.__SelectType(arg)),}, {'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Metinstone#2"): self.__SelectType(arg)),}, ) } ] self.listBoxCube.AppendItemList(listBoxCubeItems) def __EmptyFunction(self, arg): pass def __SelectCharacters(self, buttonList, buttonIndex): self.__ClickRadioButton(buttonList,buttonIndex) self.__SelectType(self.selectArg,True) def __ClickRadioButton(self, buttonList, buttonIndex): try: characterIndex=buttonList[buttonIndex] except IndexError: return for eachButton in buttonList: eachButton.SetUp() characterIndex.Down() self.characterIndex=buttonIndex def SetCharacterImagesStatus(self, flag): if flag: for j in xrange(4): self.characterList[j].Show() self.__ClickRadioButton(self.characterList,self.characterIndex) else: for j in xrange(4): self.characterList[j].Hide() def ClearResultListbox(self, argList): try: self.resultpageListbox.RemoveAllItems() self.resultpageListboxScrollbar.Hide() self.resultpageListbox.Show() renderTarget.Destroy() isEquipment = argList[0] == "Equipment" if argList[0].lower() != self.resultpagebtn.GetUpVisualFileName(): if argList[0].lower() == "equipment" or argList[0].lower() == "chests": self.resultpagebtn.SetUpVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1]))) self.resultpagebtn.SetOverVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1]))) self.resultpagebtn.SetDownVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1]))) else: self.resultpagebtn.SetUpVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower())) self.resultpagebtn.SetOverVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower())) self.resultpagebtn.SetDownVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower())) if isEquipment: self.SetCharacterImagesStatus(True) self.resultpageListbox.SetPosition(140+18,104+34+5+11) self.resultpageListboxScrollbar.SetPosition(140+18+541,104+34+5+11) self.resultpageListboxScrollbar.SetScrollBarSize(310) self.resultpageListbox.SetSize(570, 326) else: self.SetCharacterImagesStatus(False) self.resultpageListbox.SetPosition(140+18,104+5) self.resultpageListboxScrollbar.SetPosition(140+18+541,104+5) self.resultpageListboxScrollbar.SetScrollBarSize(350) self.resultpageListbox.SetSize(570, 360) except: pass def __SelectType(self, arg, isCharacterBtn = False): try: if isCharacterBtn == False and self.selectArg == arg: return self.selectArg = arg argList = arg.split("#") self.ClearResultListbox(argList) if argList[0] == "Equipment": for j in xrange(wiki.GetCategorySize(self.characterIndex,int(argList[1]))): itemVnum = wiki.GetCategoryData(self.characterIndex,int(argList[1]),j) if j==0: item = EquipmentItem(j,self,self.resultpageListbox,itemVnum,False) else: item = EquipmentItem(j,self,self.resultpageListbox,itemVnum,True) (igx,igy) = item.GetGlobalPosition() (lgx,lgy) = self.resultpageListbox.GetGlobalPosition() if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight(): self.resultpageListboxScrollbar.Show() self.resultpageListbox.AppendItem(item) elif argList[0] == "Chests": for j in xrange(wiki.GetChestSize(int(argList[1]))): (itemVnum, bossVnum)= wiki.GetChestData(int(argList[1]),j) if itemVnum == 0: continue item = ListBoxItemSpecial(j,self,self.resultpageListbox,itemVnum,bossVnum,0) (igx,igy) = item.GetGlobalPosition() (lgx,lgy) = self.resultpageListbox.GetGlobalPosition() if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight(): self.resultpageListboxScrollbar.Show() self.resultpageListbox.AppendItem(item) elif argList[0] == "Bosses": for j in xrange(wiki.GetBossSize(int(argList[1]))): mobVnum = wiki.GetBossData(int(argList[1]),j) if mobVnum == 0: continue item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1) (igx,igy) = item.GetGlobalPosition() (lgx,lgy) = self.resultpageListbox.GetGlobalPosition() if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight(): self.resultpageListboxScrollbar.Show() self.resultpageListbox.AppendItem(item) elif argList[0] == "Monster": for j in xrange(wiki.GetMonsterSize(int(argList[1]))): mobVnum = wiki.GetMonsterData(int(argList[1]),j) if mobVnum == 0: continue item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1) (igx,igy) = item.GetGlobalPosition() (lgx,lgy) = self.resultpageListbox.GetGlobalPosition() if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight(): self.resultpageListboxScrollbar.Show() self.resultpageListbox.AppendItem(item) elif argList[0] == "Metinstone": for j in xrange(wiki.GetStoneSize(int(argList[1]))): mobVnum = wiki.GetStoneData(int(argList[1]),j) if mobVnum == 0: continue item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1) (igx,igy) = item.GetGlobalPosition() (lgx,lgy) = self.resultpageListbox.GetGlobalPosition() if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight(): self.resultpageListboxScrollbar.Show() self.resultpageListbox.AppendItem(item) except: pass def ShowItemInfo(self, vnum, arg): try: self.resultpageListboxScrollbar.Show() if arg == 0: # item info self.ClearResultListbox(self.selectArg.split("#")) self.resultpageListboxScrollbar.Show() item.SelectItem(vnum) item_table = EquipmentItemSpecial(self,self.resultpageListbox,vnum) self.resultpageListbox.AppendItem(item_table) if item.GetItemName().find("+") != -1: new_refine_table = EquipmentItem(99,self,self.resultpageListbox,vnum,False) self.resultpageListbox.AppendItem(new_refine_table) elif arg == 1: self.ClearResultListbox("Chests#0".split("#")) self.resultpageListboxScrollbar.Show() monster_table = MonsterItemSpecial(self,self.resultpageListbox,vnum) self.resultpageListbox.AppendItem(monster_table) monster_statics = MonsterStatics(self,self.resultpageListbox,vnum) self.resultpageListbox.AppendItem(monster_statics) except: pass def OnUpdate(self): if len( self.resultpageListbox.GetItems())==0: return for j in xrange(len(self.resultpageListbox.itemList)): list_item = self.resultpageListbox.itemList[j] (pgx,pgy) = self.resultpageListbox.GetGlobalPosition() (sgx,sgy) = list_item.GetGlobalPosition() height = 100 isMonsterPage = list_item.isType == 0 if not isMonsterPage: height=500 if sgx+list_item.GetHeight() < pgy: # list_item.Hide() list_item.ClearData() elif (sgy+list_item.GetHeight()-height) > pgy+self.resultpageListbox.GetHeight(): # list_item.Hide() list_item.ClearData() else: list_item.LoadItemInfos() def CreateCubeMenuTab1Item(self, text, event, offset = 0): listboxItem = CubeMenuTab1(text) listboxItem.SetVisible(True) listboxItem.SetEvent(event) listboxItem.SetOffset(offset) return listboxItem def CreateLastListItem(self, text, event, offset = 0): listboxItem = LastListItem(text) listboxItem.SetEvent(event) listboxItem.SetOffset(offset) return listboxItem def Open(self): self.Show() def Destroy(self): self.listBoxCube.ClearItem() self.listBoxCube = 0 self.resultpageListbox.RemoveAllItems() self.resultpageListbox = 0 self.tooltipItem = None self.selectedMob = 0 self.selectedItem = 0 self.searchSlot = None self.searchButton = None self.searchText = None self.searchItemNameText = None self.searchItemName = None self.searchClearBtn = None self.mobSlot = None self.searchButtonMob = None self.searchMobNameText = None self.searchMobName = None self.searchClearBtnMob = None self.categoryText = None self.scrollBarListBoxCube = 0 self.blockImage = 0 self.resultpageImage=0 self.resultpagebtn=0 self.characterList = 0 self.characterIndex = 0 self.resultpageListboxScrollbar = 0 self.blocImage = 0 self.selectArg=0 del self def Close(self): self.Hide() def OnPressExitKey(self): self.Close() return True def OnPressEscapeKey(self): self.Close() return True class DropdownTree(ui.Window): class Item(ui.Window): def __init__(self): ui.Window.__init__(self) self.id = -1 self.parentId = -1 self.offset = 0 self.visible = False self.expanded = False self.event = None self.onCollapseEvent = None self.onExpandEvent = None def __del__(self): ui.Window.__del__(self) def SetParent(self, parent): ui.Window.SetParent(self, parent) self.parent=ui.proxy(parent) def SetSize(self, width, height): ui.Window.SetSize(self, width, height) def GetId(self): return self.id def SetId(self, id): self.id = id def GetParentId(self): return self.parentId def SetParentId(self, parentId): self.parentId = parentId def IsParent(self): return self.parentId == -1 def SetVisible(self, visible): self.visible = visible def IsVisible(self): return self.visible def IsExpanded(self): return self.expanded def Expand(self): self.expanded = True if self.onExpandEvent: self.onExpandEvent() def Collapse(self): self.expanded = False if self.onCollapseEvent: self.onCollapseEvent() def SetOnExpandEvent(self, event): self.onExpandEvent = event def SetOnCollapseEvent(self, event): self.onCollapseEvent = event def SetOffset(self, offset): self.offset = offset def GetOffset(self): return self.offset def SetEvent(self, event): self.event = event def OnSelect(self): if self.event: self.event() self.parent.SelectItem(self) def OnMouseLeftButtonDown(self): self.OnSelect() def __init__(self): ui.Window.__init__(self) self.__curItemId=0 self.viewItemCount=10 self.basePos=0 self.itemHeight=16 self.itemStep=20 self.selItem=0 self.itemList=[] self.onSelectItemEvent = lambda *arg: None self.itemWidth=100 self.scrollBar=None self.__UpdateSize() def __del__(self): ui.Window.__del__(self) def __UpdateSize(self): height=self.itemStep*self.__GetViewItemCount() #self.SetSize(self.itemWidth, height) self.SetSize(self.itemWidth, 375) def IsEmpty(self): if len(self.itemList)==0: return 1 return 0 def OnMouseWheel(self, nLen): if self.scrollBar: self.scrollBar.OnMouseWheel(nLen) def SetItemStep(self, itemStep): self.itemStep=itemStep self.__UpdateSize() def SetItemSize(self, itemWidth, itemHeight): self.itemWidth=itemWidth self.itemHeight=itemHeight self.__UpdateSize() def SetViewItemCount(self, viewItemCount): self.viewItemCount=viewItemCount def SetSelectEvent(self, event): self.onSelectItemEvent = event def SetBasePos(self, basePos): for oldItem in self.itemList: oldItem.Hide() self.basePos=basePos skipCount = basePos pos = basePos for lItem in self.itemList: if not lItem.IsVisible(): continue if skipCount > 0: skipCount -= 1 continue if pos >= (self.basePos+self.viewItemCount): break (x, y) = self.GetItemViewCoord(pos, lItem.GetWidth()) lItem.SetPosition(x+lItem.GetOffset(), y) lItem.Show() pos+=1 self.UpdateScrollbar() def GetItemIndex(self, argItem): return self.itemList.index(argItem) def GetSelectedItem(self): return self.selItem def SelectIndex(self, index): if index >= len(self.itemList) or index < 0: self.selItem = None return try: self.selItem=self.itemList[index] except: pass def ClearItem(self): self.selItem=None for lItem in self.itemList: lItem.Hide() self.itemList=[] self.__curItemId = 0 if self.scrollBar: self.scrollBar.SetPos(0) self.SetBasePos(0) def SelectItem(self, selItem): self.selItem = selItem if selItem.IsExpanded(): self.CloseTree(selItem, self.itemList) else: self.OpenTree(selItem, self.itemList) self.SetBasePos(self.basePos) def __AppendItem(self, newItem, parentId): curItemId = self.__curItemId self.__curItemId += 1 newItem.SetParent(self) newItem.SetParentId(parentId) newItem.SetSize(self.itemWidth, self.itemHeight) newItem.SetId(curItemId) pos = self.__GetItemCount() self.itemList.append(newItem) if newItem.IsVisible() and self.__IsInViewRange(pos): (x, y)=self.GetItemViewCoord(pos, newItem.GetWidth()) newItem.SetPosition(x, y) newItem.Show() else: newItem.Hide() self.UpdateScrollbar() return curItemId def AppendItemList(self, dict): self.__AppendItemList(-1, dict) def __AppendItemList(self, parentId, dict): for lItem in dict: if 'item' in lItem: id = self.__AppendItem(lItem['item'], parentId) if 'children' in lItem: self.__AppendItemList(id, lItem['children']) def SetScrollBar(self, scrollBar): scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll)) self.scrollBar=scrollBar def __OnScroll(self): self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen())) def __GetScrollLen(self): scrollLen=self.__GetItemCount()-self.__GetViewItemCount() if scrollLen<0: return 0 return scrollLen def __GetViewItemCount(self): return self.viewItemCount def __GetItemCount(self): return sum(1 for lItem in self.itemList if lItem.IsVisible()) def GetItemViewCoord(self, pos, itemWidth): return (0, (pos-self.basePos)*self.itemStep) def __IsInViewRange(self, pos): if pos<self.basePos: return 0 if pos>=self.basePos+self.viewItemCount: return 0 return 1 def UpdateScrollbar(self): if self.__GetViewItemCount() < self.__GetItemCount(): self.scrollBar.SetMiddleBarSize(float(self.__GetViewItemCount())/self.__GetItemCount()) self.scrollBar.Show() else: self.scrollBar.Hide() def CloseTree(self, curItem, list): curItem.Collapse() for listboxItem in list: if listboxItem.GetParentId() == curItem.GetId(): listboxItem.SetVisible(False) self.CloseTree(listboxItem, list) def OpenTree(self, curItem, list): curItem.Expand() for listboxItem in list: if listboxItem.GetParentId() == curItem.GetId(): listboxItem.SetVisible(True) class CubeMenuTab1(DropdownTree.Item): def __init__(self, text): DropdownTree.Item.__init__(self) self.overLine = False self.iconBackgroundImage = ui.ImageBox() self.iconBackgroundImage.SetParent(self) self.iconBackgroundImage.AddFlag("not_pick") self.iconBackgroundImage.SetPosition(0,0) self.iconBackgroundImage.LoadImage(IMG_DIR +"plus.tga") self.iconBackgroundImage.Show() self.textLine=ui.TextLine() self.textLine.SetParent(self.iconBackgroundImage) self.textLine.SetPosition(0,1) self.textLine.SetWindowHorizontalAlignLeft() #self.textLine.SetHorizontalAlignCenter() self.textLine.SetText(" "+text) self.textLine.Show() self.SetOnExpandEvent(self.ExpandEvent) self.SetOnCollapseEvent(self.CollapseEvent) def SetSize(self, width, height): DropdownTree.Item.SetSize(self, width-self.GetOffset(), height) def CollapseEvent(self): self.iconBackgroundImage.LoadImage(IMG_DIR +"plus.tga") self.iconBackgroundImage.Show() def ExpandEvent(self): self.iconBackgroundImage.LoadImage(IMG_DIR +"minus.tga") self.iconBackgroundImage.Show() def GetText(self): return self.textLine.GetText() def __del__(self): DropdownTree.Item.__del__(self) class LastListItem(DropdownTree.Item): def __init__(self, text): DropdownTree.Item.__init__(self) self.overLine = False textLine=ui.TextLine() textLine.SetParent(self) textLine.SetFontName(localeInfo.UI_DEF_FONT) textLine.SetWindowHorizontalAlignLeft() #textLine.SetHorizontalAlignCenter() textLine.SetText(" "+text) textLine.Show() self.textLine = textLine self.text = text def __del__(self): DropdownTree.Item.__del__(self) def GetText(self): return self.text def SetSize(self, width, height): DropdownTree.Item.SetSize(self, width-self.GetOffset(), height) def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if self.overLine and self.parent.GetSelectedItem()!=self: x, y = self.GetGlobalPosition() grp.SetColor(grp.GenerateColor(1.0, 1.0, 1.0, 0.2)) grp.RenderBar(x, y, self.GetWidth(), self.GetHeight()) elif self.parent.GetSelectedItem()==self: x, y = self.GetGlobalPosition() grp.SetColor(grp.GenerateColor(0.0, 0.0, 1.0, 1.0)) grp.RenderBar(x, y, self.GetWidth(), self.GetHeight()) else: x, y = self.GetGlobalPosition() grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 1.0)) grp.RenderBar(x, y, self.GetWidth(), self.GetHeight()) class ScrollBarNew(ui.Window): SCROLLBAR_WIDTH = 13 SCROLLBAR_MIDDLE_HEIGHT = 1 SCROLLBAR_BUTTON_WIDTH = 17 SCROLLBAR_BUTTON_HEIGHT = 17 SCROLL_BTN_XDIST = 2 SCROLL_BTN_YDIST = 2 class MiddleBar(ui.DragButton): def __init__(self): ui.DragButton.__init__(self) self.AddFlag("movable") self.SetWindowName("scrollbar_middlebar") def MakeImage(self): top = ui.ExpandedImageBox() top.SetParent(self) top.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_top.tga") top.AddFlag("not_pick") top.Show() topScale = ui.ExpandedImageBox() topScale.SetParent(self) topScale.SetPosition(0, top.GetHeight()) topScale.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_topscale.tga") topScale.AddFlag("not_pick") topScale.Show() bottom = ui.ExpandedImageBox() bottom.SetParent(self) bottom.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_bottom.tga") bottom.AddFlag("not_pick") bottom.Show() bottomScale = ui.ExpandedImageBox() bottomScale.SetParent(self) bottomScale.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_bottomscale.tga") bottomScale.AddFlag("not_pick") bottomScale.Show() middle = ui.ExpandedImageBox() middle.SetParent(self) middle.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_middle.tga") middle.AddFlag("not_pick") middle.Show() self.top = top self.topScale = topScale self.bottom = bottom self.bottomScale = bottomScale self.middle = middle def SetSize(self, height): minHeight = self.top.GetHeight() + self.bottom.GetHeight() + self.middle.GetHeight() height = max(minHeight, height) ui.DragButton.SetSize(self, 10, height) scale = (height - minHeight) / 2 extraScale = 0 if (height - minHeight) % 2 == 1: extraScale = 1 self.topScale.SetRenderingRect(0, 0, 0, scale - 1) self.middle.SetPosition(0, self.top.GetHeight() + scale) self.bottomScale.SetPosition(0, self.middle.GetBottom()) self.bottomScale.SetRenderingRect(0, 0, 0, scale - 1 + extraScale) self.bottom.SetPosition(0, height - self.bottom.GetHeight()) def __init__(self): ui.Window.__init__(self) self.pageSize = 1 self.curPos = 0.0 self.eventScroll = None self.eventArgs = None self.lockFlag = False self.CreateScrollBar() self.SetScrollBarSize(0) self.scrollStep = 0.20 self.SetWindowName("NONAME_ScrollBar") def __del__(self): ui.Window.__del__(self) def CreateScrollBar(self): topImage = ui.ExpandedImageBox() topImage.SetParent(self) topImage.AddFlag("not_pick") topImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_top.tga") topImage.Show() bottomImage = ui.ExpandedImageBox() bottomImage.SetParent(self) bottomImage.AddFlag("not_pick") bottomImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_bottom.tga") bottomImage.Show() middleImage = ui.ExpandedImageBox() middleImage.SetParent(self) middleImage.AddFlag("not_pick") middleImage.SetPosition(0, topImage.GetHeight()) middleImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle.tga") middleImage.Show() self.topImage = topImage self.bottomImage = bottomImage self.middleImage = middleImage middleBar = self.MiddleBar() middleBar.SetParent(self) middleBar.SetMoveEvent(ui.__mem_func__(self.OnMove)) middleBar.Show() middleBar.MakeImage() middleBar.SetSize(0) # set min height self.middleBar = middleBar def Destroy(self): self.eventScroll = None self.eventArgs = None def SetScrollEvent(self, event, *args): self.eventScroll = event self.eventArgs = args def SetMiddleBarSize(self, pageScale): self.middleBar.SetSize(int(pageScale * float(self.GetHeight() - self.SCROLL_BTN_YDIST*2))) realHeight = self.GetHeight() - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight() self.pageSize = realHeight def SetScrollBarSize(self, height): self.SetSize(self.SCROLLBAR_WIDTH, height) self.pageSize = height - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight() middleImageScale = float((height - self.SCROLL_BTN_YDIST*2) - self.middleImage.GetHeight()) / float(self.middleImage.GetHeight()) self.middleImage.SetRenderingRect(0, 0, 0, middleImageScale) self.bottomImage.SetPosition(0, height - self.bottomImage.GetHeight()) self.middleBar.SetRestrictMovementArea(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST, \ self.middleBar.GetWidth(), height - self.SCROLL_BTN_YDIST * 2) self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST) def SetScrollStep(self, step): self.scrollStep = step def GetScrollStep(self): return self.scrollStep def GetPos(self): return self.curPos def OnUp(self): self.SetPos(self.curPos-self.scrollStep) def OnDown(self): self.SetPos(self.curPos+self.scrollStep) def SetPos(self, pos, moveEvent = True): pos = max(0.0, pos) pos = min(1.0, pos) newPos = float(self.pageSize) * pos self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, int(newPos) + self.SCROLL_BTN_YDIST) if moveEvent == True: self.OnMove() def OnMove(self): if self.lockFlag: return if 0 == self.pageSize: return (xLocal, yLocal) = self.middleBar.GetLocalPosition() self.curPos = float(yLocal - self.SCROLL_BTN_YDIST) / float(self.pageSize) if self.eventScroll: apply(self.eventScroll, self.eventArgs) def OnMouseLeftButtonDown(self): (xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition() newPos = float(yMouseLocalPosition) / float(self.GetHeight()) self.SetPos(newPos) def LockScroll(self): self.lockFlag = True def UnlockScroll(self): self.lockFlag = False class ListBoxWiki(ui.Window): def __init__(self): ui.Window.__init__(self) self.viewItemCount=10 self.basePos=0 self.itemHeight=16 self.itemStep=20 self.selItem=0 self.itemList=[] self.onSelectItemEvent = lambda *arg: None self.itemWidth=100 self.scrollBar=None def __del__(self): ui.Window.__del__(self) def __UpdateSize(self): height=self.itemStep*self.__GetViewItemCount() pass #self.SetSize(self.itemWidth, height) def GetItemIndex(self, argItem): return self.itemList.index(argItem) def GetSelectedItem(self): return self.selItem def IsEmpty(self): if self.__GetItemCount()==0: return 1 return 0 def __GetViewItemCount(self): return self.viewItemCount def __GetItemCount(self): return len(self.itemList) def SetItemStep(self, itemStep): self.itemStep=itemStep def SetItemSize(self, itemWidth, itemHeight): self.itemWidth=itemWidth self.itemHeight=itemHeight def SetViewItemCount(self, viewItemCount): self.viewItemCount=viewItemCount def SetSelectEvent(self, event): self.onSelectItemEvent = event def SelectIndex(self, index): if index >= len(self.itemList) or index < 0: self.selItem = None return try: self.selItem=self.itemList[index] except: pass def SelectItem(self, selItem): self.selItem=selItem self.onSelectItemEvent(selItem) def RemoveAllItems(self): self.selItem=None for j in xrange(len(self.itemList)): self.itemList[j].Destroy() self.itemList=[] if self.scrollBar: self.scrollBar.SetPos(0) if app.ENABLE_SWITCHBOT: def GetItems(self): return self.itemList def RemoveItem(self, delItem): if delItem==self.selItem: self.selItem=None self.itemList.remove(delItem) def AppendItem(self, newItem): self.itemList.append(newItem) def OnMouseWheel(self, nLen): if self.scrollBar: self.scrollBar.OnMouseWheel(nLen) def SetScrollBar(self, scrollBar): scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll)) self.scrollBar=scrollBar def __OnScroll(self): self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen())) def __GetScrollLen(self): if self.__GetItemCount() == 0: return 0 (lx,ly) = self.itemList[len(self.itemList)-1].exPos return ly def GetItemViewCoord(self, pos, itemWidth): return (0, (pos-self.basePos)*self.itemStep) def __IsInViewRange(self, pos): if pos<self.basePos: return 0 if pos>=self.basePos+self.viewItemCount: return 0 return 1 def SetBasePos(self, basePos): if self.basePos == basePos: return for j in xrange(len(self.itemList)): (ex,ey) = self.itemList[j].exPos self.itemList[j].SetPosition(0,ey-(basePos)) self.itemList[j].OnRender() self.basePos=basePos class EquipmentItem(ui.ExpandedImageBox): def __del__(self): ui.ExpandedImageBox.__del__(self) def __init__(self, index, parent, listbox, itemVnum, isFirst): ui.ExpandedImageBox.__init__(self) self.childrenTextLine = [] self.childrenImages = [] self.refineItems = [] self.refineStepText = [] self.priceStepText = [] self.refineInfos = [] self.refinenNumberline = [] self.parent = parent self.listbox = listbox self.listIndex = index self.itemVnum = itemVnum self.isFirst = isFirst self.overLine =False self.IsLoaded = False self.refineCount = 2 self.isType=0 item.SelectItem(self.itemVnum) for j in xrange(wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType())+1): if item.SelectItemWiki(self.itemVnum+j) == 1: argv = wiki.GetRefineItems(item.GetRefineSet()) if argv != 0: (id, item_vnum_0, item_count_0, item_vnum_1, item_count_1, item_vnum_2, item_count_2, item_vnum_3, item_count_3, item_vnum_4, item_count_4, cost, prob, refine_count) = argv self.InsertRefine(id,item_vnum_0,item_count_0,item_vnum_1,item_count_1,item_vnum_2,item_count_2,item_vnum_3,item_count_3,item_vnum_4,item_count_4,cost,prob,refine_count) if refine_count > self.refineCount: self.refineCount = refine_count else: self.InsertRefine(0,0,0,0,0,0,0,0,0,0,0,0,0,0) else: self.InsertRefine(0,0,0,0,0,0,0,0,0,0,0,0,0,0) x,y= 0,5 if self.isFirst: getList = self.listbox.GetItems() j = len(getList) (xT,realY) = getList[j-1].GetLocalPosition() if getList[j-1].refineCount == 2: y= realY+(156+5) elif getList[j-1].refineCount == 3: y= realY+(200+5) elif getList[j-1].refineCount == 4: y= realY+(255+5) elif getList[j-1].refineCount == 5: y= realY+(296+5) self.SetParent(listbox) self.LoadImage(IMG_DIR+"slot/slot_%d.tga"%self.refineCount) if index == 99: x,y= 0,200 self.SetPosition(x,y, True) self.childrenImages.append(self) def ClearData(self): if self.IsLoaded == True: self.IsLoaded=False self.childrenTextLine = [] self.childrenImages = [] self.childrenTextLine = [] self.refineStepText = [] self.priceStepText = [] self.refineInfos = [] self.refinenNumberline = [] self.childrenImages.append(self) self.itemName= None self.itemLevel= None self.upgradeCost= None self.itemIcon= None self.yangCost= None def LoadItemInfos(self): if self.IsLoaded == False: self.IsLoaded=True item.SelectItem(self.itemVnum) self.itemName = ui.TextLine() self.itemName.SetParent(self) self.itemName.SetText("%s"%item.GetItemName()[:-2]) self.itemName.SetPosition(5,5) self.itemName.Show() self.itemLevel = ui.TextLine() self.itemLevel.SetParent(self) for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_LEVEL == limitType: if limitValue == 0: self.itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT%1) else: self.itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT%limitValue) self.itemLevel.SetPosition(480,5) self.itemLevel.Show() self.itemIcon = ui.ExpandedImageBox() self.itemIcon.SetParent(self) if item.GetIconImageFileName().find("gr2") == -1: self.itemIcon.LoadImage(item.GetIconImageFileName()) else: self.itemIcon.LoadImage("icon/item/27995.tga") itemLevelCoordinates = [ [0,0],[0,0],[10,55],[10,85],[10,100],[10,115]] self.itemIcon.SetPosition(itemLevelCoordinates[self.refineCount][0],itemLevelCoordinates[self.refineCount][1]) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum+wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType())) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) self.itemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click") self.itemIcon.Show() self.upgradeCost = ui.TextLine() self.upgradeCost.SetParent(self) self.upgradeCost.SetText(localeInfo.WIKI_UPGRADE_COSTS) self.upgradeCost.SetPosition(58,24) self.upgradeCost.Show() self.yangCost = ui.TextLine() self.yangCost.SetParent(self) self.yangCost.SetText(localeInfo.WIKI_YANG_COSTS) list = [140,140,140,180,230,275] self.yangCost.SetPosition(58,list[self.refineCount]) self.yangCost.Show() for j in xrange(10): step_refine = ui.TextLine() step_refine.SetParent(self) step_refine.SetText("+%d"%j) step_refine.SetPosition(145+(j*41),24) step_refine.Show() self.refineStepText.append(step_refine) self.childrenTextLine.append(step_refine) step_price = ui.TextLine() step_price.SetParent(self) if len(str(self.refineItems[j]["cost"])) >= 7: step_price.SetText(str(self.refineItems[j]["cost"]).replace("000","k")) else: step_price.SetText(localeInfo.MoneyFormat(self.refineItems[j]["cost"])) step_price.SetPosition(135+(j*42),list[self.refineCount]) step_price.Show() self.priceStepText.append(step_price) self.childrenTextLine.append(step_price) step_slot0,step_slot1,step_slot2,step_slot3,step_slot4 = None,None,None,None,None step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4 = None,None,None,None,None l = [step_slot0,step_slot1,step_slot2,step_slot3,step_slot4] x = [step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4] for i in xrange(self.refineCount): l[i] = ui.ExpandedImageBox() l[i].SetParent(self) refineItem = self.refineItems[j]["item_vnum_%d"%i] if refineItem != 0: item.SelectItem(refineItem) l[i].LoadImage(item.GetIconImageFileName()) l[i].SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,refineItem) l[i].SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) else: l[i].LoadImage(IMG_DIR+"slot/empty_slot.tga") l[i].SetPosition(135+(j*41),45+(i*47)) l[i].Show() if refineItem != 0: x[i] = ui.NumberLine() x[i].SetParent(self) x[i].SetNumber(str(self.refineItems[j]["item_count_%d"%i])) x[i].SetPosition(165+(j*41),70+(i*47)) x[i].Show() self.childrenTextLine.append(x[i]) self.childrenImages.append(l[i]) ptr = (step_slot0,step_slot1,step_slot2,step_slot3,step_slot4) ptrex = (step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4) self.refineInfos.extend(ptr) self.refinenNumberline.extend(ptrex) self.childrenTextLine.append(self.yangCost) self.childrenTextLine.append(self.itemName) self.childrenTextLine.append(self.itemLevel) self.childrenTextLine.append(self.upgradeCost) self.childrenImages.append(self.itemIcon) self.Show() self.OnRender() def OnClickItem(self): try: self.parent.tooltipItem.HideToolTip() except: pass self.parent.ShowItemInfo(self.itemVnum,0) def OverOutItem(self): try: self.parent.tooltipItem.HideToolTip() except: pass def OverInItem(self, index): try: self.parent.tooltipItem.SetItemToolTip(index) self.parent.tooltipItem.ShowToolTip() except: pass def InsertRefine(self, id,item_vnum_0,item_count_0,item_vnum_1,item_count_1,item_vnum_2,item_count_2,item_vnum_3,item_count_3,item_vnum_4,item_count_4,cost,prob,refine_count): self.refineItems.append(\ { "id" : int(id),\ "item_vnum_0" : int(item_vnum_0),\ "item_count_0" : int(item_count_0),\ "item_vnum_1" : int(item_vnum_1),\ "item_count_1" : int(item_count_1),\ "item_vnum_2" : int(item_vnum_2),\ "item_count_2" : int(item_count_2),\ "item_vnum_3" : int(item_vnum_3),\ "item_count_3" : int(item_count_3),\ "item_vnum_4" : int(item_vnum_4),\ "item_count_4" : int(item_count_4),\ "cost" : long(cost),\ "prob" : long(prob),\ "refine_count" : int(refine_count),\ }, ) def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if not self.IsShow(): return (pgx,pgy) = self.listbox.GetGlobalPosition() for j in xrange(len(self.childrenTextLine)): item = self.childrenTextLine[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() for j in xrange(len(self.childrenImages)): item = self.childrenImages[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) if igy < pgy: item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0) elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if calculate == 0: return item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) def Destroy(self): self.childrenTextLine = [] self.childrenImages = [] self.refineItems = [] self.refineStepText = [] self.priceStepText = [] self.refineInfos = [] self.refinenNumberline = [] self.parent = 0 self.listbox = 0 self.listIndex = 0 self.itemVnum = 0 self.isFirst = 0 self.overLine =0 self.refineCount = 0 del self class EquipmentItemSpecial(ui.ExpandedImageBox): def __del__(self): ui.ExpandedImageBox.__del__(self) def __init__(self, parent, listbox, itemVnum): ui.ExpandedImageBox.__init__(self) self.childrenTextLine = [] self.childrenImages = [] self.parent = parent self.listbox = listbox self.itemVnum = itemVnum self.overLine =False self.IsLoaded =False self.SetParent(listbox) self.LoadImage(IMG_DIR+"slot/special_slot.tga") self.SetPosition(0,0, True) self.isType=0 def LoadItemInfos(self): if self.IsLoaded == False: self.IsLoaded=True item.SelectItem(self.itemVnum) self.itemIcon = ui.ExpandedImageBox() self.itemIcon.SetParent(self) if item.GetIconImageFileName().find("gr2") == -1: self.itemIcon.LoadImage(item.GetIconImageFileName()) else: self.itemIcon.LoadImage("icon/item/27995.tga") self.itemIcon.SetPosition(70,45) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum+wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType())) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) self.itemIcon.Show() self.avaible = ui.TextLine() self.avaible.SetParent(self) self.avaible.SetText(localeInfo.WIKI_AVAIBLE_AT) self.avaible.SetPosition(350,6) self.avaible.Show() self.refine = ui.TextLine() self.refine.SetParent(self) self.refine.SetText(localeInfo.WIKI_IMPROVEMENT_INFO%item.GetItemName()[:-2]) self.refine.SetPosition(180,170) self.refine.Show() self.childrenTextLine.append(self.refine) self.childrenTextLine.append(self.avaible) self.childrenImages.append(self) self.childrenImages.append(self.itemIcon) self.Show() self.OnRender() def OverOutItem(self): if self.parent: if self.parent.tooltipItem: self.parent.tooltipItem.HideToolTip() def OverInItem(self, index): if self.parent: if self.parent.tooltipItem: self.parent.tooltipItem.SetItemToolTip(index) self.parent.tooltipItem.ShowToolTip() def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if not self.IsShow(): return (pgx,pgy) = self.listbox.GetGlobalPosition() for j in xrange(len(self.childrenTextLine)): item = self.childrenTextLine[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() for j in xrange(len(self.childrenImages)): item = self.childrenImages[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) if igy < pgy: item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0) elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if calculate == 0: return item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) def Destroy(self): self.childrenTextLine = [] self.childrenImages = [] self.parent = 0 self.listbox = 0 self.itemVnum = 0 self.overLine =0 self.IsLoaded =0 del self class MonsterItemSpecial(ui.ExpandedImageBox): def __del__(self): ui.ExpandedImageBox.__del__(self) def __init__(self, parent, listbox, itemVnum): ui.ExpandedImageBox.__init__(self) self.childrenTextLine = [] self.childrenImages = [] self.childrenItems = [] self.childrenNumberline = [] self.parent = parent self.listbox = listbox self.itemVnum = itemVnum self.overLine =False self.IsLoaded =False self.SetParent(listbox) self.LoadImage(IMG_DIR+"slot/special_slot.tga") self.SetPosition(0,0, True) self.childrenImages.append(self) self.grid = Grid(width = 10, height = 50) self.renterTarget=None self.GridListbox=None self.GridScrollbar=None self.isType=0 def LoadItemInfos(self): if self.IsLoaded == False: self.IsLoaded=True self.renterTarget = ui.RenderTarget() self.renterTarget.SetParent(self) self.renterTarget.SetPosition(1,1) self.renterTarget.SetSize(187,163) self.renterTarget.SetRenderTarget(21) self.renterTarget.Show() self.childrenImages.append(self.renterTarget) renderTarget.SelectModel(21, self.itemVnum) renderTarget.SetVisibility(21, True) self.GridListbox = ListBoxGrid(self.listbox, self) self.GridListbox.SetParent(self) self.GridListbox.SetPosition(190,25) self.GridListbox.SetSize(351, 142) self.GridListbox.Show() dropList = ui.TextLine() dropList.SetParent(self) dropList.SetText(localeInfo.WIKI_DROPLIST_INFO%nonplayer.GetMonsterName(self.itemVnum)) dropList.SetPosition(300,6) dropList.Show() self.childrenTextLine.append(dropList) monsterInfo = ui.TextLine() monsterInfo.SetParent(self) monsterInfo.SetText(localeInfo.WIKI_STATICS_INFO%nonplayer.GetMonsterName(self.itemVnum)) monsterInfo.SetPosition(180,170) monsterInfo.Show() self.childrenTextLine.append(monsterInfo) for j in xrange(wiki.GetMobInfoSize(self.itemVnum)): vnum, count = 0,0 (vnum,count) = wiki.GetMobInfoData(self.itemVnum,j) if vnum == 0: continue item.SelectItem(vnum) item_new = ui.ExpandedImageBox() item_new.SetParent(self.GridListbox) if item.GetIconImageFileName().find("gr2") == -1: item_new.LoadImage(item.GetIconImageFileName()) else: item_new.LoadImage("icon/item/27995.tga") item_new.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,vnum) item_new.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) (width,height) = item.GetItemSize() pos = self.grid.find_blank(width, height) self.grid.put(pos,width,height) (x,y) = calculatePos(pos,10) item_new.SetPosition(x,y,True) item_new.Show() if count>1: itemNumberline = ui.NumberLine() itemNumberline.SetParent(self.GridListbox) itemNumberline.SetNumber(str(count)) itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True) itemNumberline.Show() self.GridListbox.AppendItem(itemNumberline) self.childrenNumberline.append(itemNumberline) self.GridListbox.AppendItem(item_new) self.childrenItems.append(item_new) # Scrollbar if self.GridScrollbar == None: (gx,gy)=item_new.GetGlobalPosition() (sx,sy)=self.GridListbox.GetGlobalPosition() if gy+item_new.GetHeight() > sy+self.GridListbox.GetHeight(): self.GridScrollbar= ScrollBarNew() self.GridScrollbar.SetParent(self) self.GridScrollbar.SetPosition(525,23) self.GridScrollbar.SetScrollBarSize(140) self.GridListbox.SetScrollBar(self.GridScrollbar) self.GridScrollbar.Show() self.childrenImages.append(self.GridScrollbar.topImage) self.childrenImages.append(self.GridScrollbar.bottomImage) self.childrenImages.append(self.GridScrollbar.middleBar.top) self.childrenImages.append(self.GridScrollbar.middleBar.topScale) self.childrenImages.append(self.GridScrollbar.middleBar.bottom) self.childrenImages.append(self.GridScrollbar.middleBar.bottomScale) self.childrenImages.append(self.GridScrollbar.middleBar.middle) self.Show() self.OnRender() def OverOutItem(self): if self.parent: if self.parent.tooltipItem: self.parent.tooltipItem.HideToolTip() def OverInItem(self, index): if self.parent: if self.parent.tooltipItem: self.parent.tooltipItem.SetItemToolTip(index) self.parent.tooltipItem.ShowToolTip() def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if not self.IsShow(): return (pgx,pgy) = self.listbox.GetGlobalPosition() (lgx,lgy) = self.GridListbox.GetGlobalPosition() for j in xrange(len(self.childrenTextLine)): item = self.childrenTextLine[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() for j in xrange(len(self.childrenImages)): item = self.childrenImages[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) if igy < pgy: item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0) elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if calculate == 0: return item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) for j in xrange(len(self.childrenNumberline)): item = self.childrenNumberline[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy < lgy: item.Hide() elif igy > lgy+self.GridListbox.GetHeight(): item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() if self.GridScrollbar !=None: scroll = self.GridScrollbar.middleImage (igx,igy) = scroll.GetGlobalPosition() if igy < pgy: scroll.Hide() elif igy > (pgy+self.listbox.GetHeight()-60): scroll.Hide() else: scroll.Show() if self.GridListbox != None: for j in xrange(len(self.childrenItems)): item = self.childrenItems[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) calculate = 0 calculatefirst = 0 if igy < lgy: calculatefirst +=abs(igy-lgy) if igy < pgy: calculatefirst += abs(igy-pgy) if igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()+100): calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight()) elif igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()): calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight()) item.SetRenderingRect(0,calculateRect(item.GetHeight()-calculatefirst,item.GetHeight()),0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) def Destroy(self): self.grid.reset() self.grid=0 self.GridListbox.RemoveAllItems() self.GridListbox=0 self.childrenTextLine = [] self.childrenImages = [] self.childrenItems = [] self.childrenNumberline = [] self.parent = 0 self.listbox = 0 self.itemVnum = 0 self.overLine =0 self.IsLoaded =0 self.renterTarget=0 self.GridScrollbar=0 self.isType=0 del self class MonsterStatics(ui.ExpandedImageBox): def __del__(self): ui.ExpandedImageBox.__del__(self) def __init__(self, parent, listbox, itemVnum): ui.ExpandedImageBox.__init__(self) self.childrenTextLine = [] self.childrenImages = [] self.parent = parent self.listbox = listbox self.itemVnum = itemVnum self.overLine =False self.IsLoaded =False self.SetParent(listbox) self.LoadImage(IMG_DIR+"slot/big_empty.tga") self.SetPosition(0,188, True) self.childrenImages.append(self) self.GridListbox=None self.GridScrollbar=None self.isType=0 def LoadItemInfos(self): if self.IsLoaded == False: self.IsLoaded=True self.GridListbox = ListBoxGrid(self.listbox, self) self.GridListbox.SetParent(self) self.GridListbox.SetPosition(0,0) self.GridListbox.SetSize(541, 159) self.GridListbox.Show() self.GridScrollbar= ScrollBarNew() self.GridScrollbar.SetParent(self) self.GridScrollbar.SetPosition(525,5) self.GridScrollbar.SetScrollBarSize(150) self.GridListbox.SetScrollBar(self.GridScrollbar) self.GridScrollbar.Show() monsterLevel = ui.TextLine() monsterLevel.SetParent(self.GridListbox) monsterLevel.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_LEVEL_TEXT%nonplayer.GetMonsterLevel(self.itemVnum)) monsterLevel.SetPosition(5,3,True) monsterLevel.Show() self.GridListbox.AppendItem(monsterLevel) self.childrenTextLine.append(monsterLevel) RACE_FLAG_TO_NAME = { 1 << 0 : localeInfo.TARGET_INFO_RACE_ANIMAL, 1 << 1 : localeInfo.TARGET_INFO_RACE_UNDEAD, 1 << 2 : localeInfo.TARGET_INFO_RACE_DEVIL, 1 << 3 : localeInfo.TARGET_INFO_RACE_HUMAN, 1 << 4 : localeInfo.TARGET_INFO_RACE_ORC, 1 << 5 : localeInfo.TARGET_INFO_RACE_MILGYO, } SUB_RACE_FLAG_TO_NAME = { 1 << 11 : localeInfo.TARGET_INFO_RACE_ELEC, 1 << 12 : localeInfo.TARGET_INFO_RACE_FIRE, 1 << 13 : localeInfo.TARGET_INFO_RACE_ICE, 1 << 14 : localeInfo.TARGET_INFO_RACE_WIND, 1 << 15 : localeInfo.TARGET_INFO_RACE_EARTH, 1 << 16 : localeInfo.TARGET_INFO_RACE_DARK, 1 << 17 : localeInfo.TARGET_INFO_RACE_ZODIAC, } mainrace = "" subrace = "" dwRaceFlag = nonplayer.GetMonsterRaceFlag(self.itemVnum) for i in xrange(18): curFlag = 1 << i if HAS_FLAG(dwRaceFlag, curFlag): if RACE_FLAG_TO_NAME.has_key(curFlag): mainrace += RACE_FLAG_TO_NAME[curFlag] + ", " elif SUB_RACE_FLAG_TO_NAME.has_key(curFlag): subrace += SUB_RACE_FLAG_TO_NAME[curFlag] + ", " if nonplayer.IsMonsterStone(self.itemVnum): mainrace += localeInfo.TARGET_INFO_RACE_METIN + ", " if mainrace == "": mainrace = localeInfo.TARGET_INFO_NO_RACE else: mainrace = mainrace[:-2] if subrace == "": subrace = localeInfo.TARGET_INFO_NO_RACE else: subrace = subrace[:-2] monsterType = ui.TextLine() monsterType.SetParent(self.GridListbox) monsterType.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_TYPE%(mainrace,subrace)) monsterType.SetPosition(5,3*(7*1),True) monsterType.Show() self.GridListbox.AppendItem(monsterType) self.childrenTextLine.append(monsterType) (mindmg,maxdmg) = nonplayer.GetMonsterDamage(self.itemVnum) hp = nonplayer.GetMonsterMaxHP(self.itemVnum) monsterDmgandHp = ui.TextLine() monsterDmgandHp.SetParent(self.GridListbox) monsterDmgandHp.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DMG%(mindmg,maxdmg,hp)) monsterDmgandHp.SetPosition(5,3*(7*2),True) monsterDmgandHp.Show() self.GridListbox.AppendItem(monsterDmgandHp) self.childrenTextLine.append(monsterDmgandHp) (minyang,maxyang) = nonplayer.GetMonsterPrice(self.itemVnum) exp = nonplayer.GetMonsterExp(self.itemVnum) monsterYangandExp = ui.TextLine() monsterYangandExp.SetParent(self.GridListbox) monsterYangandExp.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_YNG%(minyang,maxyang,exp)) monsterYangandExp.SetPosition(5,3*(7*3),True) monsterYangandExp.Show() self.GridListbox.AppendItem(monsterYangandExp) self.childrenTextLine.append(monsterYangandExp) monsterDefencesText = ui.TextLine() monsterDefencesText.SetParent(self.GridListbox) monsterDefencesText.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DEFENSES) monsterDefencesText.SetPosition(5,3*(7*4),True) monsterDefencesText.Show() self.GridListbox.AppendItem(monsterDefencesText) self.childrenTextLine.append(monsterDefencesText) resists = { nonplayer.MOB_RESIST_SWORD : localeInfo.TARGET_INFO_RESIST_SWORD, nonplayer.MOB_RESIST_TWOHAND : localeInfo.TARGET_INFO_RESIST_TWOHAND, nonplayer.MOB_RESIST_DAGGER : localeInfo.TARGET_INFO_RESIST_DAGGER, nonplayer.MOB_RESIST_BELL : localeInfo.TARGET_INFO_RESIST_BELL, nonplayer.MOB_RESIST_FAN : localeInfo.TARGET_INFO_RESIST_FAN, nonplayer.MOB_RESIST_BOW : localeInfo.TARGET_INFO_RESIST_BOW, # nonplayer.MOB_RESIST_FIRE : localeInfo.TARGET_INFO_RESIST_FIRE, # nonplayer.MOB_RESIST_ELECT : localeInfo.TARGET_INFO_RESIST_ELECT, nonplayer.MOB_RESIST_MAGIC : localeInfo.TARGET_INFO_RESIST_MAGIC, # nonplayer.MOB_RESIST_WIND : localeInfo.TARGET_INFO_RESIST_WIND, # nonplayer.MOB_RESIST_POISON : localeInfo.TARGET_INFO_RESIST_POISON, } c = 0 for resist, label in resists.items(): value = nonplayer.GetMonsterResist(self.itemVnum, resist) item = ui.TextLine() item.SetParent(self.GridListbox) text = label % value item.SetText("|Eemoji/e_wiki|e %s"%text) resistStrings = [] item.SetPosition(5+8,3*(7*(5+c)),True) item.Show() self.GridListbox.AppendItem(item) self.childrenTextLine.append(item) c+=1 self.Show() self.OnRender() def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if not self.IsShow(): return (pgx,pgy) = self.listbox.GetGlobalPosition() (ggx,ggy) = self.GridListbox.GetGlobalPosition() for j in xrange(len(self.childrenTextLine)): item = self.childrenTextLine[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy < ggy: item.Hide() elif igy > (ggy+self.GridListbox.GetHeight()-10): item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() for j in xrange(len(self.childrenImages)): item = self.childrenImages[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) if igy < pgy: item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0) elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if calculate == 0: return item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) def Destroy(self): self.GridListbox.RemoveAllItems() self.GridListbox=None self.GridScrollbar=None self.childrenTextLine = [] self.childrenImages = [] self.parent = 0 self.listbox = 0 self.itemVnum = 0 self.overLine =0 self.IsLoaded =0 self.isType=0 del self class ListBoxItemSpecial(ui.ExpandedImageBox): def __del__(self): ui.ExpandedImageBox.__del__(self) def __init__(self, index, parent, listbox, itemVnum, mobVnum, type): ui.ExpandedImageBox.__init__(self) self.childrenTextLine = [] self.childrenNumberline = [] self.childrenItems = [] self.childrenImages = [] self.parent = parent self.listbox = listbox self.listIndex = index self.itemVnum = itemVnum self.mobVnum = mobVnum self.isType = type self.overLine =False self.IsLoaded = False self.SetParent(listbox) self.LoadImage(IMG_DIR+"slot/slot.tga") self.SetPosition(0,len(self.listbox.GetItems())*(89+5), True) self.grid = Grid(width = 12, height = 50) self.GridListbox = None self.GridScrollbar= None self.itemName= None self.origin= None self.bossVnum= None self.itemIcon= None self.childrenImages.append(self) def ClearData(self): if self.IsLoaded == True: self.IsLoaded=False self.childrenTextLine = [] self.childrenNumberline = [] self.childrenItems = [] self.childrenImages = [] self.childrenImages.append(self) self.grid.reset() self.GridListbox.RemoveAllItems() self.GridListbox = None self.GridScrollbar= None self.itemName= None self.origin= None self.bossVnum= None self.itemIcon= None if self.isType != 0: renderTarget.SetVisibility(20+self.listIndex, False) renderTarget.ResetModel(20+self.listIndex) self.renterTarget=None def LoadItemInfos(self): if self.IsLoaded == False: self.IsLoaded=True self.GridListbox = ListBoxGrid(self.listbox, self) self.GridListbox.SetParent(self) self.GridListbox.SetPosition(52,25) self.GridListbox.SetSize(541, 65) self.GridListbox.Show() name = "-" if self.isType == 0: item.SelectItem(self.itemVnum) name = nonplayer.GetMonsterName(self.mobVnum) else: name = nonplayer.GetMonsterName(self.itemVnum) self.itemName = ui.TextLine() self.itemName.SetParent(self) if self.isType == 0: self.itemName.SetText(localeInfo.WIKI_CONTENT_INFO%item.GetItemName()) else: self.itemName.SetText(localeInfo.WIKI_DROPLIST_INFO%name) self.itemName.SetPosition(180,5) self.itemName.Show() self.childrenTextLine.append(self.itemName) self.origin = ui.TextLine() self.origin.SetParent(self) self.origin.SetText(localeInfo.WIKI_ORIGIN) self.origin.SetPosition(480,5) self.origin.Show() self.childrenTextLine.append(self.origin) self.bossVnum = ui.TextLine() self.bossVnum.SetParent(self) if self.isType == 0: self.bossVnum.SetText(name) self.bossVnum.SetPosition(465,45) else: self.bossVnum.SetPosition(495,45) self.bossVnum.SetText("-") self.bossVnum.Show() self.childrenTextLine.append(self.bossVnum) if self.isType == 0: self.itemIcon = ui.ExpandedImageBox() self.itemIcon.SetParent(self) if item.GetIconImageFileName().find("gr2") == -1: self.itemIcon.LoadImage(item.GetIconImageFileName()) else: self.itemIcon.LoadImage("icon/item/27995.tga") self.itemIcon.SetPosition(10,25) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum) self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) self.itemIcon.Show() self.childrenImages.append(self.itemIcon) else: self.renterTarget = ui.RenderTarget() self.renterTarget.SetParent(self) self.renterTarget.SetPosition(1,1) self.renterTarget.SetSize(47,87) self.renterTarget.SetRenderTarget(20+self.listIndex) self.renterTarget.Show() self.renterTarget.SetOnMouseLeftButtonUpEvent(ui.__mem_func__(self.OnClickItem)) renderTarget.SelectModel(20+self.listIndex, self.itemVnum) renderTarget.SetVisibility(20+self.listIndex, True) whileSize = 0 if self.isType == 0: whileSize = wiki.GetSpecialInfoSize(self.itemVnum) else: whileSize = wiki.GetMobInfoSize(self.itemVnum) if whileSize == 0: self.GridListbox.Hide() for j in xrange(whileSize): vnum, count = 0,0 if self.isType == 0: (vnum,count) = wiki.GetSpecialInfoData(self.itemVnum,j) else: (vnum,count) = wiki.GetMobInfoData(self.itemVnum,j) if vnum == 0: continue item.SelectItem(vnum) (width,height) = item.GetItemSize() pos = self.grid.find_blank(width, height) self.grid.put(pos,width,height) (x,y) = calculatePos(pos,12) item_new = ui.ExpandedImageBox() item_new.SetParent(self.GridListbox) if item.GetIconImageFileName().find("gr2") == -1: item_new.LoadImage(item.GetIconImageFileName()) else: item_new.LoadImage("icon/item/27995.tga") item_new.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,vnum) item_new.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem) item_new.SetPosition(x,y,True) item_new.Show() if count>1: itemNumberline = ui.NumberLine() itemNumberline.SetParent(self.GridListbox) itemNumberline.SetNumber(str(count)) itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True) itemNumberline.Show() self.GridListbox.AppendItem(itemNumberline) self.childrenNumberline.append(itemNumberline) self.GridListbox.AppendItem(item_new) self.childrenItems.append(item_new) # Scrollbar if self.GridScrollbar ==None: (gx,gy)=item_new.GetGlobalPosition() (sx,sy)=self.GridListbox.GetGlobalPosition() if gy+item_new.GetHeight() > sy+self.GridListbox.GetHeight(): self.GridScrollbar= ScrollBarNew() self.GridScrollbar.SetParent(self) self.GridScrollbar.SetPosition(435,23) self.GridScrollbar.SetScrollBarSize(65) self.GridListbox.SetScrollBar(self.GridScrollbar) self.GridScrollbar.Show() self.childrenImages.append(self.GridScrollbar.topImage) self.childrenImages.append(self.GridScrollbar.bottomImage) self.childrenImages.append(self.GridScrollbar.middleBar.top) self.childrenImages.append(self.GridScrollbar.middleBar.topScale) self.childrenImages.append(self.GridScrollbar.middleBar.bottom) self.childrenImages.append(self.GridScrollbar.middleBar.bottomScale) self.childrenImages.append(self.GridScrollbar.middleBar.middle) self.Show() self.OnRender() def OnClickItem(self): self.parent.ShowItemInfo(self.itemVnum,1) def OverOutItem(self): try: self.parent.tooltipItem.HideToolTip() except: pass def OverInItem(self, index): try: self.parent.tooltipItem.SetItemToolTip(index) self.parent.tooltipItem.ShowToolTip() except: pass def OnMouseOverIn(self): self.overLine = True def OnMouseOverOut(self): self.overLine = False def OnRender(self): if not self.IsShow(): return (pgx,pgy) = self.listbox.GetGlobalPosition() (sgx,sgy) = self.GetGlobalPosition() (lgx,lgy) = self.GridListbox.GetGlobalPosition() for j in xrange(len(self.childrenImages)): item = self.childrenImages[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) if igy < pgy: item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0) elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if calculate == 0: return item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) if self.GridListbox != None: for j in xrange(len(self.childrenItems)): item = self.childrenItems[j] (igx,igy) = item.GetGlobalPosition() item.SetRenderingRect(0,0,0,0) calculate = 0 calculatefirst = 0 if igy < lgy: calculatefirst +=abs(igy-lgy) if igy < pgy: calculatefirst += abs(igy-pgy) if igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight()) if igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()+100): calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight()) elif igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()): calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight()) item.SetRenderingRect(0,calculateRect(item.GetHeight()-calculatefirst,item.GetHeight()),0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight())) if self.GridScrollbar !=None: scroll = self.GridScrollbar.middleImage (igx,igy) = scroll.GetGlobalPosition() if igy < pgy: scroll.Hide() elif igy > (pgy+self.listbox.GetHeight()-60): scroll.Hide() else: scroll.Show() for j in xrange(len(self.childrenTextLine)): item = self.childrenTextLine[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() else: item.Show() for j in xrange(len(self.childrenNumberline)): item = self.childrenNumberline[j] (igx,igy) = item.GetGlobalPosition() if igy < pgy: item.Hide() elif igy < lgy: item.Hide() elif igy > (pgy+self.listbox.GetHeight()-15): item.Hide() elif igy > (lgy+self.GridListbox.GetHeight()-10): item.Hide() else: item.Show() if self.isType != 0: (rgx,rgy) = self.renterTarget.GetGlobalPosition() self.renterTarget.SetRenderingRect(0.0,0.0,0.0,0.0) if rgy < pgy: self.renterTarget.SetRenderingRect(0,calculateRect(self.renterTarget.GetHeight()-abs(rgy-pgy),self.renterTarget.GetHeight()),0,0) elif rgy+self.renterTarget.GetHeight() > (pgy+self.listbox.GetHeight()-15): calculate = (pgy+self.listbox.GetHeight()-15) - (rgy+self.renterTarget.GetHeight()) if calculate == 0: return self.renterTarget.SetRenderingRect(0.0,0.0,0.0,calculateRect(self.renterTarget.GetHeight()-abs(calculate),self.renterTarget.GetHeight())) def Destroy(self): self.GridScrollbar=None if self.GridListbox: self.GridListbox.RemoveAllItems() self.GridListbox=None self.childrenNumberline = [] self.childrenTextLine = [] self.childrenItems = [] self.childrenImages = [] self.renterTarget=0 self.parent = 0 self.listbox = 0 self.listIndex = 0 self.itemVnum = 0 self.isType = 0 self.overLine =0 self.IsLoaded = 0 self.grid.reset() self.grid=None del self class Grid: # from KeN def __init__(self, width, height): self.width = width self.height = height self.reset() def find_blank(self, width, height): if width > self.width or height > self.height: return -1 for row in range(self.height): for col in range(self.width): index = row * self.width + col if self.is_empty(index, width, height): return index return -1 def put(self, pos, width, height): if not self.is_empty(pos, width, height): return False for row in range(height): start = pos + (row * self.width) self.grid[start] = True col = 1 while col < width: self.grid[start + col] = True col += 1 return True def clear(self, pos, width, height): if pos < 0 or pos >= (self.width * self.height): return for row in range(height): start = pos + (row * self.width) self.grid[start] = True col = 1 while col < width: self.grid[start + col] = False col += 1 def is_empty(self, pos, width, height): if pos < 0: return False row = pos // self.width if (row + height) > self.height: return False if (pos + width) > ((row * self.width) + self.width): return False for row in range(height): start = pos + (row * self.width) if self.grid[start]: return False col = 1 while col < width: if self.grid[start + col]: return False col += 1 return True def get_size(self): return self.width * self.height def reset(self): self.grid = [False] * (self.width * self.height) self.put(self.width,1,1) class ListBoxGrid(ui.Window): def __init__(self, listbox,mainParent): ui.Window.__init__(self) self.basePos=0 self.listbox=listbox self.mainParent=mainParent self.itemList=[] self.scrollBar=None def __del__(self): ui.Window.__del__(self) def IsEmpty(self): if self.__GetItemCount()==0: return 1 return 0 def __GetItemCount(self): return len(self.itemList) def RemoveAllItems(self): for j in xrange(len(self.itemList)): self.itemList[j].Destroy() self.itemList=[] if self.scrollBar: self.scrollBar.SetPos(0) def GetItems(self): return self.itemList def RemoveItem(self, delItem): self.itemList.remove(delItem) def AppendItem(self, newItem): self.itemList.append(newItem) def OnMouseWheel(self, nLen): if self.scrollBar: self.scrollBar.OnMouseWheel(nLen) def SetScrollBar(self, scrollBar): scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll)) self.scrollBar=scrollBar def __OnScroll(self): self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen())) def __GetScrollLen(self): if self.__GetItemCount() == 0: return 0 (lx,ly) = self.itemList[len(self.itemList)-1].exPos return ly def SetBasePos(self, basePos): if self.basePos == basePos: return for j in xrange(len(self.itemList)): (ex,ey) = self.itemList[j].exPos self.itemList[j].SetPosition(ex,ey-(basePos)) self.mainParent.OnRender() self.basePos=basePos Edited May 5 by rythme24 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now