module Types ( WidgetTree(..), FunctionArgs(..), Function(..), Class(..), Attribute(..), Fluid, FluidBlock(..), UnbrokenOrBraced(..), BracedStringParts(..), HaskellIdentifier(..), ModuleIdentifier(..), PathElem(..), Path, PathIndexedElements, FluidElement(..), Name, NameLookupResult(..), ElementIdentifier(..), IdentifierIndexedElements, Type, LookupTables, GenerationError(..), TakenNames(..) ) where type Name = Maybe String data Attribute = Code0 [BracedStringParts] | Code1 [BracedStringParts] | Code2 [BracedStringParts] | Code3 [BracedStringParts] | Label UnbrokenOrBraced | Callback UnbrokenOrBraced | XYWH (Int,Int,Int,Int) | Color Int | Maximum Int | Value UnbrokenOrBraced | Box String | Labelsize Int | Resizable | Visible | Align Int | Minimum Int | Step Double | SelectionColor Int | Labeltype String | Labelcolor Int | Labelfont Int | Open | Hide | ReturnType UnbrokenOrBraced | Shortcut String | Private | UserData UnbrokenOrBraced | UserDataType UnbrokenOrBraced | Tooltip UnbrokenOrBraced | Comment UnbrokenOrBraced | Inherits String | When Int | Hotspot | Modal | Selected | Local | Public | TextFont Int | TextSize Int | TextColor Int | SliderSize Double | WidgetType UnbrokenOrBraced | Deactivate | InSource | InHeader | Global | DownBox String | SizeRange (Int,Int,Int,Int) | LineComment String | AfterCode UnbrokenOrBraced | DerivedFromClass String | Filename UnbrokenOrBraced | Divider | Image UnbrokenOrBraced | Deimage UnbrokenOrBraced deriving (Show) type Type = String data WidgetTree = Group Type HaskellIdentifier [Attribute] [WidgetTree] | Menu Type HaskellIdentifier [Attribute] [WidgetTree] | Component Type HaskellIdentifier [Attribute] | Code [Attribute] UnbrokenOrBraced | StandAloneComment [Attribute] UnbrokenOrBraced | CodeBlock UnbrokenOrBraced [Attribute] [WidgetTree] | Version String deriving Show newtype FunctionArgs = FunctionArgs (Maybe String) deriving (Show) data Function = Function HaskellIdentifier FunctionArgs [Attribute] [WidgetTree] deriving (Show) data Class = Class HaskellIdentifier [Attribute] [FluidBlock] deriving (Show) data FluidBlock = FluidClass Class | FluidFunction Function | DeclBlock [Attribute] UnbrokenOrBraced [FluidBlock] | Decl [Attribute] UnbrokenOrBraced | Data String [Attribute] deriving (Show) data UnbrokenOrBraced = UnbrokenString String | BracedString [BracedStringParts] deriving (Show) data BracedStringParts = BareString String | QuotedCharCode String | QuotedHex Integer | QuotedOctal Integer | QuotedChar String | NestedBrace [BracedStringParts] deriving (Show) type Fluid = [FluidBlock] data FluidElement = BlockElement FluidBlock | WidgetElement WidgetTree data HaskellIdentifier = ValidHaskell String | InvalidHaskell String | UnidentifiedFunction | Unidentified deriving (Eq,Show) data ModuleIdentifier = ValidModule String | InvalidModule String data PathElem = D | I deriving (Show,Eq) data NameLookupResult = FoundUniquePath Path | FoundMultiplePaths [Path] | PathNotFound type Path = [PathElem] data ElementIdentifier = ElementPath Path | ElementName HaskellIdentifier | ElementType Type type PathIndexedElements = [(Path,FluidElement)] type IdentifierIndexedElements = [([ElementIdentifier], FluidElement)] type LookupTables = ([(HaskellIdentifier,[Path])],[(Maybe Type,[Path])],[(Maybe String,[Path])]) data GenerationError = BadModuleName String newtype TakenNames = TakenNames [String] deriving Show