Skip to content

Commit c684512

Browse files
committed
Move more logic to base class
1 parent 77ae235 commit c684512

File tree

5 files changed

+54
-34
lines changed

5 files changed

+54
-34
lines changed

_development/helpers_fits.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ def HeronFit(DB, Gamedata, Saveddata):
6262
for _ in range(4):
6363
fit.modules.append(mod)
6464

65-
return fit
65+
return fit

eos/saveddata/targetProfile.py

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def getIdeal(cls):
5858
signatureRadius=None,
5959
radius=0)
6060
cls._idealTarget.name = 'Ideal Target'
61+
cls._idealTarget.ID = -1
6162
return cls._idealTarget
6263

6364
@property

gui/builtinContextMenus/itemRemove.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def __handleCommandFit(self, callingWindow, mainItem, selection):
159159
fitID=fitID, commandFitIDs=commandFitIDs))
160160

161161
def __handleGraphFit(self, callingWindow, mainItem, selection):
162-
callingWindow.removeFits(selection)
162+
callingWindow.removeListItems(selection)
163163

164164

165165
RemoveItem.register()

gui/graphFrame/lists.py

+49-32
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ def __init__(self, graphFrame, parent):
4040
super().__init__(parent)
4141
self.graphFrame = graphFrame
4242

43+
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
44+
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick)
45+
4346
def refreshExtraColumns(self, extraColSpecs):
4447
baseColNames = set()
4548
for baseColName in self.DEFAULT_COLS:
@@ -56,19 +59,38 @@ def refreshExtraColumns(self, extraColSpecs):
5659
self.appendColumnBySpec(colSpec)
5760
self.refreshView()
5861

62+
def kbEvent(self, event):
63+
keycode = event.GetKeyCode()
64+
mstate = wx.GetMouseState()
65+
if keycode == 65 and mstate.GetModifiers() == wx.MOD_CONTROL:
66+
self.selectAll()
67+
elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and mstate.GetModifiers() == wx.MOD_NONE:
68+
self.removeListItems(self.getSelectedListItems())
69+
event.Skip()
70+
71+
def OnLeftDClick(self, event):
72+
row, _ = self.HitTest(event.Position)
73+
item = self.getListItem(row)
74+
if item is None:
75+
return
76+
self.removeListItems([item])
77+
5978
def refreshView(self):
6079
raise NotImplementedError
6180

6281
def updateView(self):
6382
raise NotImplementedError
6483

65-
def getItem(self, row):
84+
def getListItem(self, row):
6685
raise NotImplementedError
6786

68-
def getSelectedItems(self):
87+
def removeListItems(self, items):
88+
raise NotImplementedError
89+
90+
def getSelectedListItems(self):
6991
items = []
7092
for row in self.getSelectedRows():
71-
item = self.getItem(row)
93+
item = self.getListItem(row)
7294
if item is None:
7395
continue
7496
items.append(item)
@@ -87,8 +109,6 @@ def __init__(self, graphFrame, parent):
87109
self.graphFrame.mainFrame.Bind(EVT_FIT_RENAMED, self.OnFitRenamed)
88110
self.graphFrame.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved)
89111

90-
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
91-
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick)
92112
self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu)
93113
self.Bind(wx.EVT_MOTION, self.OnMouseMove)
94114
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
@@ -110,35 +130,16 @@ def updateView(self):
110130
self.update(self.fits)
111131

112132
def spawnMenu(self, event):
113-
selection = self.getSelectedItems()
133+
selection = self.getSelectedListItems()
114134
clickedPos = self.getRowByAbs(event.Position)
115-
mainItem = self.getItem(clickedPos)
135+
mainItem = self.getListItem(clickedPos)
116136

117137
sourceContext = 'graphFitList'
118138
itemContext = None if mainItem is None else 'Fit'
119139
menu = ContextMenu.getMenu(self, mainItem, selection, (sourceContext, itemContext))
120140
if menu:
121141
self.PopupMenu(menu)
122142

123-
def kbEvent(self, event):
124-
keycode = event.GetKeyCode()
125-
mstate = wx.GetMouseState()
126-
if keycode == 65 and mstate.GetModifiers() == wx.MOD_CONTROL:
127-
self.selectAll()
128-
elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and mstate.GetModifiers() == wx.MOD_NONE:
129-
self.removeFits(self.getSelectedItems())
130-
event.Skip()
131-
132-
def OnLeftDClick(self, event):
133-
row, _ = self.HitTest(event.Position)
134-
if row != -1:
135-
try:
136-
fit = self.fits[row]
137-
except IndexError:
138-
pass
139-
else:
140-
self.removeFits([fit])
141-
142143
def OnFitRenamed(self, event):
143144
event.Skip()
144145
self.updateView()
@@ -152,24 +153,24 @@ def OnFitRemoved(self, event):
152153
event.Skip()
153154
fit = next((f for f in self.fits if f.ID == event.fitID), None)
154155
if fit is not None:
155-
self.removeFits([fit])
156+
self.removeListItems([fit])
156157

157-
def getItem(self, row):
158+
def getListItem(self, row):
158159
if row == -1:
159160
return None
160161
try:
161162
return self.fits[row]
162163
except IndexError:
163164
return None
164165

165-
def removeFits(self, fits):
166-
toRemove = [f for f in fits if f in self.fits]
166+
def removeListItems(self, items):
167+
toRemove = [i for i in items if i in self.fits]
167168
if not toRemove:
168169
return
169170
for fit in toRemove:
170171
self.fits.remove(fit)
171172
self.updateView()
172-
for fit in fits:
173+
for fit in toRemove:
173174
self.graphFrame.clearCache(reason=GraphCacheCleanupReason.fitRemoved, extraData=fit.ID)
174175
self.graphFrame.draw()
175176

@@ -231,7 +232,7 @@ def refreshView(self):
231232
def updateView(self):
232233
self.update(self.targets)
233234

234-
def getItem(self, row):
235+
def getListItem(self, row):
235236
if row == -1:
236237
return None
237238

@@ -246,6 +247,22 @@ def getItem(self, row):
246247
else:
247248
return self.profiles[row - numFits]
248249

250+
def removeListItems(self, items):
251+
fitsToRemove = [i for i in items if i in self.fits]
252+
profilesToRemove = [i for i in items if i in self.profiles]
253+
if not fitsToRemove and not profilesToRemove:
254+
return
255+
for fit in fitsToRemove:
256+
self.fits.remove(fit)
257+
for profile in profilesToRemove:
258+
self.profiles.remove(profile)
259+
self.updateView()
260+
for fit in fitsToRemove:
261+
self.graphFrame.clearCache(reason=GraphCacheCleanupReason.fitRemoved, extraData=fit.ID)
262+
for profile in profilesToRemove:
263+
self.graphFrame.clearCache(reason=GraphCacheCleanupReason.profileRemoved, extraData=profile.ID)
264+
self.graphFrame.draw()
265+
249266
@property
250267
def targets(self):
251268
return self.fits + self.profiles

service/const.py

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ class GraphDpsDroneMode(IntEnum):
123123
class GraphCacheCleanupReason(IntEnum):
124124
fitChanged = auto()
125125
fitRemoved = auto()
126+
profileChanged = auto()
127+
profileRemoved = auto()
126128
graphSwitched = auto()
127129
inputChanged = auto()
128130
optionChanged = auto()

0 commit comments

Comments
 (0)