// Copyright (C) 2003-2008 Dolphin Project.

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License 2.0 for more details.

// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/

// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/

#ifndef __PLUGIN_OPTIONS_h__
#define __PLUGIN_OPTIONS_h__

#include <wx/gbsizer.h>

#undef PLUGIN_OPTIONS_STYLE
#define PLUGIN_OPTIONS_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxMINIMIZE_BOX | wxCLOSE_BOX

class CPluginOptions
	: public wxDialog
{
	private:

		DECLARE_EVENT_TABLE();

	public:

		CPluginOptions(wxWindow* parent, wxWindowID id = 1, const wxString& title = wxT("Plugin Selection"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = PLUGIN_OPTIONS_STYLE);
		virtual ~CPluginOptions();
		void OKClick(wxCommandEvent& event);
		void OnSelectionChanged(wxCommandEvent& event);
		void OnAbout(wxCommandEvent& event);
		void OnConfig(wxCommandEvent& event);


	private:

		//Do not add custom control declarations between
		//GUI Control Declaration Start and GUI Control Declaration End.
		//wxDev-C++ will remove them. Add custom code after the block.
		////GUI Control Declaration Start
		wxButton* OK;
		wxButton* Cancel;
		wxButton* Apply;
		wxStaticText* PADText;
		wxButton* PADAbout;
		wxButton* PADConfig;
		wxChoice* PADSelection;
		wxButton* DSPAbout;
		wxButton* DSPConfig;
		wxStaticText* DSPText;
		wxChoice* DSPSelection;
		wxButton* GraphicAbout;
		wxButton* GraphicConfig;
		wxStaticText* GraphicText;
		wxChoice* GraphicSelection;
		wxButton* WiimoteAbout;
		wxButton* WiimoteConfig;
		wxStaticText* WiimoteText;
		wxChoice* WiimoteSelection;
		////GUI Control Declaration End

	private:

		//Note: if you receive any error with these enum IDs, then you need to
		//change your old form code that are based on the #define control IDs.
		//#defines may replace a numeric value for the enum names.
		//Try copy and pasting the below block in your old form header files.
		enum
		{
			////GUI Enum Control ID Start
			ID_WIIMOTE_ABOUT  = 1038,
			ID_WIIMOTE_CONFIG = 1037,
			ID_WIIMOTE_TEXT = 1036,
			ID_WIIMOTE_CB = 1035,
			ID_CANCEL = 1034,
			ID_APPLY = 1033,
			ID_OK = 1032,
			ID_PAD_TEXT = 1031,
			ID_PAD_ABOUT  = 1030,
			ID_PAD_CONFIG = 1029,
			ID_PAD_CB = 1028,
			ID_DSP_ABOUT  = 1027,
			ID_DSP_CONFIG = 1026,
			ID_DSP_TEXT = 1025,
			ID_DSP_CB = 1024,
			ID_GRAPHIC_ABOUT  = 1007,
			ID_GRAPHIC_CONFIG = 1006,
			ID_GRAPHIC_TEXT = 1005,
			ID_GRAPHIC_CB = 1003,
			////GUI Enum Control ID End
			ID_DUMMY_VALUE_ //don't remove this value unless you have other enum values
		};

	private:

		void OnClose(wxCloseEvent& event);
		void CreateGUIControls();

		void FillChoiceBox(wxChoice* _pChoice, int _PluginType, const std::string& _SelectFilename);

		void CallConfig(wxChoice* _pChoice);
		void CallAbout(wxChoice* _pChoice);

		void DoApply();

		bool GetFilename(wxChoice* _pChoice, std::string& _rFilename);
};

#endif