module Types
where

import Graphics.UI.Gtk

{-| 
    This type contains the variables associated with
    both the rows in the directory 'ListStore' and the
    file 'ListStore'.
-}

data StoreRow = StoreRow {
    name :: String, -- ^ The name of the file\/directory.
    icon :: Pixbuf, -- ^ The icon associated with the file\/directory.
    size :: String, -- ^ The string representation of the size of the file\/directory.
    lastAccess :: String, -- ^ The string representation of the last access time of the file\/directory.
    permissions :: String -- ^ The string representation of the user permission associated with the file\/directory. 
}

{-|
    This type represents the core components of the browser,
    all the important parts, the toggle button, the scrolled
    windows, the tree views and the list stores.
-}

data FileBrowser = FileBrowser {
    switch :: ToggleButton, -- ^ The toggle button used to determine which store is selected.
    location :: Entry, -- ^ The entry used to display\/changing the current directory location.
    treeScroll :: ScrolledWindow, -- ^ The scrolled window containing the expanding tree.
    dirScroll :: ScrolledWindow, -- ^ The scrolled window containing the directories.
    fileScroll :: ScrolledWindow, -- ^ The scrolled window containing the files.
    treeTree :: TreeView, -- ^ The TreeView containing the expanding tree.
    dirTree :: TreeView, -- ^ The TreeView containing the directories.
    fileTree :: TreeView, -- ^ The TreeView containing the files.
    treeStore :: TreeStore String, -- ^ TreeStore with the elements from the expanding tree.
    dirStore :: ListStore StoreRow, -- ^ ListStore containing the directory elements.
    fileStore :: ListStore StoreRow -- ^ ListStore containing the file elements.
}
