| 150 | |
| 151 | |
| 152 | class FighterDisplay(d.Display): |
| 153 | |
| 154 | DEFAULT_COLS = ["State", |
| 155 | # "Base Icon", |
| 156 | "Base Name", |
| 157 | # "prop:droneDps,droneBandwidth", |
| 158 | # "Max Range", |
| 159 | # "Miscellanea", |
| 160 | "attr:maxVelocity", |
| 161 | "Drone HP", |
| 162 | "Drone Regen", |
| 163 | "Fighter Abilities", |
| 164 | "Price", |
| 165 | ] |
| 166 | |
| 167 | def __init__(self, parent): |
| 168 | d.Display.__init__(self, parent, style=wx.BORDER_NONE) |
| 169 | |
| 170 | self.lastFitId = None |
| 171 | |
| 172 | self.hoveredRow = None |
| 173 | self.hoveredColumn = None |
| 174 | |
| 175 | self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) |
| 176 | self.mainFrame.Bind(ITEM_SELECTED, self.addItem) |
| 177 | self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) |
| 178 | self.Bind(wx.EVT_LEFT_DOWN, self.click) |
| 179 | self.Bind(wx.EVT_KEY_UP, self.kbEvent) |
| 180 | self.Bind(wx.EVT_MOTION, self.OnMouseMove) |
| 181 | self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) |
| 182 | |
| 183 | self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) |
| 184 | |
| 185 | self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) |
| 186 | self.SetDropTarget(FighterViewDrop(self.handleDragDrop)) |
| 187 | |
| 188 | def OnLeaveWindow(self, event): |
| 189 | self.SetToolTip(None) |
| 190 | self.hoveredRow = None |
| 191 | self.hoveredColumn = None |
| 192 | event.Skip() |
| 193 | |
| 194 | def OnMouseMove(self, event): |
| 195 | row, _, col = self.HitTestSubItem(event.Position) |
| 196 | if row != self.hoveredRow or col != self.hoveredColumn: |
| 197 | if self.ToolTip is not None: |
| 198 | self.SetToolTip(None) |
| 199 | else: |
| 200 | self.hoveredRow = row |
| 201 | self.hoveredColumn = col |
| 202 | if row != -1 and col != -1 and col < len(self.DEFAULT_COLS): |
| 203 | try: |
| 204 | mod = self.fighters[row] |
| 205 | except IndexError: |
| 206 | return |
| 207 | if self.DEFAULT_COLS[col] == "Miscellanea": |
| 208 | tooltip = self.activeColumns[col].getToolTip(mod) |
| 209 | if tooltip is not None: |