| 56 | |
| 57 | |
| 58 | class ImplantView(wx.Panel): |
| 59 | |
| 60 | def __init__(self, parent): |
| 61 | wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) |
| 62 | self.mainFrame = gui.mainFrame.MainFrame.getInstance() |
| 63 | |
| 64 | mainSizer = wx.BoxSizer(wx.VERTICAL) |
| 65 | |
| 66 | self.implantDisplay = ImplantDisplay(self) |
| 67 | mainSizer.Add(self.implantDisplay, 1, wx.EXPAND, 0) |
| 68 | |
| 69 | radioSizer = wx.BoxSizer(wx.HORIZONTAL) |
| 70 | radioSizer.AddStretchSpacer() |
| 71 | self.rbFit = wx.RadioButton(self, id=wx.ID_ANY, label=_t("Use Fit-specific Implants"), style=wx.RB_GROUP) |
| 72 | self.rbChar = wx.RadioButton(self, id=wx.ID_ANY, label=_t("Use Character Implants")) |
| 73 | radioSizer.Add(self.rbFit, 0, wx.ALL, 5) |
| 74 | radioSizer.Add(self.rbChar, 0, wx.ALL, 5) |
| 75 | radioSizer.AddStretchSpacer() |
| 76 | |
| 77 | mainSizer.Add(radioSizer, 0, wx.EXPAND, 5) |
| 78 | |
| 79 | self.SetSizer(mainSizer) |
| 80 | self.SetAutoLayout(True) |
| 81 | |
| 82 | self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioSelect, self.rbFit) |
| 83 | self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioSelect, self.rbChar) |
| 84 | self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) |
| 85 | |
| 86 | def fitChanged(self, event): |
| 87 | event.Skip() |
| 88 | activeFitID = self.mainFrame.getActiveFit() |
| 89 | if activeFitID is not None and activeFitID not in event.fitIDs: |
| 90 | return |
| 91 | |
| 92 | sFit = Fit.getInstance() |
| 93 | fit = sFit.getFit(activeFitID) |
| 94 | if fit: |
| 95 | self.source = fit.implantSource |
| 96 | if fit.implantSource == ImplantLocation.FIT: |
| 97 | self.rbFit.SetValue(True) |
| 98 | else: |
| 99 | self.rbChar.SetValue(True) |
| 100 | |
| 101 | self.rbFit.Enable(fit is not None) |
| 102 | self.rbChar.Enable(fit is not None) |
| 103 | |
| 104 | def OnRadioSelect(self, event): |
| 105 | fitID = self.mainFrame.getActiveFit() |
| 106 | if fitID is not None: |
| 107 | self.mainFrame.command.Submit(cmd.GuiChangeImplantLocationCommand( |
| 108 | fitID=fitID, source=ImplantLocation.FIT if self.rbFit.GetValue() else ImplantLocation.CHARACTER)) |
| 109 | |
| 110 | def getTabExtraText(self): |
| 111 | fitID = self.mainFrame.getActiveFit() |
| 112 | if fitID is None: |
| 113 | return None |
| 114 | sFit = Fit.getInstance() |
| 115 | fit = sFit.getFit(fitID) |