Fudgets

{-# LANGUAGE CPP #-}


-- Syntax for existential quantification varies:


-- | Programmers' index. There is very little documentation here. See the
-- <http://www.altocumulus.org/Fudgets/Manual/ Fudget Library Reference Manual>
-- instead.
module Fudgets(
 -- * GUI
 buttonF, border3dF, buttonBorderF, pushButtonF,
 BMevents(..),
 popupMenuF, Click(..),
 radioGroupF, radioGroupF', intF, passwdF, stringF,
 intInputF, stringInputF, passwdInputF,
 intInputF', stringInputF', passwdInputF',
 toggleButtonF,
 -- ** Popups
 inputPopupOptF, inputPopupF,
 passwdPopupOptF, passwdPopupF, stringPopupOptF, stringPopupF,
 confirmPopupF, ConfirmMsg(..), oldConfirmPopupF, oldMessagePopupF,
 messagePopupF, intDispF, displayF, labelF,
 -- ** Text editor
 EditStop(..), editF,
 EditEvt(..), EditCmd(..), editorF, editorF', selectall, loadEditor,
 newline, EDirection(..), inputEditorF, inputEditorF', EditorF,
 EditStopFn(..), EditStopChoice(..), IsSelect(..),setEditorCursorPos,
 -- ** List and text
 oldFilePickF, PickListRequest(..),
 textF, textF',-- textF'',
 TextRequest(..), TextF, HasInitText(..), HasSizing(..),Sizing(..),
 ListRequest(..),
 replaceAll, replaceAllFrom, deleteItems, insertItems, appendItems,
 changeItems, replaceItems, highlightItems, pickItem, applyListRequest, 
 smallPickListF, labRightOfF, labLeftOfF, labBelowF, labAboveF,
 tieLabelF, menuF, PopupMenu(..), menuPopupF,
 pickListF, moreShellF,pickListF', moreShellF',
 moreFileShellF, moreFileF, moreF, moreF',
 terminalF, cmdTerminalF, TerminalCmd(..),
 -- ** Graphics
 hyperGraphicsF, hyperGraphicsF',GraphicsF,setAdjustSize,
 -- * Fudgets and combinators
 contDynF,
 Fudget(..), F, --F(..),
 listF,
 untaggedListF, loopCompF, loopCompSP, loopF, loopLeftF, loopRightF, loopOnlyF,
 loopThroughRightF, loopCompThroughLeftF, loopCompThroughRightF,
 loopThroughBothF,
 --Message,
 delayF, getF, putF, putsF, startupF, appendStartF, 

 nullF, parF, prodF, absF, bypassF, concatMapF, idF, idLeftF,
 idRightF, mapF, mapstateF, serCompLeftToRightF, serCompRightToLeftF, stubF,
 throughF, toBothF, (>*<), (>+<), (>=^<), (>=^^<),
 (>#+<), (>#==<), (>==<), (>^=<), (>^^=<),
 prepostMapHigh,

 quitIdF, quitF,

 DynFMsg(..), dynF, dynListF, DynMsg(..), --Either(..),
 FudgetIO(..),
 --Fa(..),Direction, TCommand(..),TEvent(..),

 {- FCommand(..), FEvent(..), K(..), KCommand(..), KEvent(..),
 TCommand(..), TEvent(..), -}
 -- ** Input
 InF(..), InputMsg(..), inputDoneSP, inputLeaveDoneSP,
 inputListSP, inputPairSP, inputThroughF, inputPairF, inputListF, inputChange,
 inputListLF, inputPairLF, -- obsolete
 stripInputSP,
 inputButtonKey, inputLeaveKey, inputMsg, mapInp, stripInputMsg,
 inputDone, inputLeaveDone,
 tstInp,

 -- * Layout
 Orientation(..),
 alignF, marginHVAlignF, layoutModifierF, noStretchF,
 marginF, sepF,
 autoP, flipP, permuteP, revP, idP,
 Alignment(..), aBottom, aCenter, aLeft, aRight, aTop,
 -- barP, rightBelowP,
 dynListLF, LayoutDir(..),
 listLF, nullLF, holeF,
 --rbLayoutF,
 untaggedListLF, LayoutRequest,
 Placer, center, center', fixedh, fixedv, flipPoint,
 flipRect, flipReq,

 NameLayout, LName(..),hvAlignNL, marginHVAlignNL, hBoxNL, hBoxNL',
 nullNL, leafNL, spaceNL, placeNL, 
 listNF, modNL, nameF, nameLayoutF, sepNL, marginNL, vBoxNL, vBoxNL',

 hBoxF, matrixF, placerF, spacerF, spacer1F, revHBoxF, revVBoxF, spacerP,
 tableF, vBoxF, horizontalP, horizontalP', matrixP, matrixP',
 verticalP, verticalP',paragraphP,paragraphP',paragraphP'',
 dynPlacerF, dynSpacerF, -- There are pitfalls with using these...

 Distance(..), Spacer, bottomS, centerS, compS, flipS,
 hAlignS, sizeS, maxSizeS, minSizeS, hCenterS, hMarginS, marginHVAlignS,
 hvAlignS, hvMarginS, idS, leftS, marginS, sepS, noStretchS,
 rightS, topS, vAlignS, vCenterS, vMarginS, tableP, tableP', bubbleF,
 bubblePopupF, bubbleRootPopupF, shellF, PotRequest(..), PotState(..),
 containerGroupF, hPotF, vPotF, popupShellF, popupShellF', PopupMsg(..),
 posPopupShellF, hScrollF, scrollF, scrollShellF, vScrollF,
 ESelCmd(..), ESelEvt(..), SelCmd(..), SelEvt(..), eselectionF,
 selectionF, allcacheF,
 {-
 bitmapdatacacheF, bitmapfilecacheF,
 colorcacheF, fontcacheF, fontcursorcacheF, fstructcacheF, gCcacheF,
 -}
 doubleClickF, Time(..),
 -- * Stream processors
 -- ** Combining stream processors
 (-+-),(-*-),(-==-),
 compEitherSP, idLeftSP, idRightSP, postMapSP, preMapSP,
 prepostMapSP, serCompSP, loopLeftSP, loopSP, loopOnlySP, loopThroughRightSP,
 loopThroughBothSP,
 parSP, seqSP,
 -- ** Stream processor primitives
 SP,nullSP,putSP,putsSP,getSP,
 StreamProcIO(..),runSP, walkSP, pullSP,

 {-SPm(..), bindSPm, getSPm, monadSP, nullSPm, putsSPm, thenSPm, toSPm, unitSPm,-}

 -- ** Convenient stream processors
 idSP, filterSP, filterJustSP, filterLeftSP, filterRightSP, mapFilterSP,
 splitSP, toBothSP,
 concatSP, concSP,
 mapSP, concatMapSP, concmapSP,
 concatMapAccumlSP, mapstateSP, mapAccumlSP,
 zipSP,
 -- ** Stream processor behaviour
 Cont(..),
 appendStartSP, chopSP, delaySP, feedSP,
 splitAtElemSP, startupSP, stepSP,
 cmdContSP, conts, getLeftSP, getRightSP, waitForSP, waitForF, dropSP, contMap,
 -- * System (stdio, files, network, subprocesses)
 -- ** Dialogue IO
 hIOF,
 hIOSuccF, hIOerrF, haskellIOF,
 inputLinesSP, linesSP,
 -- ** Stdio
 outputF, stderrF, stdinF,
 stdioF, stdoutF,
 -- ** Subprocesses
 subProcessF,
 -- ** Files and directories
 appStorageF,
 readDirF, readFileF, writeFileF,
 -- ** Sockets
 Host(..), LSocket(..), Peer(..), Port(..), Socket(..),
 openLSocketF,
 openSocketF, receiverF, transceiverF, transmitterF, asyncTransmitterF,
 asyncTransceiverF,
 -- ** Timer
 Tick(..), timerF,
 --dropF,
 -- ** Running a fudget
 fudlogue, fudlogue', Fudlogue,
 -- * Command line, environment and defaults
 argFlag, argKey, argReadKey, argKeyList, args, progName,
 bgColor, buttonFont, defaultFont, defaultSize,
 defaultPosition, defaultSep, edgeWidth, fgColor, labelFont, look3d,
 menuFont, options, paperColor, shadowColor, shineColor,
 -- * Utilities for the Either type
 filterLeft, filterRight, isLeft, isRight, mapEither,
 fromLeft, fromRight, plookup, splitEitherList, stripEither, stripLeft,
 --  mapfilter, isM, stripMaybe, stripMaybeDef,
     -- use Maybe.mapMaybe,isJust,fromJust,fromMaybe!
 stripRight, swapEither,
 -- * Geometry
 (=.>),
 Line(..), Point(..), Rect(..), Size(..), Move(..), confine, diag, freedom,
 growrect, inRect, lL, line2rect, moveline, moverect, origin, pMax,
 pMin, pP, padd, plim, pmax, pmin, posrect, psub, rR, rect2line,
 rectMiddle,
 rmax, rsub, scale, scalePoint, sizerect,
 --xcoord, ycoord, rectpos, rectsize,
 -- * Utilities
 aboth, anth, gmap, -- afst, asnd, dropto, 
 issubset, lhead, loop, lsplit, ltail, mapPair, number, oo, pair,
 pairwith, part, remove, replace, swap, unionmap, module FudVersion,

 -- * Xlib types
 XCommand, XEvent, Path(..),
 Button(..), ColorName(..), FontName(..), KeySym(..), FontStruct, RGB(..),
 WindowAttributes, 
 ModState(..), Modifiers(..), 
  -- * Graphics and drawings
 CoordMode(..),Shape(..),
 DrawCommand(..),fillCircle,drawCircle,
 Graphic(..),
 Drawing(..),atomicD,labelD,up,boxD,hboxD,hboxD',vboxD,vboxD',tableD,tableD',
 hboxcD,hboxcD',vboxlD,vboxlD',matrixD,matrixD',
 attribD,softAttribD,hardAttribD,fontD,fgD,stackD,spacedD,placedD,
 blankD,filledRectD,rectD,
 DPath(..),
 Gfx,
 g,
 FixedDrawing(..),FixedColorDrawing(..),gctx2gc,
 FlexibleDrawing(..),flex,flex',
 filler,hFiller,vFiller,frame,frame',ellipse,ellipse',arc,arc',
 filledEllipse,filledEllipse',filledarc,filledarc',
 lpar,rpar,lbrack,rbrack,lbrace,rbrace,
 triangleUp,triangleDown,filledTriangleUp,filledTriangleDown,
 BitmapFile(..),
 ColorGen(..),FontGen(..),FontSpec,ColorSpec,--Name(..),--ColorFallback(..),
 colorSpec,fontSpec,
 GCtx,rootGCtx,wCreateGCtx,createGCtx,gcFgA,gcBgA,gcFontA,
 GCAttributes(..),GCFillStyle(..),GCCapStyle(..),GCLineStyle(..),GCFunction(..),
 Width(..),

 -- * Customisation
 Customiser(..), PF(..), standard,

 HasClickToType(..), HasVisible(..), HasFontSpec(..), setFont,
 HasKeys(..), HasWinAttr(..), --HasTitle(..),
 HasBorderWidth(..), HasBgColorSpec(..), HasFgColorSpec(..), HasMargin(..),
 setBgColor,setFgColor,
 HasAlign(..),
 {- HasAllowedChar(..), HasShowString(..), -}
 setAllowedChar, setShowString, setCursorPos,
 HasCache(..),
 setDeleteQuit,setDeleteWindowAction,DeleteWindowAction(..),--HasDeleteQuit(..),
 HasInitSize(..),
 HasInitDisp(..),
 --setInitDisp, getInitDisp,
 setSpacer,
 HasStretchable(..),
 HasLabelInside(..),setPlacer,

 ShellF, shellF', setInitPos,
 unmappedSimpleShellF, unmappedSimpleShellF',
 ButtonF, buttonF', buttonF'', setLabel,
 DisplayF, displayF',-- displayF'',
 labelF', --labelF'',
 StringF, stringF', stringF'', setInitString, setInitStringSize,
 passwdF', passwdF'',
 intF', intF'',
 intDispF', --intDispF'',
 -- * Miscellaneous
 gcWarningF,bellF,
 --D_IOError,
 -- * Time
 getTime,getLocalTime,
 -- * Debugging
 spyF,teeF, ctrace,showCommandF) where

import AllFudgets -- hiding (Cont,PCont,Fa)
import FudVersion

-- I hate this file /TH
-- I still hate this file /TH