diff --git a/lib/TTLS_UI/include/TTLS_UI.h b/lib/TTLS_UI/include/TTLS_UI.h
index ff90788..e898963 100644
--- a/lib/TTLS_UI/include/TTLS_UI.h
+++ b/lib/TTLS_UI/include/TTLS_UI.h
@@ -1,30 +1,28 @@
/*
Copyright 2015-2020 Amebis
- Copyright 2016 GÉANT
+ Copyright 2016 GÉANT
- This file is part of GÉANTLink.
+ This file is part of GÉANTLink.
- GÉANTLink is free software: you can redistribute it and/or modify it
+ GÉANTLink 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, either version 3 of the License, or
(at your option) any later version.
- GÉANTLink is distributed in the hope that it will be useful, but
+ GÉANTLink 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 for more details.
You should have received a copy of the GNU General Public License
- along with GÉANTLink. If not, see .
+ along with GÉANTLink. If not, see .
*/
-class wxTTLSConfigPanel;
+class wxTLSTunnelConfigWindow;
class wxTTLSConfigWindow;
#pragma once
-#include "../res/wxTTLS_UI.h"
-
#include "../../TLS_UI/include/TLS_UI.h"
#include "../../TTLS/include/Config.h"
@@ -46,33 +44,45 @@ class wxTTLSConfigWindow;
/// @{
///
-/// TTLS configuration panel
+/// TLS tunnel configuration scrollable window
///
-class wxTTLSConfigPanel : public wxTTLSConfigPanelBase
+class wxTLSTunnelConfigWindow : public wxEAPConfigWindow
{
public:
///
- /// Constructs a configuration panel
+ /// Constructs a configuration window
///
- wxTTLSConfigPanel(const eap::config_provider &prov, eap::config_method_tls_tunnel &cfg, wxWindow* parent);
+ /// \param[in] prov Provider configuration data
+ /// \param[inout] cfg Method configuration data
+ /// \param[in] parent Parent window
+ ///
+ wxTLSTunnelConfigWindow(eap::config_provider &prov, eap::config_method &cfg, wxWindow* parent);
+
+ ///
+ /// Destructs the configuration window
+ ///
+ virtual ~wxTLSTunnelConfigWindow();
protected:
/// \cond internal
virtual bool TransferDataToWindow();
- virtual bool TransferDataFromWindow();
+ virtual void OnInitDialog(wxInitDialogEvent& event);
virtual void OnUpdateUI(wxUpdateUIEvent& event);
/// \endcond
protected:
- const eap::config_provider &m_prov; ///< EAP provider
- eap::config_method_tls_tunnel &m_cfg; ///< TLS tunnel configuration
+ wxStaticText *m_outer_title; ///< Outer authentication title
+ wxEAPIdentityConfigPanel *m_outer_identity; ///< Outer identity configuration panel
+ wxPanel *m_tls; ///< TLS configuration panel
+ wxStaticText *m_inner_title; ///< Inner authentication title
+ wxChoicebook *m_inner_type; ///< Inner authentication type
};
///
/// TTLS configuration scrollable window
///
-class wxTTLSConfigWindow : public wxEAPConfigWindow
+class wxTTLSConfigWindow : public wxTLSTunnelConfigWindow
{
public:
///
@@ -84,26 +94,13 @@ public:
///
wxTTLSConfigWindow(eap::config_provider &prov, eap::config_method &cfg, wxWindow* parent);
- ///
- /// Destructs the configuration window
- ///
- virtual ~wxTTLSConfigWindow();
-
protected:
/// \cond internal
virtual bool TransferDataToWindow();
virtual bool TransferDataFromWindow();
- virtual void OnInitDialog(wxInitDialogEvent& event);
- virtual void OnUpdateUI(wxUpdateUIEvent& event);
/// \endcond
protected:
- wxStaticText *m_outer_title; ///< Outer authentication title
- wxTTLSConfigPanel *m_outer_identity; ///< Outer identity configuration panel
- wxTLSConfigPanel *m_tls; ///< TLS configuration panel
- wxStaticText *m_inner_title; ///< Inner authentication title
- wxChoicebook *m_inner_type; ///< Inner authentication type
-
// Temporary inner method configurations to hold data until applied
eap::config_method_pap m_cfg_pap; ///< PAP configuration
eap::config_method_mschapv2 m_cfg_mschapv2; ///< MSCHAPv2 configuration
diff --git a/lib/TTLS_UI/src/TTLS_UI.cpp b/lib/TTLS_UI/src/TTLS_UI.cpp
index cbf0c57..2dbc0f1 100644
--- a/lib/TTLS_UI/src/TTLS_UI.cpp
+++ b/lib/TTLS_UI/src/TTLS_UI.cpp
@@ -22,17 +22,10 @@
//////////////////////////////////////////////////////////////////////
-// wxTTLSConfigWindow
+// wxTLSTunnelConfigWindow
//////////////////////////////////////////////////////////////////////
-wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_method &cfg, wxWindow* parent) :
- m_cfg_pap (cfg.m_module, cfg.m_level + 1),
- m_cfg_mschapv2 (cfg.m_module, cfg.m_level + 1),
- m_cfg_eapmschapv2(cfg.m_module, cfg.m_level + 1),
- m_cfg_eapgtc (cfg.m_module, cfg.m_level + 1),
-#if EAP_INNER_EAPHOST
- m_cfg_eaphost (cfg.m_module, cfg.m_level + 1),
-#endif
+wxTLSTunnelConfigWindow::wxTLSTunnelConfigWindow(eap::config_provider &prov, eap::config_method &cfg, wxWindow* parent) :
wxEAPConfigWindow(prov, cfg, parent)
{
wxBoxSizer* sb_content;
@@ -48,18 +41,6 @@ wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_m
m_inner_type = new wxChoicebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxCHB_DEFAULT);
m_inner_type->SetToolTip( _("Select inner authentication method from the list") );
- wxPAPConfigPanel *panel_pap = new wxPAPConfigPanel(m_prov, m_cfg_pap, m_inner_type);
- m_inner_type->AddPage(panel_pap, _("PAP"));
- wxMSCHAPv2ConfigPanel *panel_mschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_mschapv2, m_inner_type);
- m_inner_type->AddPage(panel_mschapv2, _("MSCHAPv2"));
- wxMSCHAPv2ConfigPanel *panel_eapmschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_eapmschapv2, m_inner_type);
- m_inner_type->AddPage(panel_eapmschapv2, _("EAP-MSCHAPv2"));
- wxGTCConfigPanel *panel_eapgtc = new wxGTCConfigPanel(m_prov, m_cfg_eapgtc, m_inner_type);
- m_inner_type->AddPage(panel_eapgtc, _("EAP-GTC"));
-#if EAP_INNER_EAPHOST
- wxEapHostConfigPanel *panel_eaphost = new wxEapHostConfigPanel(m_prov, m_cfg_eaphost, m_inner_type);
- m_inner_type->AddPage(panel_eaphost, _("Other EAP methods..."));
-#endif
sb_content->Add(m_inner_type, 0, wxALL|wxEXPAND, FromDIP(5));
sb_content->Add(FromDIP(20), FromDIP(20), 1, wxALL|wxEXPAND, FromDIP(5));
@@ -86,16 +67,77 @@ wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_m
this->SetSizer(sb_content);
this->Layout();
- // m_inner_type->SetFocusFromKbd(); // This control steals mouse-wheel scrolling for itself
- panel_pap->SetFocusFromKbd();
-
- this->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(wxTTLSConfigWindow::OnUpdateUI));
+ this->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(wxTLSTunnelConfigWindow::OnUpdateUI));
}
-wxTTLSConfigWindow::~wxTTLSConfigWindow()
+wxTLSTunnelConfigWindow::~wxTLSTunnelConfigWindow()
{
- this->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(wxTTLSConfigWindow::OnUpdateUI));
+ this->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(wxTLSTunnelConfigWindow::OnUpdateUI));
+}
+
+
+/// \cond internal
+
+bool wxTLSTunnelConfigWindow::TransferDataToWindow()
+{
+ // Do not invoke inherited TransferDataToWindow(), as it will call others TransferDataToWindow().
+ // This will handle wxTLSTunnelConfigWindow::OnInitDialog() via wxEVT_INIT_DIALOG forwarding.
+ return true /*wxEAPConfigWindow::TransferDataToWindow()*/;
+}
+
+
+void wxTLSTunnelConfigWindow::OnInitDialog(wxInitDialogEvent& event)
+{
+ wxEAPConfigWindow::OnInitDialog(event);
+
+ // Forward the event to child panels.
+ m_outer_identity->GetEventHandler()->ProcessEvent(event);
+ m_tls->GetEventHandler()->ProcessEvent(event);
+ for (wxWindowList::compatibility_iterator inner = m_inner_type->GetChildren().GetFirst(); inner; inner = inner->GetNext())
+ inner->GetData()->GetEventHandler()->ProcessEvent(event);
+}
+
+
+void wxTLSTunnelConfigWindow::OnUpdateUI(wxUpdateUIEvent& event)
+{
+ m_inner_type->GetChoiceCtrl()->Enable(!m_prov.m_read_only);
+
+ event.Skip();
+}
+
+/// \endcond
+
+
+//////////////////////////////////////////////////////////////////////
+// wxTTLSConfigWindow
+//////////////////////////////////////////////////////////////////////
+
+wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_method &cfg, wxWindow* parent) :
+ m_cfg_pap (cfg.m_module, cfg.m_level + 1),
+ m_cfg_mschapv2 (cfg.m_module, cfg.m_level + 1),
+ m_cfg_eapmschapv2(cfg.m_module, cfg.m_level + 1),
+ m_cfg_eapgtc (cfg.m_module, cfg.m_level + 1),
+#if EAP_INNER_EAPHOST
+ m_cfg_eaphost (cfg.m_module, cfg.m_level + 1),
+#endif
+ wxTLSTunnelConfigWindow(prov, cfg, parent)
+{
+ wxPAPConfigPanel *panel_pap = new wxPAPConfigPanel(m_prov, m_cfg_pap, m_inner_type);
+ m_inner_type->AddPage(panel_pap, _("PAP"));
+ wxMSCHAPv2ConfigPanel *panel_mschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_mschapv2, m_inner_type);
+ m_inner_type->AddPage(panel_mschapv2, _("MSCHAPv2"));
+ wxMSCHAPv2ConfigPanel *panel_eapmschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_eapmschapv2, m_inner_type);
+ m_inner_type->AddPage(panel_eapmschapv2, _("EAP-MSCHAPv2"));
+ wxGTCConfigPanel *panel_eapgtc = new wxGTCConfigPanel(m_prov, m_cfg_eapgtc, m_inner_type);
+ m_inner_type->AddPage(panel_eapgtc, _("EAP-GTC"));
+#if EAP_INNER_EAPHOST
+ wxEapHostConfigPanel *panel_eaphost = new wxEapHostConfigPanel(m_prov, m_cfg_eaphost, m_inner_type);
+ m_inner_type->AddPage(panel_eaphost, _("Other EAP methods..."));
+#endif
+
+ // m_inner_type->SetFocusFromKbd(); // This control steals mouse-wheel scrolling for itself
+ panel_pap->SetFocusFromKbd();
}
@@ -144,7 +186,7 @@ bool wxTTLSConfigWindow::TransferDataToWindow()
bool wxTTLSConfigWindow::TransferDataFromWindow()
{
- wxCHECK(wxScrolledWindow::TransferDataFromWindow(), false);
+ wxCHECK(wxTLSTunnelConfigWindow::TransferDataFromWindow(), false);
auto &cfg_ttls = dynamic_cast(m_cfg);
@@ -181,24 +223,4 @@ bool wxTTLSConfigWindow::TransferDataFromWindow()
return true;
}
-
-void wxTTLSConfigWindow::OnInitDialog(wxInitDialogEvent& event)
-{
- wxEAPConfigWindow::OnInitDialog(event);
-
- // Forward the event to child panels.
- m_outer_identity->GetEventHandler()->ProcessEvent(event);
- m_tls->GetEventHandler()->ProcessEvent(event);
- for (wxWindowList::compatibility_iterator inner = m_inner_type->GetChildren().GetFirst(); inner; inner = inner->GetNext())
- inner->GetData()->GetEventHandler()->ProcessEvent(event);
-}
-
-
-void wxTTLSConfigWindow::OnUpdateUI(wxUpdateUIEvent& event)
-{
- m_inner_type->GetChoiceCtrl()->Enable(!m_prov.m_read_only);
-
- event.Skip();
-}
-
/// \endcond