libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        pairEditor
            (tupel3Editor
                (boolEditor,
                paraName <<<- ParaName (__ "Exposed")
                $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
                $ emptyParams)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
                $ paraPack <<<- ParaPack PackNatural
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (tupel3Editor
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Reexported Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Required Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em rmn rs es exp bi) = inj ((exp, map (T.pack . display) em,bi), (map (T.pack . display) rmn, map (T.pack . display) rs, map (T.pack . display) es))
        parseModuleNames = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        parseRexportedModules = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        pext = do
            mbp <- ext
            case mbp of
                Nothing -> return Nothing
                Just ((exp,em,bi), (rmn, rs, es)) -> return (Just $ Library'
                    (parseModuleNames em)
                    (parseRexportedModules rmn)
                    (parseModuleNames rs)
                    (parseModuleNames es) exp bi)
    return (wid,pinj,pext)
#else
libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        tupel3Editor
            (boolEditor,
            paraName <<<- ParaName (__ "Exposed")
            $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
            $ emptyParams)
            (modulesEditor (sort modules),
            paraName <<<- ParaName (__ "Exposed Modules")
            $ paraMinSize <<<- ParaMinSize (-1,300)
            $ para)
            (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
            $ paraPack <<<- ParaPack PackNatural
            $ para)
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em exp bi) = inj (exp, map (T.pack . display) em,bi)
    let pext = do
        mbp <- ext
        case mbp of
            Nothing -> return Nothing
            Just (exp,em,bi) -> return (Just $ Library' (map (\s -> forceJust (simpleParse $ T.unpack s)
                "SpecialEditor >> libraryEditor: no parse for moduile name") em) exp bi)
    return (wid,pinj,pext)
#endif
libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        pairEditor
            (tupel3Editor
                (boolEditor,
                paraName <<<- ParaName (__ "Exposed")
                $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
                $ emptyParams)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
                $ paraPack <<<- ParaPack PackNatural
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (tupel3Editor
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Reexported Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Required Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em rmn rs es exp bi) = inj ((exp, map (T.pack . display) em,bi), (map (T.pack . display) rmn, map (T.pack . display) rs, map (T.pack . display) es))
        parseModuleNames = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        parseRexportedModules = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        pext = do
            mbp <- ext
            case mbp of
                Nothing -> return Nothing
                Just ((exp,em,bi), (rmn, rs, es)) -> return (Just $ Library'
                    (parseModuleNames em)
                    (parseRexportedModules rmn)
                    (parseModuleNames rs)
                    (parseModuleNames es) exp bi)
    return (wid,pinj,pext)
#else
libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        tupel3Editor
            (boolEditor,
            paraName <<<- ParaName (__ "Exposed")
            $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
            $ emptyParams)
            (modulesEditor (sort modules),
            paraName <<<- ParaName (__ "Exposed Modules")
            $ paraMinSize <<<- ParaMinSize (-1,300)
            $ para)
            (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
            $ paraPack <<<- ParaPack PackNatural
            $ para)
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em exp bi) = inj (exp, map (T.pack . display) em,bi)
    let pext = do
        mbp <- ext
        case mbp of
            Nothing -> return Nothing
            Just (exp,em,bi) -> return (Just $ Library' (map (\s -> forceJust (simpleParse $ T.unpack s)
                "SpecialEditor >> libraryEditor: no parse for moduile name") em) exp bi)
    return (wid,pinj,pext)
#endif
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        pairEditor
            (tupel3Editor
                (boolEditor,
                paraName <<<- ParaName (__ "Exposed")
                $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
                $ emptyParams)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
                $ paraPack <<<- ParaPack PackNatural
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (tupel3Editor
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Reexported Modules")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Required Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para)
                (modulesEditor (sort modules),
                paraName <<<- ParaName (__ "Exposed Signatures")
                $ paraMinSize <<<- ParaMinSize (-1,300)
                $ para),
                (paraDirection <<<- ParaDirection Vertical
                $ emptyParams))
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em rmn rs es exp bi) = inj ((exp, map (T.pack . display) em,bi), (map (T.pack . display) rmn, map (T.pack . display) rs, map (T.pack . display) es))
        parseModuleNames = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        parseRexportedModules = map (\s -> forceJust (simpleParse $ T.unpack s)
                    "SpecialEditor >> libraryEditor: no parse for moduile name")
        pext = do
            mbp <- ext
            case mbp of
                Nothing -> return Nothing
                Just ((exp,em,bi), (rmn, rs, es)) -> return (Just $ Library'
                    (parseModuleNames em)
                    (parseRexportedModules rmn)
                    (parseModuleNames rs)
                    (parseModuleNames es) exp bi)
    return (wid,pinj,pext)
#else
libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'
libraryEditor fp modules numBuildInfos para noti = do
    (wid,inj,ext) <-
        tupel3Editor
            (boolEditor,
            paraName <<<- ParaName (__ "Exposed")
            $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")
            $ emptyParams)
            (modulesEditor (sort modules),
            paraName <<<- ParaName (__ "Exposed Modules")
            $ paraMinSize <<<- ParaMinSize (-1,300)
            $ para)
            (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")
            $ paraPack <<<- ParaPack PackNatural
            $ para)
            (paraDirection <<<- ParaDirection Vertical
            $ emptyParams)
            noti
    let pinj (Library' em exp bi) = inj (exp, map (T.pack . display) em,bi)
    let pext = do
        mbp <- ext
        case mbp of
            Nothing -> return Nothing
            Just (exp,em,bi) -> return (Just $ Library' (map (\s -> forceJust (simpleParse $ T.unpack s)
                "SpecialEditor >> libraryEditor: no parse for moduile name") em) exp bi)
    return (wid,pinj,pext)
#endif