VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/Cmdline.c
blob: f34b3bfb8290a15e78241c3825b52af2c69d0650 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/*
 Legal Notice: Some portions of the source code contained in this file were
 derived from the source code of TrueCrypt 7.1a, which is
 Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
 governed by the TrueCrypt License 3.0, also from the source code of
 Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
 and which is governed by the 'License Agreement for Encryption for the Masses'
 Modifications and additions to the original source code (contained in this file)
 and all other portions of this file are Copyright (c) 2013-2017 IDRIX
 and are governed by the Apache License 2.0 the full text of which is
 contained in the file License.txt included in VeraCrypt binary and source
 code distribution packages. */

#include "Tcdefs.h"

#include <malloc.h>
#include <ctype.h>
#include "Cmdline.h"

#include "Resource.h"
#include "Crypto.h"
#include "Apidrvr.h"
#include "Dlgcode.h"
#include "Language.h"
#include <Strsafe.h>

#ifndef SRC_POS
#define SRC_POS (__FUNCTION__ ":" TC_TO_STRING(__LINE__))
#endif

/* Except in response to the WM_INITDIALOG message, the dialog box procedure
   should return nonzero if it processes the message, and zero if it does
   not. - see DialogProc */
BOOL CALLBACK CommandHelpDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER (lParam);		/* remove warning */
	UNREFERENCED_PARAMETER (wParam);		/* remove warning */

	switch (msg)
	{
	case WM_INITDIALOG:
		{
		wchar_t * tmp = err_malloc(8192 * sizeof (wchar_t));
		wchar_t tmp2[MAX_PATH * 2];
		argumentspec *as;
		int i;

		LocalizeDialog (hwndDlg, "IDD_COMMANDHELP_DLG");

		as = (argumentspec*) lParam;

		*tmp = 0;

		StringCchCopyW (tmp, 8192, L"VeraCrypt " _T(VERSION_STRING) _T(VERSION_STRING_SUFFIX) L"  (64-bit)");
#if (defined(_DEBUG) || defined(DEBUG))
		StringCchCatW (tmp, 8192, L"  (debug)");
#endif

		StringCchCatW (tmp, 8192, L"\n\nCommand line options:\n\n");
		for (i = 0; i < as->arg_cnt; i ++)
		{
			if (!as->args[i].Internal)
			{
				StringCchPrintfW(tmp2, MAX_PATH * 2, L"%s\t%s\n", as->args[i].short_name, as->args[i].long_name);
				StringCchCatW(tmp, 8192, tmp2);
			}
		}
#if defined(TCMOUNT) && !defined(VCEXPANDER)
		StringCchCatW (tmp, 8192, L"\nExamples:\n\nMount a volume as X:\tveracrypt.exe /q /v volume.hc /l X\nDismount a volume X:\tveracrypt.exe /q /d X");
#endif
		SetWindowTextW (GetDlgItem (hwndDlg, IDC_COMMANDHELP_TEXT), tmp);

		TCfree(tmp);
		return 1;
		}

	case WM_COMMAND:
		EndDialog (hwndDlg, IDOK);
		return 1;
	case WM_CLOSE:
		EndDialog (hwndDlg, 0);
		return 1;
	}

	return 0;
}

int Win32CommandLine (wchar_t ***lpszArgs)
{
	int argumentCount;
	int i;

	LPWSTR *arguments = CommandLineToArgvW (GetCommandLineW(), &argumentCount);
	if (!arguments)
	{
		handleWin32Error (NULL, SRC_POS);
		return 0;
	}

	--argumentCount;
	if (argumentCount < 1)
	{
		LocalFree (arguments);
		return 0;
	}

	*lpszArgs = malloc (sizeof (wchar_t *) * argumentCount);
	if (!*lpszArgs)
		AbortProcess ("OUTOFMEMORY");

	for (i = 0; i < argumentCount; ++i)
	{
		wchar_t *arg = _wcsdup (arguments[i + 1]);
		if (!arg)
			AbortProcess ("OUTOFMEMORY");

		(*lpszArgs)[i] = arg;
	}

	LocalFree (arguments);
	return argumentCount;
}

