packages feed

HGamer3D-GUI-0.4.0: HGamer3D/GUI/BaseAPI.hs

-- This source file is part of HGamer3D
-- (A project to enable 3D game development in Haskell)
-- For the latest info, see http://www.hgamer3d.org
--
-- (c) 2011-2013 Peter Althainz
-- 
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--     http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.

-- GUI.hs

-- |GUI functionality of HGamer3D, public API. 

module HGamer3D.GUI.BaseAPI

(
  -- * General GUI Functionality
  
        -- ** Data Definitions, Types
  
        GUISystem,

        -- ** Initializing
        
        initGUI,
        freeGUI,
        pollGUIEvent,

        -- ** Configuration
        
	loadGuiScheme,
	loadGuiFont,
	setGuiDefaultFont,
	setGuiDefaultMouseCursor,
	setGuiDefaultTooltip,

  -- * General Handling of GUI Elements

        -- ** Data Definition, Types
        
        GUIElement,
        GUIDim (..),
        GUIVec2 (..),

        -- ** Work on the GUI Element Tree

        addChildGuiEl,
	getChildGuiEl,
        removeChildGuiEl,
	findChildGuiElRecursive,

        -- ** Add Elements to Display and Remove from Display
        
        addGuiElToDisplay,
	removeGuiElFromDisplay,
	
        -- ** Work with GUI Element Properties
        
	getGuiElProperty,
	setGuiElProperty,
	enableGuiEl,
	disableGuiEl,
	activateGuiEl,
	deactivateGuiEl,
        deleteGuiEl,
	showGuiEl,
	hideGuiEl,
        typeOfGuiEl,

        -- ** Work with File Layouts

        loadGuiLayoutFromFile,

 -- * Event Handling
        
        injectWinEventToGUI,
        injectGUITimeDelta,
        notifyDisplaySizeChanged,
        GUIEvent (..),
        registerGUIEvent,

-- * Widget Properties

 -- ** Property Types

        GUIElementProperty, 
        GUIHasValueProperty,

-- ** Property Functions
        (=:),
        setP,
        getP,

-- ** GUI Widget General Properties

        pText,
        pDisabled,
        pVisible,
        pAlpha,
        pTooltip,
        pAlwaysOnTop,
        pMargin,

        pX,
        pY,
        pWidth,
        pHeight,

        pSelected,
        pValue,

        pTextSelection,
        pTextChoice,
        

-- * Widget Specific Types, Functions and Properties

        -- ** Button Widget
        GUIButton,
        GUIButtonProperty,
        button,
        toButton,
        findButton,

        -- ** RadioButton Widget
        GUIRadioButton,
        GUIRadioButtonProperty,
        radioButton,
        toRadioButton,
        findRadioButton,

        -- ** CheckBox Widget
        GUICheckBox,
        GUICheckBoxProperty,
        checkBox,
        toCheckBox,
        findCheckBox,

        -- ** EditText Widget
        GUIEditText, 
        GUIEditTextProperty,
        editText,
        toEditText,
        findEditText,

        -- ** MultilineText Widget
        GUIMultilineText, 
        multilineText,
        toMultilineText,
        findMultilineText,

        -- ** Listbox/Combobox Widget        
        GUIListBox,
        GUIComboBox,
        GUIHasSelectionProperty, 
        comboBox,
        listBox,
        toComboBox,
        toListBox,
        findComboBox,
        findListBox,

        listboxAddText,
	listboxGetSelectedText,
	listboxRemoveAllText,
        listboxInitialize,
        listboxStatus,

	comboboxAddText,
	comboboxRemoveAllText,
        comboboxStatus,

        -- ** Slider/Spinner Widget
        GUISlider,
        GUISpinner,
        GUISliderProperty,
        GUISpinnerProperty,
        slider,
        spinner,
        toSlider,
        toSpinner, 
        findSlider,
        findSpinner,

        -- ** Layout Container Widgets
        GUIHLayout,
        GUIVLayout,
        GUIGridLayout,

        hLayout,
        vLayout,
        gridLayout,

        toHLayout,
        toVLayout,
        toGridLayout,

        -- ** Window Widget
        GUIWindow,
        window,
        toWindow,
        

        -- ** CRUD for Form based GUIs
        GUIEngineData,
        createForm,
        updateForm,
        removeForm,

        getFormValues,
        setFormValues
)

where

import HGamer3D.GUI.Internal.Base
import HGamer3D.GUI.Internal.Widgets
import HGamer3D.GUI.Internal.Properties
import HGamer3D.GUI.Internal.Form
import HGamer3D.GUI.Schema.GUIDim