skillPlanDropIndicatorCont.py (3960B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillPlanEditor\skillPlanDropIndicatorCont.py 2 import uthread2 3 from carbonui.control.dragdrop import dragdata 4 from carbonui.primitives.container import Container 5 from carbonui import const as uiconst 6 from carbonui.uicore import uicore 7 from eve.client.script.ui.shared.neocom.skillConst import COLOR_MOVE_INDICATOR 8 from eve.client.script.ui.skillPlan import skillPlanUtil 9 from eve.client.script.ui.skillPlan.skillPlanEditor.dragIndicatorLine import DragIndicatorLine 10 from eve.client.script.ui.skillPlan.skillPlanEditor.skillPlanEditorSkillEntry import VALID_LINE_COLOR, INVALID_LINE_COLOR 11 12 class BaseDropIndicatorCont(Container): 13 default_height = 20 14 default_state = uiconst.UI_NORMAL 15 default_name = 'baseDropIndicatorCont' 16 17 def ApplyAttributes(self, attributes): 18 Container.ApplyAttributes(self, attributes) 19 self.indicatorLine = DragIndicatorLine(parent=self, align=uiconst.TOTOP_NOPUSH, idx=0, padRight=11) 20 self.HideIndicator() 21 22 def OnDragEnterFromParent(self, *args, **kwargs): 23 raise NotImplementedError 24 25 def ShowIndicator(self, isValid = True): 26 self.indicatorLine.Show() 27 self.indicatorLine.color = VALID_LINE_COLOR if isValid else INVALID_LINE_COLOR 28 29 def HideIndicator(self): 30 self.indicatorLine.Hide() 31 32 33 class SkillPlanDropIndicatorCont(BaseDropIndicatorCont): 34 default_name = 'skillPlanDropIndicatorCont' 35 36 def OnDragEnterFromParent(self, draggedEntries, skillPlan, scroll): 37 dragData = draggedEntries[0] 38 while uicore.uilib.mouseOver.IsUnder(self) or uicore.uilib.mouseOver is self: 39 if self.destroyed or not skillPlan or not uicore.IsDragging(): 40 self.HideIndicator() 41 return 42 if scroll.IsVerticalScrollBarVisible(): 43 if scroll.GetPositionVertical() >= 1.0: 44 if isinstance(dragData, dragdata.SkillLevelDragData): 45 originalIndex = skillPlan.GetSkillRequirementIndex(dragData.typeID, dragData.level) 46 dropIndex = len(skillPlan.GetSkillRequirements()) 47 isValidMove = skillPlan.IsSkillRequirementMoveValid(originalIndex, dropIndex) 48 self.ShowIndicator(isValidMove) 49 elif skillPlanUtil.IsValidContentsDragData(dragData): 50 self.ShowIndicator() 51 else: 52 scroll.ScrollMoveVertical(0.1) 53 uthread2.Sleep(0.1) 54 55 self.HideIndicator() 56 57 58 class SkillQueueDropIndicatorCont(BaseDropIndicatorCont): 59 default_name = 'SkillQueueDropIndicatorCont' 60 61 def OnDragEnterFromParent(self, draggedEntries, scroll): 62 dragData = draggedEntries[0] 63 skillQueueSvc = sm.GetService('skillqueue') 64 while uicore.uilib.mouseOver.IsUnder(self) or uicore.uilib.mouseOver is self: 65 if self.destroyed or not uicore.IsDragging(): 66 self.HideIndicator() 67 return 68 if scroll.IsScrollbarVisible(): 69 if scroll.GetScrollProportion() >= 1.0: 70 if IsMultiSkillEntryMove(draggedEntries): 71 self.ShowNeutralMoveIndicator() 72 else: 73 isValidMove = skillQueueSvc.IsMoveAllowed(dragData, None) 74 self.ShowIndicator(isValidMove) 75 else: 76 scroll.Scroll(-0.2) 77 uthread2.Sleep(0.1) 78 79 self.HideIndicator() 80 81 def ShowNeutralMoveIndicator(self): 82 self.indicatorLine.Show() 83 self.indicatorLine.color = COLOR_MOVE_INDICATOR 84 85 86 def IsMultiSkillEntryMove(draggedEntries): 87 if len(draggedEntries) < 2: 88 return False 89 for data in draggedEntries: 90 if getattr(data, '__guid__', None) != 'listentry.SkillQueueSkillEntry': 91 return False 92 93 return True