From c452e72ca7c483f393b3592a6cf6a9f9b7dd3cff Mon Sep 17 00:00:00 2001 From: mathieui Date: Fri, 1 May 2015 01:49:24 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Netplay:=20don=E2=80=99t=20show=20traversal?= =?UTF-8?q?=20server/port=20options=20(INI=20config=20only)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DolphinWX/NetPlay/NetPlaySetupFrame.cpp | 59 ++++++++----------- .../DolphinWX/NetPlay/NetPlaySetupFrame.h | 4 -- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp index 857a082ae4..0dc56d76b1 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp @@ -62,20 +62,6 @@ NetPlaySetupFrame::NetPlaySetupFrame(wxWindow* const parent, const CGameListCtrl nick_szr->Add(nick_lbl, 0, wxCENTER); nick_szr->Add(m_nickname_text, 0, wxALL, 5); - std::string centralServer; - netplay_section.Get("TraversalServer", ¢ralServer, ""); - m_traversal_server_lbl = new wxStaticText(panel, wxID_ANY, _("Traversal:")); - m_traversal_server = new wxTextCtrl(panel, wxID_ANY, StrToWxStr(centralServer)); - nick_szr->Add(m_traversal_server_lbl, 0, wxCENTER); - nick_szr->Add(m_traversal_server, 0, wxALL, 5); - - std::string centralPort; - netplay_section.Get("TraversalPort", ¢ralPort, ""); - m_traversal_port_lbl = new wxStaticText(panel, wxID_ANY, _("Port:")); - m_traversal_port = new wxTextCtrl(panel, wxID_ANY, StrToWxStr(centralPort)); - nick_szr->Add(m_traversal_port_lbl, 0, wxCENTER); - nick_szr->Add(m_traversal_port, 0, wxALL, 5); - // tabs wxNotebook* const notebook = new wxNotebook(panel, wxID_ANY); wxPanel* const connect_tab = new wxPanel(notebook, wxID_ANY); @@ -210,8 +196,6 @@ NetPlaySetupFrame::~NetPlaySetupFrame() } netplay_section.Set("Nickname", WxStrToStr(m_nickname_text->GetValue())); - netplay_section.Set("TraversalServer", WxStrToStr(m_traversal_server->GetValue())); - netplay_section.Set("TraversalPort", WxStrToStr(m_traversal_port->GetValue())); if (m_direct_traversal->GetCurrentSelection() == 0) { @@ -246,9 +230,19 @@ void NetPlaySetupFrame::MakeNetPlayDiag(int port, const std::string &game, bool else trav = false; - unsigned long centralPort = 0; - m_traversal_port->GetValue().ToULong(¢ralPort); - netplay_client = new NetPlayClient(ip, (u16)port, npd, WxStrToStr(m_nickname_text->GetValue()), trav, WxStrToStr(m_traversal_server->GetValue()), (u16)centralPort); + IniFile inifile; + inifile.Load(File::GetUserPath(D_CONFIG_IDX) + "Dolphin.ini"); + IniFile::Section& netplay_section = *inifile.GetOrCreateSection("NetPlay"); + + std::string centralPortString; + netplay_section.Get("TraversalPort", ¢ralPortString, "6262"); + unsigned long int centralPort; + StrToWxStr(centralPortString).ToULong(¢ralPort); + + std::string centralServer; + netplay_section.Get("TraversalServer", ¢ralServer, "stun.dolphin-emu.org"); + + netplay_client = new NetPlayClient(ip, (u16)port, npd, WxStrToStr(m_nickname_text->GetValue()), trav, centralServer, (u16) centralPort); if (netplay_client->is_connected) { npd->Show(); @@ -288,9 +282,19 @@ void NetPlaySetupFrame::OnHost(wxCommandEvent&) unsigned long port = 0; m_host_port_text->GetValue().ToULong(&port); - unsigned long centralPort = 0; - m_traversal_port->GetValue().ToULong(¢ralPort); - netplay_server = new NetPlayServer((u16)port, trav, WxStrToStr(m_traversal_server->GetValue()), (u16)centralPort); + IniFile inifile; + inifile.Load(File::GetUserPath(D_CONFIG_IDX) + "Dolphin.ini"); + IniFile::Section& netplay_section = *inifile.GetOrCreateSection("NetPlay"); + + std::string centralPortString; + netplay_section.Get("TraversalPort", ¢ralPortString, "6262"); + unsigned long int centralPort; + StrToWxStr(centralPortString).ToULong(¢ralPort); + + std::string centralServer; + netplay_section.Get("TraversalServer", ¢ralServer, "stun.dolphin-emu.org"); + + netplay_server = new NetPlayServer((u16)port, trav, centralServer, (u16) centralPort); if (netplay_server->is_connected) { netplay_server->ChangeGame(game); @@ -331,12 +335,6 @@ void NetPlaySetupFrame::OnChoice(wxCommandEvent& event) if (sel == 1) { - m_traversal_server_lbl->Show(); - m_traversal_server->Show(); - - m_traversal_port_lbl->Show(); - m_traversal_port->Show(); - //Traversal //client tab { @@ -359,11 +357,6 @@ void NetPlaySetupFrame::OnChoice(wxCommandEvent& event) } else { - m_traversal_server_lbl->Hide(); - m_traversal_server->Hide(); - - m_traversal_port_lbl->Hide(); - m_traversal_port->Hide(); // Direct // Client tab { diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h index 15cddb1841..f7e30557ad 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h @@ -36,10 +36,6 @@ private: wxTextCtrl* m_connect_port_text; wxTextCtrl* m_connect_ip_text; wxChoice* m_direct_traversal; - wxStaticText* m_traversal_server_lbl; - wxTextCtrl* m_traversal_server; - wxStaticText* m_traversal_port_lbl; - wxTextCtrl* m_traversal_port; wxListBox* m_game_lbox; #ifdef USE_UPNP From df8b86ed63679300b8a00212e6d512c1e553c243 Mon Sep 17 00:00:00 2001 From: mathieui Date: Fri, 1 May 2015 03:11:28 +0200 Subject: [PATCH 2/3] Traversal: use the defaults if empty or space-only config entries are detected --- .../DolphinWX/NetPlay/NetPlaySetupFrame.cpp | 24 +++++++++++++++---- .../DolphinWX/NetPlay/NetPlaySetupFrame.h | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp index 0dc56d76b1..58db8ea89a 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp @@ -22,6 +22,22 @@ #include "DolphinWX/NetPlay/NetPlaySetupFrame.h" #include "DolphinWX/NetPlay/NetWindow.h" +static void GetTraversalPort(IniFile::Section& section, std::string* port) +{ + section.Get("TraversalPort", port, "6262"); + port->erase(std::remove(port->begin(), port->end(), ' '), port->end()); + if (port->empty()) + *port = "6262"; +} + +static void GetTraversalServer(IniFile::Section& section, std::string* server) +{ + section.Get("TraversalServer", server, "stun.dolphin-emu.org"); + server->erase(std::remove(server->begin(), server->end(), ' '), server->end()); + if (server->empty()) + *server = "stun.dolphin-emu.org"; +} + NetPlaySetupFrame::NetPlaySetupFrame(wxWindow* const parent, const CGameListCtrl* const game_list) : wxFrame(parent, wxID_ANY, _("Dolphin NetPlay Setup")) , m_game_list(game_list) @@ -235,12 +251,12 @@ void NetPlaySetupFrame::MakeNetPlayDiag(int port, const std::string &game, bool IniFile::Section& netplay_section = *inifile.GetOrCreateSection("NetPlay"); std::string centralPortString; - netplay_section.Get("TraversalPort", ¢ralPortString, "6262"); + GetTraversalPort(netplay_section, ¢ralPortString); unsigned long int centralPort; StrToWxStr(centralPortString).ToULong(¢ralPort); std::string centralServer; - netplay_section.Get("TraversalServer", ¢ralServer, "stun.dolphin-emu.org"); + GetTraversalServer(netplay_section, ¢ralServer); netplay_client = new NetPlayClient(ip, (u16)port, npd, WxStrToStr(m_nickname_text->GetValue()), trav, centralServer, (u16) centralPort); if (netplay_client->is_connected) @@ -287,12 +303,12 @@ void NetPlaySetupFrame::OnHost(wxCommandEvent&) IniFile::Section& netplay_section = *inifile.GetOrCreateSection("NetPlay"); std::string centralPortString; - netplay_section.Get("TraversalPort", ¢ralPortString, "6262"); + GetTraversalPort(netplay_section, ¢ralPortString); unsigned long int centralPort; StrToWxStr(centralPortString).ToULong(¢ralPort); std::string centralServer; - netplay_section.Get("TraversalServer", ¢ralServer, "stun.dolphin-emu.org"); + GetTraversalServer(netplay_section, ¢ralServer); netplay_server = new NetPlayServer((u16)port, trav, centralServer, (u16) centralPort); if (netplay_server->is_connected) diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h index f7e30557ad..a0fcbfefda 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include From bb622836b28816590d60f2bfaf048d2536c386f9 Mon Sep 17 00:00:00 2001 From: mathieui Date: Mon, 11 May 2015 01:09:44 +0200 Subject: [PATCH 3/3] Traversal: Add a read-only text for server:port with a "reset to default" button Clicking it will set the config file back to stun.dolphin-emu.org with port 6262. --- .../DolphinWX/NetPlay/NetPlaySetupFrame.cpp | 29 +++++++++++++++++++ .../DolphinWX/NetPlay/NetPlaySetupFrame.h | 3 ++ 2 files changed, 32 insertions(+) diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp index 58db8ea89a..754b3c8b01 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.cpp @@ -70,6 +70,10 @@ NetPlaySetupFrame::NetPlaySetupFrame(wxWindow* const parent, const CGameListCtrl trav_szr->Add(m_direct_traversal, 0, wxRIGHT); + m_trav_reset_btn = new wxButton(panel, wxID_ANY, _("Reset Traversal Settings")); + m_trav_reset_btn->Bind(wxEVT_BUTTON, &NetPlaySetupFrame::OnResetTraversal, this); + trav_szr->Add(m_trav_reset_btn, 0, wxCENTER | wxRIGHT); + wxBoxSizer* const nick_szr = new wxBoxSizer(wxHORIZONTAL); wxStaticText* const nick_lbl = new wxStaticText(panel, wxID_ANY, _("Nickname :")); std::string nickname; @@ -78,6 +82,13 @@ NetPlaySetupFrame::NetPlaySetupFrame(wxWindow* const parent, const CGameListCtrl nick_szr->Add(nick_lbl, 0, wxCENTER); nick_szr->Add(m_nickname_text, 0, wxALL, 5); + std::string centralPort; + GetTraversalPort(netplay_section, ¢ralPort); + std::string centralServer; + GetTraversalServer(netplay_section, ¢ralServer); + + m_traversal_lbl = new wxStaticText(panel, wxID_ANY, _("Traversal: ") + centralServer + ":" + centralPort); + // tabs wxNotebook* const notebook = new wxNotebook(panel, wxID_ANY); wxPanel* const connect_tab = new wxPanel(notebook, wxID_ANY); @@ -174,6 +185,7 @@ NetPlaySetupFrame::NetPlaySetupFrame(wxWindow* const parent, const CGameListCtrl wxBoxSizer* const main_szr = new wxBoxSizer(wxVERTICAL); main_szr->Add(trav_szr, 0, wxALL | wxALIGN_LEFT); main_szr->Add(nick_szr, 0, wxALL | wxALIGN_LEFT, 5); + main_szr->Add(m_traversal_lbl, 0, wxALL | wxALIGN_LEFT, 5); main_szr->Add(notebook, 1, wxLEFT | wxRIGHT | wxEXPAND, 5); main_szr->Add(quit_btn, 0, wxALL | wxALIGN_RIGHT, 5); @@ -342,6 +354,19 @@ void NetPlaySetupFrame::OnJoin(wxCommandEvent&) MakeNetPlayDiag(port, "", false); } +void NetPlaySetupFrame::OnResetTraversal(wxCommandEvent& event) +{ + IniFile inifile; + const std::string dolphin_ini = File::GetUserPath(D_CONFIG_IDX) + "Dolphin.ini"; + inifile.Load(dolphin_ini); + IniFile::Section& netplay_section = *inifile.GetOrCreateSection("NetPlay"); + netplay_section.Set("TraversalServer", (std::string) "stun.dolphin-emu.org"); + netplay_section.Set("TraversalPort", (std::string) "6262"); + inifile.Save(dolphin_ini); + + m_traversal_lbl->SetLabelText(_("Traversal: ") + "stun.dolphin-emu.org:6262"); +} + void NetPlaySetupFrame::OnChoice(wxCommandEvent& event) { int sel = m_direct_traversal->GetSelection(); @@ -351,6 +376,8 @@ void NetPlaySetupFrame::OnChoice(wxCommandEvent& event) if (sel == 1) { + m_traversal_lbl->Show(); + m_trav_reset_btn->Show(); //Traversal //client tab { @@ -373,6 +400,8 @@ void NetPlaySetupFrame::OnChoice(wxCommandEvent& event) } else { + m_traversal_lbl->Hide(); + m_trav_reset_btn->Hide(); // Direct // Client tab { diff --git a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h index a0fcbfefda..ed4becc865 100644 --- a/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h +++ b/Source/Core/DolphinWX/NetPlay/NetPlaySetupFrame.h @@ -26,6 +26,7 @@ private: void OnHost(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnChoice(wxCommandEvent& event); + void OnResetTraversal(wxCommandEvent& event); void MakeNetPlayDiag(int port, const std::string& game, bool is_hosting); @@ -37,6 +38,8 @@ private: wxTextCtrl* m_connect_port_text; wxTextCtrl* m_connect_ip_text; wxChoice* m_direct_traversal; + wxStaticText* m_traversal_lbl; + wxButton* m_trav_reset_btn; wxListBox* m_game_lbox; #ifdef USE_UPNP