int GetArgSepPosOffset (wchar_t *lpszArgument)
{
	if (lpszArgument[0] == L'/')
		return 1;

	return 0;
}

int GetArgumentID (argumentspec *as, wchar_t *lpszArgument)
{
	int i;

	for (i = 0; i < as->arg_cnt; i++)
	{
		if (_wcsicmp (as->args[i].long_name, lpszArgument) == 0)
		{
			return as->args[i].Id;
		}
	}

	for (i = 0; i < as->arg_cnt; i++)
	{
		if (as->args[i].short_name[0] == 0)
			continue;

		if (_wcsicmp (as->args[i].short_name, lpszArgument) == 0)
		{
			return as->args[i].Id;
		}
	}


	return -1;
}

int GetArgumentValue (wchar_t **lpszCommandLineArgs, int *nArgIdx,
		  int nNoCommandLineArgs, wchar_t *lpszValue, int nValueSize)
{
	*lpszValue = 0;

	if (*nArgIdx + 1 < nNoCommandLineArgs)
	{
		int x = GetArgSepPosOffset (lpszCommandLineArgs[*nArgIdx + 1]);
		if (x == 0)
		{
			/* Handles the case of space between parameter code
			   and value */
			StringCchCopyW (lpszValue, nValueSize, lpszCommandLineArgs[*nArgIdx + 1]);
			lpszValue[nValueSize - 1] = 0;
			(*nArgIdx)++;
			return HAS_ARGUMENT;
		}
	}

	return HAS_NO_ARGUMENT;
}
928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////

#pragma once

#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
#include "WizardPage.h"
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/menu.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/listctrl.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/button.h>
#include <wx/statbmp.h>
#include <wx/combobox.h>
#include <wx/checkbox.h>
#include <wx/gbsizer.h>
#include <wx/panel.h>
#include <wx/frame.h>
#include <wx/stattext.h>
#include <wx/hyperlink.h>
#include <wx/statline.h>
#include <wx/textctrl.h>
#include <wx/dialog.h>
#include <wx/choice.h>
#include <wx/gauge.h>
#include <wx/spinctrl.h>
#include <wx/notebook.h>

#include "international.h"

///////////////////////////////////////////////////////////////////////////

namespace VeraCrypt
{
	///////////////////////////////////////////////////////////////////////////////
	/// Class MainFrameBase
	///////////////////////////////////////////////////////////////////////////////
	class MainFrameBase : public wxFrame
	{
		private:

