def swapItems(self, x, y, srcIdx): """Swap two modules in fitting window""" sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) dstRow, _ = self.HitTest((x, y)) if dstRow != -1 and dstRow not in self.blanks: try: mod1 = fit.modules[srcIdx] mod2 = self.mods[dstRow] except IndexError: return if not isinstance(mod2, Module): return # can't swap modules to different racks if mod1.slot != mod2.slot: return if mod2 not in fit.modules: pyfalog.error("Missing module position for: {0}", str(getattr(mod2, "ID", "Unknown"))) return mod2Position = fit.modules.index(mod2) mstate = wx.GetMouseState() if mstate.GetModifiers() == wx.MOD_CONTROL | wx.MOD_ALT: self.mainFrame.command.Submit(cmd.GuiFillWithClonedLocalModulesCommand( fitID=self.activeFitID, position=srcIdx)) elif mstate.GetModifiers() == wx.MOD_CONTROL and mod2.isEmpty: self.mainFrame.command.Submit(cmd.GuiCloneLocalModuleCommand( fitID=self.activeFitID, srcPosition=srcIdx, dstPosition=mod2Position)) elif mstate.GetModifiers() == wx.MOD_NONE: self.mainFrame.command.Submit(cmd.GuiSwapLocalModulesCommand( fitID=self.activeFitID, position1=srcIdx, position2=mod2Position))
def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] fitID = self.mainFrame.getActiveFit() if srcContext == "fittingModule": fit = Fit.getInstance().getFit(fitID) if mainItem in fit.modules: position = fit.modules.index(mainItem) self.mainFrame.command.Submit( cmd.GuiFillWithClonedLocalModulesCommand( fitID=fitID, position=position))