class FileDialog
{
public:
	static char * src_dir;
	static char * search_string;
	static char * dialog_name;
	
	static char * indicated_file;
	static char * full_path;
	static char * this_dir;
	static const char * valid_drives;
	
	static int number_files;
	static int number_drives;
	static int number_directories;
	static int max_filename_length;
	static char ** filenames;
	static char ** drivenames;
	static int selected_drive;
	static int lit;
	static int hscroll_pos;

public:
	FileDialog(char * name, char * search, char * dir);
	~FileDialog();

	char * Execute();
	Shutdown();

	//////////////////////
	// helpers & callbacks
	//////////////////////

	static bool InitializeFileDialog(void * instance);
	static bool ReceivedFileFromDialog(void * instance);
	static int __cdecl SortString( const void* arg1, const void *arg2 );

	static char * GetDirectory();
	static bool FileDialog::ChangeDrive(void * instance);
};