		protected:
			wxMenuBar* MainMenuBar;
			wxMenu* VolumesMenu;
			wxMenuItem* MountVolumeMenuItem;
			wxMenuItem* DismountVolumeMenuItem;
			wxMenuItem* DismountAllMenuItem;
			wxMenuItem* VolumePropertiesMenuItem;
			wxMenu* FavoritesMenu;
			wxMenuItem* AddToFavoritesMenuItem;
			wxMenuItem* AddAllMountedToFavoritesMenuItem;
			wxMenu* ToolsMenu;
			wxMenuItem* BackupVolumeHeadersMenuItem;
			wxMenuItem* RestoreVolumeHeaderMenuItem;
			wxMenuItem* WipeCachedPasswordsMenuItem;
			wxMenu* SettingsMenu;
			wxMenuItem* HotkeysMenuItem;
			wxMenuItem* PreferencesMenuItem;
			wxMenu* HelpMenu;
			wxPanel* MainPanel;
			wxListCtrl* SlotListCtrl;
			wxStaticBoxSizer* LowStaticBoxSizer;
			wxBoxSizer* HigherButtonSizer;
			wxButton* CreateVolumeButton;
			wxButton* VolumePropertiesButton;
			wxButton* WipeCacheButton;
			wxStaticBoxSizer* VolumeStaticBoxSizer;
			wxGridBagSizer* VolumeGridBagSizer;
			wxStaticBitmap* LogoBitmap;
			wxComboBox* VolumePathComboBox;
			wxButton* SelectFileButton;
			wxCheckBox* NoHistoryCheckBox;
			wxButton* VolumeToolsButton;
			wxButton* SelectDeviceButton;
			wxButton* VolumeButton;
			wxButton* MountAllDevicesButton;
			wxButton* DismountAllButton;
			wxButton* ExitButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnActivate( wxActivateEvent& event ) { event.Skip(); }
			virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
			virtual void OnCreateVolumeButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnMountVolumeMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnMountAllDevicesButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDismountVolumeMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDismountAllButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnChangePasswordMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnChangePkcs5PrfMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnChangeKeyfilesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveKeyfilesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnVolumePropertiesButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAddToFavoritesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAddAllMountedToFavoritesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOrganizeFavoritesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnMountAllFavoritesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBenchmarkMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnEncryptionTestMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBackupVolumeHeadersMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRestoreVolumeHeaderMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnCreateKeyfileMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnManageSecurityTokenKeyfilesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnCloseAllSecurityTokenSessionsMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnWipeCacheButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnHotkeysMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDefaultKeyfilesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDefaultMountParametersMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnSecurityTokenPreferencesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnPreferencesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnUserGuideMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOnlineHelpMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBeginnersTutorialMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnFaqMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnWebsiteMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDownloadsMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNewsMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnVersionHistoryMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDonateMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnContactMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnLegalNoticesMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAboutMenuItemSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnListItemActivated( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemRightClick( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnLogoBitmapClick( wxMouseEvent& event ) { event.Skip(); }
			virtual void OnSelectFileButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNoHistoryCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnVolumeToolsButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnSelectDeviceButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnVolumeButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnExitButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			MainFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxTAB_TRAVERSAL );

			~MainFrameBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class WizardFrameBase
	///////////////////////////////////////////////////////////////////////////////
	class WizardFrameBase : public wxFrame
	{
		private:

		protected:
			wxBoxSizer* MainSizer;
			wxPanel* MainPanel;
			wxStaticBitmap* WizardBitmap;
			wxStaticText* PageTitleStaticText;
			wxBoxSizer* PageSizer;
			wxButton* HelpButton;
			wxButton* PreviousButton;
			wxButton* NextButton;
			wxButton* CancelButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnActivate( wxActivateEvent& event ) { event.Skip(); }
			virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
			virtual void OnMouseMotion( wxMouseEvent& event ) { event.Skip(); }
			virtual void OnHelpButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnPreviousButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNextButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			WizardFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxTAB_TRAVERSAL );

			~WizardFrameBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class AboutDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class AboutDialogBase : public wxDialog
	{
		private:

		protected:
			wxPanel* m_panel14;
			wxStaticBitmap* LogoBitmap;
			wxStaticText* VersionStaticText;
			wxStaticText* CopyrightStaticText;
			wxHyperlinkCtrl* WebsiteHyperlink;
			wxStaticLine* m_staticline3;
			wxTextCtrl* CreditsTextCtrl;
			wxStaticLine* m_staticline4;
			wxStaticLine* m_staticline5;

			// Virtual event handlers, override them in your derived class
			virtual void OnWebsiteHyperlinkClick( wxHyperlinkEvent& event ) { event.Skip(); }


		public:

			AboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~AboutDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class BenchmarkDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class BenchmarkDialogBase : public wxDialog
	{
		private:

		protected:
			wxStaticText* m_staticText70;
			wxChoice* BenchmarkChoice;
			wxStaticText* m_bufferSizeLabel;
			wxChoice* BufferSizeChoice;
			wxStaticText* m_volumePimLabel;
			wxTextCtrl* VolumePimText;
			wxListCtrl* BenchmarkListCtrl;
			wxBoxSizer* RightSizer;
			wxButton* BenchmarkButton;
			wxStaticText* BenchmarkNoteStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnBenchmarkChoiceSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBenchmarkButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			BenchmarkDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_BENCHMARK_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~BenchmarkDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class ChangePasswordDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class ChangePasswordDialogBase : public wxDialog
	{
		private:

		protected:
			wxStaticBoxSizer* CurrentSizer;
			wxBoxSizer* CurrentPasswordPanelSizer;
			wxStaticBoxSizer* NewSizer;
			wxBoxSizer* NewPasswordPanelSizer;
			wxButton* OKButton;
			wxButton* CancelButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			ChangePasswordDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~ChangePasswordDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class DeviceSelectionDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class DeviceSelectionDialogBase : public wxDialog
	{
		private:

		protected:
			wxListCtrl* DeviceListCtrl;
			wxButton* CancelButton;
			wxButton* OKButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnListItemActivated( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			DeviceSelectionDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_RAWDEVICES_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~DeviceSelectionDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class EncryptionTestDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class EncryptionTestDialogBase : public wxDialog
	{
		private:

		protected:
			wxChoice* EncryptionAlgorithmChoice;
			wxCheckBox* XtsModeCheckBox;
			wxTextCtrl* KeyTextCtrl;
			wxStaticText* KeySizeStaticText;
			wxTextCtrl* SecondaryKeyTextCtrl;
			wxTextCtrl* DataUnitNumberTextCtrl;
			wxTextCtrl* BlockNumberTextCtrl;
			wxTextCtrl* PlainTextTextCtrl;
			wxTextCtrl* CipherTextTextCtrl;
			wxButton* EncryptButton;
			wxButton* DecryptButton;
			wxButton* AutoTestAllButton;
			wxButton* ResetButton;
			wxButton* CloseButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnEncryptionAlgorithmSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnXtsModeCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnEncryptButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDecryptButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAutoTestAllButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnResetButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			EncryptionTestDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_CIPHER_TEST_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~EncryptionTestDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class FavoriteVolumesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class FavoriteVolumesDialogBase : public wxDialog
	{
		private:

		protected:
			wxListCtrl* FavoritesListCtrl;
			wxButton* MoveUpButton;
			wxButton* MoveDownButton;
			wxButton* RemoveButton;
			wxButton* RemoveAllButton;
			wxButton* OKButton;
			wxButton* CancelButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnMoveUpButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnMoveDownButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveAllButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			FavoriteVolumesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_FAVORITE_VOLUMES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~FavoriteVolumesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class KeyfilesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class KeyfilesDialogBase : public wxDialog
	{
		private:

		protected:
			wxBoxSizer* UpperSizer;
			wxBoxSizer* PanelSizer;
			wxButton* OKButton;
			wxButton* CancelButton;
			wxStaticText* WarningStaticText;
			wxBoxSizer* KeyfilesNoteSizer;
			wxStaticText* KeyfilesNoteStaticText;
			wxHyperlinkCtrl* KeyfilesHyperlink;
			wxButton* CreateKeyfileButtton;

			// Virtual event handlers, override them in your derived class
			virtual void OnKeyfilesHyperlinkClick( wxHyperlinkEvent& event ) { event.Skip(); }
			virtual void OnCreateKeyfileButttonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			KeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SELECT_TOKEN_KEYFILES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~KeyfilesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class KeyfileGeneratorDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class KeyfileGeneratorDialogBase : public wxDialog
	{
		private:

		protected:
			wxBoxSizer* MainSizer;
			wxChoice* HashChoice;
			wxStaticText* RandomPoolStaticText;
			wxCheckBox* ShowRandomPoolCheckBox;
			wxGauge* CollectedEntropy;
			wxStaticText* MouseStaticText;
			wxStaticText* m_staticText60;
			wxSpinCtrl* NumberOfKeyfiles;
			wxPanel* m_panel18;
			wxStaticText* m_staticText63;
			wxSpinCtrl* KeyfilesSize;
			wxCheckBox* RandomSizeCheckBox;
			wxStaticText* m_staticText65;
			wxTextCtrl* KeyfilesBaseName;
			wxPanel* m_panel19;
			wxButton* GenerateButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnMouseMotion( wxMouseEvent& event ) { event.Skip(); }
			virtual void OnHashSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnShowRandomPoolCheckBoxClicked( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRandomSizeCheckBoxClicked( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnGenerateButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			KeyfileGeneratorDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~KeyfileGeneratorDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class LegalNoticesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class LegalNoticesDialogBase : public wxDialog
	{
		private:

		protected:
			wxTextCtrl* LegalNoticesTextCtrl;

		public:

			LegalNoticesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("LEGAL_NOTICES_DLG_TITLE"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~LegalNoticesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class MountOptionsDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class MountOptionsDialogBase : public wxDialog
	{
		private:

		protected:
			wxBoxSizer* MainSizer;
			wxBoxSizer* PasswordSizer;
			wxButton* OKButton;
			wxButton* CancelButton;
			wxButton* OptionsButton;
			wxPanel* OptionsPanel;
			wxStaticBoxSizer* OptionsSizer;
			wxCheckBox* ReadOnlyCheckBox;
			wxCheckBox* RemovableCheckBox;
			wxCheckBox* BackupHeaderCheckBox;
			wxCheckBox* PartitionInSystemEncryptionScopeCheckBox;
			wxStaticBoxSizer* ProtectionSizer;
			wxCheckBox* ProtectionCheckBox;
			wxBoxSizer* ProtectionPasswordSizer;
			wxHyperlinkCtrl* ProtectionHyperlinkCtrl;
			wxBoxSizer* FilesystemSizer;
			wxPanel* m_panel8;
			wxCheckBox* NoFilesystemCheckBox;
			wxGridBagSizer* FilesystemOptionsSizer;
			wxBoxSizer* FilesystemSpacer;
			wxStaticText* MountPointTextCtrlStaticText;
			wxTextCtrl* MountPointTextCtrl;
			wxButton* MountPointButton;
			wxStaticText* FilesystemOptionsStaticText;
			wxTextCtrl* FilesystemOptionsTextCtrl;

			// Virtual event handlers, override them in your derived class
			virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOptionsButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnReadOnlyCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnProtectionCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnProtectionHyperlinkClick( wxHyperlinkEvent& event ) { event.Skip(); }
			virtual void OnNoFilesystemCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnMountPointButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			MountOptionsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_PASSWORD_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~MountOptionsDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class NewSecurityTokenKeyfileDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class NewSecurityTokenKeyfileDialogBase : public wxDialog
	{
		private:

		protected:
			wxChoice* SecurityTokenChoice;
			wxTextCtrl* KeyfileNameTextCtrl;
			wxButton* CancelButton;
			wxButton* OKButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnKeyfileNameChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			NewSecurityTokenKeyfileDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_TOKEN_PREFERENCES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~NewSecurityTokenKeyfileDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class PreferencesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class PreferencesDialogBase : public wxDialog
	{
		private:

		protected:
			wxBoxSizer* bSizer32;
			wxNotebook* PreferencesNotebook;
			wxPanel* SecurityPage;
			wxStaticBoxSizer* AutoDismountSizer;
			wxCheckBox* DismountOnLogOffCheckBox;
			wxCheckBox* DismountOnScreenSaverCheckBox;
			wxCheckBox* DismountOnPowerSavingCheckBox;
			wxCheckBox* DismountOnInactivityCheckBox;
			wxSpinCtrl* DismountOnInactivitySpinCtrl;
			wxCheckBox* ForceAutoDismountCheckBox;
			wxStaticBoxSizer* FilesystemSecuritySizer;
			wxCheckBox* PreserveTimestampsCheckBox;
			wxCheckBox* WipeCacheOnCloseCheckBox;
			wxCheckBox* WipeCacheOnAutoDismountCheckBox;
			wxCheckBox* MountReadOnlyCheckBox;
			wxCheckBox* MountRemovableCheckBox;
			wxCheckBox* CachePasswordsCheckBox;
			wxStaticText* Pkcs5PrfStaticText;
			wxChoice* Pkcs5PrfChoice;
			wxStaticBoxSizer* FilesystemSizer;
			wxTextCtrl* FilesystemOptionsTextCtrl;
			wxPanel* BackgroundTaskPanel;
			wxCheckBox* BackgroundTaskEnabledCheckBox;
			wxCheckBox* CloseBackgroundTaskOnNoVolumesCheckBox;
			wxCheckBox* BackgroundTaskMenuMountItemsEnabledCheckBox;
			wxCheckBox* BackgroundTaskMenuOpenItemsEnabledCheckBox;
			wxCheckBox* BackgroundTaskMenuDismountItemsEnabledCheckBox;
			wxPanel* SystemIntegrationPage;
			wxStaticBoxSizer* LogOnSizer;
			wxCheckBox* StartOnLogonCheckBox;
			wxCheckBox* MountFavoritesOnLogonCheckBox;
			wxCheckBox* MountDevicesOnLogonCheckBox;
			wxStaticBoxSizer* ExplorerSizer;
			wxCheckBox* OpenExplorerWindowAfterMountCheckBox;
			wxCheckBox* CloseExplorerWindowsOnDismountCheckBox;
			wxStaticBoxSizer* KernelServicesSizer;
			wxCheckBox* NoKernelCryptoCheckBox;
			wxPanel* PerformanceOptionsPage;
			wxStaticText* AesHwCpuSupportedStaticText;
			wxCheckBox* NoHardwareCryptoCheckBox;
			wxBoxSizer* DefaultKeyfilesSizer;
			wxCheckBox* UseKeyfilesCheckBox;
			wxTextCtrl* Pkcs11ModulePathTextCtrl;
			wxButton* SelectPkcs11ModuleButton;
			wxCheckBox* CloseSecurityTokenSessionsAfterMountCheckBox;
			wxCheckBox* EMVSupportEnabledCheckBox;
			wxListCtrl* HotkeyListCtrl;
			wxTextCtrl* HotkeyTextCtrl;
			wxButton* AssignHotkeyButton;
			wxCheckBox* HotkeyControlCheckBox;
			wxCheckBox* HotkeyShiftCheckBox;
			wxCheckBox* HotkeyAltCheckBox;
			wxCheckBox* HotkeyWinCheckBox;
			wxButton* RemoveHotkeyButton;
			wxCheckBox* BeepAfterHotkeyMountDismountCheckBox;
			wxCheckBox* DisplayMessageAfterHotkeyDismountCheckBox;
			wxButton* OKButton;
			wxButton* CancelButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
			virtual void OnDismountOnScreenSaverCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDismountOnPowerSavingCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnForceAutoDismountCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnPreserveTimestampsCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBackgroundTaskEnabledCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNoKernelCryptoCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNoHardwareCryptoCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnSelectPkcs11ModuleButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnHotkeyListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnHotkeyListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnAssignHotkeyButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveHotkeyButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:
			wxPanel* DefaultMountOptionsPage;
			wxPanel* DefaultKeyfilesPage;
			wxPanel* SecurityTokensPage;
			wxPanel* HotkeysPage;

			PreferencesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_PREFERENCES_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~PreferencesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class RandomPoolEnrichmentDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class RandomPoolEnrichmentDialogBase : public wxDialog
	{
		private:

		protected:
			wxBoxSizer* MainSizer;
			wxChoice* HashChoice;
			wxStaticText* RandomPoolStaticText;
			wxCheckBox* ShowRandomPoolCheckBox;
			wxGauge* CollectedEntropy;
			wxStaticText* MouseStaticText;
			wxButton* ContinueButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnMouseMotion( wxMouseEvent& event ) { event.Skip(); }
			virtual void OnHashSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnShowRandomPoolCheckBoxClicked( wxCommandEvent& event ) { event.Skip(); }


		public:

			RandomPoolEnrichmentDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_RANDOM_POOL_ENRICHMENT"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );

			~RandomPoolEnrichmentDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class SecurityTokenKeyfilesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class SecurityTokenKeyfilesDialogBase : public wxDialog
	{
		private:

		protected:
			wxListCtrl* SecurityTokenKeyfileListCtrl;
			wxButton* ExportButton;
			wxButton* DeleteButton;
			wxButton* ImportButton;
			wxButton* OKButton;
			wxButton* CancelButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnListItemActivated( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnExportButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDeleteButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnImportButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			SecurityTokenKeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_KEYFILES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~SecurityTokenKeyfilesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumePropertiesDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumePropertiesDialogBase : public wxDialog
	{
		private:

		protected:
			wxListCtrl* PropertiesListCtrl;
			wxButton* OKButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumePropertiesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_VOLUME_PROPERTIES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );

			~VolumePropertiesDialogBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class EncryptionOptionsWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class EncryptionOptionsWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxChoice* EncryptionAlgorithmChoice;
			wxButton* TestButton;
			wxStaticText* EncryptionAlgorithmStaticText;
			wxHyperlinkCtrl* EncryptionAlgorithmHyperlink;
			wxButton* BenchmarkButton;
			wxChoice* HashChoice;
			wxHyperlinkCtrl* HashHyperlink;

			// Virtual event handlers, override them in your derived class
			virtual void OnEncryptionAlgorithmSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnTestButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnEncryptionAlgorithmHyperlinkClick( wxHyperlinkEvent& event ) { event.Skip(); }
			virtual void OnBenchmarkButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnHashHyperlinkClick( wxHyperlinkEvent& event ) { event.Skip(); }


		public:

			EncryptionOptionsWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~EncryptionOptionsWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class InfoWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class InfoWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* InfoPageSizer;
			wxStaticText* InfoStaticText;

		public:

			InfoWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~InfoWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class KeyfilesPanelBase
	///////////////////////////////////////////////////////////////////////////////
	class KeyfilesPanelBase : public wxPanel
	{
		private:

		protected:
			wxListCtrl* KeyfilesListCtrl;
			wxButton* AddFilesButton;
			wxButton* AddDirectoryButton;
			wxButton* AddSecurityTokenSignatureButton;
			wxButton* RemoveButton;
			wxButton* RemoveAllButton;

			// Virtual event handlers, override them in your derived class
			virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
			virtual void OnListSizeChanged( wxSizeEvent& event ) { event.Skip(); }
			virtual void OnAddFilesButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAddDirectoryButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAddSecurityTokenSignatureButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnRemoveAllButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			KeyfilesPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~KeyfilesPanelBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class ProgressWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class ProgressWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* ProgressSizer;
			wxGauge* ProgressGauge;
			wxButton* AbortButton;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnAbortButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			ProgressWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~ProgressWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class SelectDirectoryWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class SelectDirectoryWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxTextCtrl* DirectoryTextCtrl;
			wxButton* BrowseButton;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnDirectoryTextChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnBrowseButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			SelectDirectoryWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~SelectDirectoryWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class SingleChoiceWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class SingleChoiceWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* OuterChoicesSizer;
			wxBoxSizer* ChoicesSizer;
			wxStaticText* InfoStaticText;

		public:

			SingleChoiceWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~SingleChoiceWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumeCreationProgressWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumeCreationProgressWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* KeySamplesUpperSizer;
			wxBoxSizer* KeySamplesUpperInnerSizer;
			wxStaticText* RandomPoolSampleStaticText;
			wxCheckBox* DisplayKeysCheckBox;
			wxStaticText* HeaderKeySampleStaticText;
			wxStaticText* MasterKeySampleStaticText;
			wxGauge* CollectedEntropy;
			wxGauge* ProgressGauge;
			wxButton* AbortButton;
			wxStaticText* m_staticText31;
			wxPanel* m_panel12;
			wxStaticText* SizeDoneStaticText;
			wxStaticText* m_staticText311;
			wxPanel* m_panel121;
			wxStaticText* SpeedStaticText;
			wxStaticText* m_staticText312;
			wxPanel* m_panel122;
			wxStaticText* TimeLeftStaticText;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnDisplayKeysCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnAbortButtonClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumeCreationProgressWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumeCreationProgressWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumeLocationWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumeLocationWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxComboBox* VolumePathComboBox;
			wxButton* SelectFileButton;
			wxButton* SelectDeviceButton;
			wxCheckBox* NoHistoryCheckBox;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnVolumePathTextChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnSelectFileButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnSelectDeviceButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnNoHistoryCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumeLocationWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumeLocationWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumeFormatOptionsWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumeFormatOptionsWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxStaticText* m_staticText43;
			wxChoice* FilesystemTypeChoice;
			wxCheckBox* QuickFormatCheckBox;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnFilesystemTypeSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnQuickFormatCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumeFormatOptionsWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumeFormatOptionsWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumePasswordPanelBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumePasswordPanelBase : public wxPanel
	{
		private:

		protected:
			wxGridBagSizer* GridBagSizer;
			wxStaticText* PasswordStaticText;
			wxTextCtrl* PasswordTextCtrl;
			wxStaticText* ConfirmPasswordStaticText;
			wxTextCtrl* ConfirmPasswordTextCtrl;
			wxStaticText* VolumePimStaticText;
			wxTextCtrl* VolumePimTextCtrl;
			wxStaticText* VolumePimHelpStaticText;
			wxCheckBox* PimCheckBox;
			wxCheckBox* CacheCheckBox;
			wxCheckBox* DisplayPasswordCheckBox;
			wxCheckBox* UseKeyfilesCheckBox;
			wxButton* KeyfilesButton;
			wxBoxSizer* Pkcs5PrfSizer;
			wxStaticText* Pkcs5PrfStaticText;
			wxChoice* Pkcs5PrfChoice;
			wxStaticText* HeaderWipeCountText;
			wxChoice* HeaderWipeCount;
			wxBoxSizer* PasswordPlaceholderSizer;

			// Virtual event handlers, override them in your derived class
			virtual void OnTextChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnPimChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnUsePimCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDisplayPasswordCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnUseKeyfilesCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnKeyfilesButtonClick( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnKeyfilesButtonRightDown( wxMouseEvent& event ) { event.Skip(); }
			virtual void OnKeyfilesButtonRightClick( wxMouseEvent& event ) { event.Skip(); }


		public:

			VolumePasswordPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumePasswordPanelBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumePasswordWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumePasswordWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* PasswordPanelSizer;
			wxStaticText* InfoStaticText;

		public:

			VolumePasswordWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumePasswordWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumePimWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumePimWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxBoxSizer* PimPanelSizer;
			wxBoxSizer* PimSizer;
			wxStaticText* VolumePimStaticText;
			wxTextCtrl* VolumePimTextCtrl;
			wxStaticText* VolumePimHelpStaticText;
			wxCheckBox* DisplayPimCheckBox;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnPimChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnDisplayPimCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumePimWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumePimWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class VolumeSizeWizardPageBase
	///////////////////////////////////////////////////////////////////////////////
	class VolumeSizeWizardPageBase : public WizardPage
	{
		private:

		protected:
			wxTextCtrl* VolumeSizeTextCtrl;
			wxChoice* VolumeSizePrefixChoice;
			wxCheckBox* UseAllFreeSpaceCheckBox;
			wxStaticText* FreeSpaceStaticText;
			wxStaticText* InfoStaticText;

			// Virtual event handlers, override them in your derived class
			virtual void OnVolumeSizeTextChanged( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnVolumeSizePrefixSelected( wxCommandEvent& event ) { event.Skip(); }
			virtual void OnUseAllFreeSpaceCheckBoxClick( wxCommandEvent& event ) { event.Skip(); }


		public:

			VolumeSizeWizardPageBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );

			~VolumeSizeWizardPageBase();

	};

	///////////////////////////////////////////////////////////////////////////////
	/// Class WaitDialogBase
	///////////////////////////////////////////////////////////////////////////////
	class WaitDialogBase : public wxDialog
	{
		private:

		protected:
			wxStaticText* WaitStaticText;
			wxGauge* WaitProgessBar;

			// Virtual event handlers, override them in your derived class
			virtual void OnWaitDialogClose( wxCloseEvent& event ) { event.Skip(); }
			virtual void OnWaitDialogInit( wxInitDialogEvent& event ) { event.Skip(); }


		public:

			WaitDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION );

			~WaitDialogBase();

	};

} // namespace VeraCrypt