/*
 FILEDLG.DOX

 License CC0 PUBLIC DOMAIN

 To the extent possible under law, Mark J. Olesen has waived all copyright
 and related or neighboring rights to FDOSTUI Library. This work is published
 from: United States.
*/


/*! \file filedlg.hpp
\brief contains file dialog class
*/

/*! \class filedlg filedlg.hpp
\brief Allows a user to choose a file 
*/

/*!
\fn filedlg::filedlg(
        int const                       i_pos_x,
        int const                       i_pos_y,
        unsigned int const              i_len_x,
        unsigned int const              i_len_y)
\brief constructor 
\param[in] i_pos_x x position to place widget
\param[in] i_pos_y y position to place widget
\param[in] i_len_x x length of widget
\param[in] i_len_y y length of widget
\returns none
\see file_dialog_open
*/

/*!
\fn virtual filedlg::~filedlg()
\brief destructor
\returns none
*/

/*!
\fn unsigned char * filedlg::get_filename() const
\brief gets the filename the user choose
\returns null terminated string of file choosen

Call takes ownership of the returned string. It will need
to be released (free'd).
*/

/*!
\fn void filedlg::set_filename(
        unsigned char const*            i_filename)
\brief sets the default file name 
\returns none
*/

/*!
\var filedlg::m_label_file
	label for "File"
*/

/*!
\var filedlg::m_entry_file
	entry widget for filename
*/

/*!
\var filedlg::m_label_filter
	label for "filter"
*/

/*!
\var filedlg::m_entry_filter
	entry widget for filter
*/

/*!
\var filedlg::m_checkbutton_readonly
	readonly attribute check button
*/

/*!
\var filedlg::m_checkbutton_hidden
	hidden attribute check button
*/

/*!
\var filedlg::m_checkbutton_system
	system attribute check button
*/

/*!
\var filedlg::m_button_refresh
	system button to refresh/reload dialog
*/

/*!
\var filedlg::m_button_cancel
	cancel button
*/

/*!
\var filedlg::m_button_ok
	ok button
*/

/*!
\var filedlg::m_label_path
	label to display the path
*/

/*!
\var filedlg::m_label_message
	label to display a message such as error messages
*/

/*!
\var filedlg::m_listbox_file;
	listbox for files
*/

/*!
\var filedlg::m_combobox_directories
	combobox for directories
*/

/*!
\var filedlg::m_listbox_drives
	listbox for drives
*/

/*!
\fn void filedlg::configure_default()
\brief startup configuration. Loads the dialog up with intial
values.
\returns none
*/

/*!
\fn void filedlg::configure_listbox_file()
\brief configure file listbox. Loads files from the current directory.
\returns none
*/

/*!
\fn void filedlg::configure_listbox_directories()
\brief configure directories listbox. Loads directories from current directory.
\returns none
*/

/*!
\fn void filedlg::configure_listbox_drives()
\brief configure drives listbox. Loads drives from the hardware module.
\returns none
*/

/*!
\fn static void filedlg::listbox_drive_cb(
        listbox const*                  i_listbox,
        void*                           io_user_data)
\brief listbox drives callback
\param[in] i_listbox listbox widget
\param[in] io_user_data user defined data
\returns none
*/

/*! 
\fn static void filedlg::combobox_directory_cb(
        entry const*                    i_entry,
        void*                           io_user_data)
\brief combobox directories callback
\param[in] i_entry entry widget
\param[in] io_user_data user defined data
\returns none
*/

/*!
\fn static void filedlg::listbox_file_cb(
        listbox const*                  i_listbox,
        void*                           io_user_data)
\brief listbox file callback
\param[in] i_listbox listbox widget
\param[in] io_user_data user defined data
\returns none
*/

/*!
\fn static void filedlg::checkbutton_attribute_cb(
        button const*                   i_button,
        void*                           io_user_data)
\brief attributes call back (system, readonly, hidden)
\param[in] i_button button widget
\param[in] io_user_data user defined data
\returns none

/*!
\fn static void filedlg::button_refresh_cb(
        button const*                   i_button,
        void*                           io_user_data)
\brief refresh button callback
\param[in] i_button button widget
\param[in] io_user_data user defined data
\returns none
*/

/*!
\fn void filedlg::drive_changed_internal()
\brief event handler when drive changes
\returns none
*/

/*!
\fn void filedlg::directory_changed_internal()
\brief event handler when directory changed
\returns none
*/

/*!
\fn void filedlg::file_changed_internal()
\brief event handler when file changed
\returns none
*/

/*!
\fn void filedlg::attribute_changed_internal()
\brief event handler when attribute (hidden, system, readonly) changed
\returns none
*/

/*!
\fn void filedlg::refresh()
\brief refreshes/reloads dialog box
\returns none
*/
