import gui.mainFrame
from gui.contextMenu import ContextMenuSelection
from gui.utils.clipboard import toClipboard
from service.fit import Fit
from service.port.eft import exportDrones, exportFighters, exportCargo, exportImplants, exportBoosters


viewSpecMap = {
    'droneItemMisc': ('Drones', exportDrones),
    'fighterItemMisc': ('Fighters', exportFighters),
    'cargoItemMisc': ('Cargo Items', exportCargo),
    'implantItemMisc': ('Implants', exportImplants),
    'implantItemMiscChar': ('Implants', exportImplants),
    'boosterItemMisc': ('Boosters', exportBoosters)}


class AdditionsExportAll(ContextMenuSelection):

    visibilitySetting = 'additionsCopyPaste'

    def __init__(self):
        self.mainFrame = gui.mainFrame.MainFrame.getInstance()

    def display(self, callingWindow, srcContext, selection):
        if srcContext not in viewSpecMap:
            return False
        if not selection:
            return False
        fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit())
        if fit is None:
            return False

        self.srcContext = srcContext
        return True

    def getText(self, callingWindow, itmContext, selection):
        return 'Copy Selected {}'.format(viewSpecMap[self.srcContext][0])

    def activate(self, callingWindow, fullContext, selection, i):
        export = viewSpecMap[self.srcContext][1](selection)
        if export:
            toClipboard(export)


AdditionsExportAll.register()
