source: filezilla/trunk/fuentes/src/interface/manual_transfer.cpp @ 130

Last change on this file since 130 was 130, checked in by jrpelegrina, 3 years ago

First release to xenial

File size: 17.2 KB
Line 
1#include <filezilla.h>
2#include "manual_transfer.h"
3#include "local_filesys.h"
4#include "auto_ascii_files.h"
5#include "state.h"
6#include "Options.h"
7#include "sitemanager.h"
8#include "queue.h"
9#include "QueueView.h"
10#include "xrc_helper.h"
11
12BEGIN_EVENT_TABLE(CManualTransfer, wxDialogEx)
13EVT_TEXT(XRCID("ID_LOCALFILE"), CManualTransfer::OnLocalChanged)
14EVT_TEXT(XRCID("ID_REMOTEFILE"), CManualTransfer::OnRemoteChanged)
15EVT_BUTTON(XRCID("ID_BROWSE"), CManualTransfer::OnLocalBrowse)
16EVT_RADIOBUTTON(XRCID("ID_DOWNLOAD"), CManualTransfer::OnDirection)
17EVT_RADIOBUTTON(XRCID("ID_UPLOAD"), CManualTransfer::OnDirection)
18EVT_RADIOBUTTON(XRCID("ID_SERVER_CURRENT"), CManualTransfer::OnServerTypeChanged)
19EVT_RADIOBUTTON(XRCID("ID_SERVER_SITE"), CManualTransfer::OnServerTypeChanged)
20EVT_RADIOBUTTON(XRCID("ID_SERVER_CUSTOM"), CManualTransfer::OnServerTypeChanged)
21EVT_BUTTON(XRCID("wxID_OK"), CManualTransfer::OnOK)
22EVT_BUTTON(XRCID("ID_SERVER_SITE_SELECT"), CManualTransfer::OnSelectSite)
23EVT_MENU(wxID_ANY, CManualTransfer::OnSelectedSite)
24EVT_CHOICE(XRCID("ID_LOGONTYPE"), CManualTransfer::OnLogontypeSelChanged)
25END_EVENT_TABLE()
26
27CManualTransfer::CManualTransfer(CQueueView* pQueueView)
28        : m_local_file_exists()
29        , m_pServer()
30        , m_pLastSite()
31        , m_pState()
32        , m_pQueueView(pQueueView)
33{
34}
35
36CManualTransfer::~CManualTransfer()
37{
38        delete m_pServer;
39        delete m_pLastSite;
40}
41
42void CManualTransfer::Run(wxWindow* pParent, CState* pState)
43{
44        if (!Load(pParent, _T("ID_MANUALTRANSFER")))
45                return;
46
47        m_pState = pState;
48
49        wxChoice *pProtocol = XRCCTRL(*this, "ID_PROTOCOL", wxChoice);
50        if (pProtocol) {
51                pProtocol->Append(CServer::GetProtocolName(FTP));
52                pProtocol->Append(CServer::GetProtocolName(SFTP));
53                pProtocol->Append(CServer::GetProtocolName(FTPS));
54                pProtocol->Append(CServer::GetProtocolName(FTPES));
55                pProtocol->Append(CServer::GetProtocolName(INSECURE_FTP));
56        }
57
58        wxChoice* pChoice = XRCCTRL(*this, "ID_LOGONTYPE", wxChoice);
59        wxASSERT(pChoice);
60        for (int i = 0; i < LOGONTYPE_MAX; ++i)
61                pChoice->Append(CServer::GetNameFromLogonType((enum LogonType)i));
62
63        if (m_pState->GetServer()) {
64                m_pServer = new CServer(*m_pState->GetServer());
65                XRCCTRL(*this, "ID_SERVER_CURRENT", wxRadioButton)->SetValue(true);
66                DisplayServer();
67        }
68        else {
69                XRCCTRL(*this, "ID_SERVER_CUSTOM", wxRadioButton)->SetValue(true);
70                XRCCTRL(*this, "ID_SERVER_CURRENT", wxRadioButton)->Disable();
71                DisplayServer();
72        }
73
74        wxString localPath = m_pState->GetLocalDir().GetPath();
75        XRCCTRL(*this, "ID_LOCALFILE", wxTextCtrl)->ChangeValue(localPath);
76
77        XRCCTRL(*this, "ID_REMOTEPATH", wxTextCtrl)->ChangeValue(m_pState->GetRemotePath().GetPath());
78
79        SetControlState();
80
81        switch(COptions::Get()->GetOptionVal(OPTION_ASCIIBINARY))
82        {
83        case 1:
84                XRCCTRL(*this, "ID_TYPE_ASCII", wxRadioButton)->SetValue(true);
85                break;
86        case 2:
87                XRCCTRL(*this, "ID_TYPE_BINARY", wxRadioButton)->SetValue(true);
88                break;
89        default:
90                XRCCTRL(*this, "ID_TYPE_AUTO", wxRadioButton)->SetValue(true);
91                break;
92        }
93
94        wxSize minSize = GetSizer()->GetMinSize();
95        SetClientSize(minSize);
96
97        ShowModal();
98}
99
100void CManualTransfer::SetControlState()
101{
102        SetServerState();
103        SetAutoAsciiState();
104
105        XRCCTRL(*this, "ID_SERVER_SITE_SELECT", wxButton)->Enable(XRCCTRL(*this, "ID_SERVER_SITE", wxRadioButton)->GetValue());
106}
107
108void CManualTransfer::SetAutoAsciiState()
109{
110        if (XRCCTRL(*this, "ID_DOWNLOAD", wxRadioButton)->GetValue()) {
111                wxString remote_file = XRCCTRL(*this, "ID_REMOTEFILE", wxTextCtrl)->GetValue();
112                if (remote_file.empty()) {
113                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Hide();
114                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Hide();
115                }
116                else if (CAutoAsciiFiles::TransferLocalAsAscii(remote_file, m_pServer ? m_pServer->GetType() : UNIX)) {
117                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Show();
118                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Hide();
119                }
120                else {
121                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Hide();
122                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Show();
123                }
124        }
125        else {
126                wxString local_file = XRCCTRL(*this, "ID_LOCALFILE", wxTextCtrl)->GetValue();
127                if (!m_local_file_exists) {
128                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Hide();
129                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Hide();
130                }
131                else if (CAutoAsciiFiles::TransferLocalAsAscii(local_file, m_pServer ? m_pServer->GetType() : UNIX)) {
132                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Show();
133                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Hide();
134                }
135                else {
136                        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->Hide();
137                        XRCCTRL(*this, "ID_TYPE_AUTO_BINARY", wxStaticText)->Show();
138                }
139        }
140        XRCCTRL(*this, "ID_TYPE_AUTO_ASCII", wxStaticText)->GetContainingSizer()->Layout();
141}
142
143void CManualTransfer::SetServerState()
144{
145        bool server_enabled = XRCCTRL(*this, "ID_SERVER_CUSTOM", wxRadioButton)->GetValue();
146        XRCCTRL(*this, "ID_HOST", wxWindow)->Enable(server_enabled);
147        XRCCTRL(*this, "ID_PORT", wxWindow)->Enable(server_enabled);
148        XRCCTRL(*this, "ID_PROTOCOL", wxWindow)->Enable(server_enabled);
149        XRCCTRL(*this, "ID_LOGONTYPE", wxWindow)->Enable(server_enabled);
150
151        wxString logon_type = XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->GetStringSelection();
152        XRCCTRL(*this, "ID_USER", wxTextCtrl)->Enable(server_enabled && logon_type != _("Anonymous"));
153        XRCCTRL(*this, "ID_PASS", wxTextCtrl)->Enable(server_enabled && (logon_type == _("Normal") || logon_type == _("Account")));
154        XRCCTRL(*this, "ID_ACCOUNT", wxTextCtrl)->Enable(server_enabled && logon_type == _("Account"));
155}
156
157void CManualTransfer::DisplayServer()
158{
159        if (m_pServer)
160        {
161                XRCCTRL(*this, "ID_HOST", wxTextCtrl)->ChangeValue(m_pServer->FormatHost(true));
162                unsigned int port = m_pServer->GetPort();
163
164                if (port != CServer::GetDefaultPort(m_pServer->GetProtocol()))
165                        XRCCTRL(*this, "ID_PORT", wxTextCtrl)->ChangeValue(wxString::Format(_T("%d"), port));
166                else
167                        XRCCTRL(*this, "ID_PORT", wxTextCtrl)->ChangeValue(_T(""));
168
169                const wxString& protocolName = CServer::GetProtocolName(m_pServer->GetProtocol());
170                if (!protocolName.empty())
171                        XRCCTRL(*this, "ID_PROTOCOL", wxChoice)->SetStringSelection(protocolName);
172                else
173                        XRCCTRL(*this, "ID_PROTOCOL", wxChoice)->SetStringSelection(CServer::GetProtocolName(FTP));
174
175                switch (m_pServer->GetLogonType())
176                {
177                case NORMAL:
178                        XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Normal"));
179                        break;
180                case ASK:
181                        XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Ask for password"));
182                        break;
183                case INTERACTIVE:
184                        XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Interactive"));
185                        break;
186                case ACCOUNT:
187                        XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Account"));
188                        break;
189                default:
190                        XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Anonymous"));
191                        break;
192                }
193
194                XRCCTRL(*this, "ID_USER", wxTextCtrl)->ChangeValue(m_pServer->GetUser());
195                XRCCTRL(*this, "ID_ACCOUNT", wxTextCtrl)->ChangeValue(m_pServer->GetAccount());
196                XRCCTRL(*this, "ID_PASS", wxTextCtrl)->ChangeValue(m_pServer->GetPass());
197        }
198        else
199        {
200                XRCCTRL(*this, "ID_HOST", wxTextCtrl)->ChangeValue(_T(""));
201                XRCCTRL(*this, "ID_PORT", wxTextCtrl)->ChangeValue(_T(""));
202                XRCCTRL(*this, "ID_PROTOCOL", wxChoice)->SetStringSelection(CServer::GetProtocolName(FTP));
203                XRCCTRL(*this, "ID_USER", wxTextCtrl)->Enable(false);
204                XRCCTRL(*this, "ID_PASS", wxTextCtrl)->Enable(false);
205                XRCCTRL(*this, "ID_ACCOUNT", wxTextCtrl)->Enable(false);
206                XRCCTRL(*this, "ID_LOGONTYPE", wxChoice)->SetStringSelection(_("Anonymous"));
207
208                XRCCTRL(*this, "ID_USER", wxTextCtrl)->ChangeValue(_T(""));
209                XRCCTRL(*this, "ID_ACCOUNT", wxTextCtrl)->ChangeValue(_T(""));
210                XRCCTRL(*this, "ID_PASS", wxTextCtrl)->ChangeValue(_T(""));
211        }
212}
213
214void CManualTransfer::OnLocalChanged(wxCommandEvent& event)
215{
216        if (XRCCTRL(*this, "ID_DOWNLOAD", wxRadioButton)->GetValue())
217                return;
218
219        wxString file = XRCCTRL(*this, "ID_LOCALFILE", wxTextCtrl)->GetValue();
220
221        m_local_file_exists = CLocalFileSystem::GetFileType(file) == CLocalFileSystem::file;
222
223        SetAutoAsciiState();
224}
225
226void CManualTransfer::OnRemoteChanged(wxCommandEvent& event)
227{
228        SetAutoAsciiState();
229}
230
231void CManualTransfer::OnLocalBrowse(wxCommandEvent& event)
232{
233        int flags;
234        wxString title;
235        if (xrc_call(*this, "ID_DOWNLOAD", &wxRadioButton::GetValue)) {
236                flags = wxFD_SAVE | wxFD_OVERWRITE_PROMPT;
237                title = _("Select target filename");
238        }
239        else {
240                flags = wxFD_OPEN | wxFD_FILE_MUST_EXIST;
241                title = _("Select file to upload");
242        }
243
244        wxFileDialog dlg(this, title, _T(""), _T(""), _T("*.*"), flags);
245        int res = dlg.ShowModal();
246
247        if (res != wxID_OK)
248                return;
249
250        // SetValue on purpose
251        xrc_call(*this, "ID_LOCALFILE", &wxTextCtrl::SetValue, dlg.GetPath());
252}
253
254void CManualTransfer::OnDirection(wxCommandEvent& event)
255{
256        if (xrc_call(*this, "ID_DOWNLOAD", &wxRadioButton::GetValue))
257                SetAutoAsciiState();
258        else {
259                // Need to check for file existence
260                OnLocalChanged(event);
261        }
262}
263
264void CManualTransfer::OnServerTypeChanged(wxCommandEvent& event)
265{
266        if (event.GetId() == XRCID("ID_SERVER_CURRENT")) {
267                delete m_pServer;
268                if (m_pState->GetServer())
269                        m_pServer = new CServer(*m_pState->GetServer());
270                else
271                        m_pServer = 0;
272        }
273        else if (event.GetId() == XRCID("ID_SERVER_SITE")) {
274                delete m_pServer;
275                if (m_pLastSite)
276                        m_pServer = new CServer(*m_pLastSite);
277                else
278                        m_pServer = 0;
279
280        }
281        xrc_call(*this, "ID_SERVER_SITE_SELECT", &wxButton::Enable, event.GetId() == XRCID("ID_SERVER_SITE"));
282        DisplayServer();
283        SetServerState();
284}
285
286void CManualTransfer::OnOK(wxCommandEvent& event)
287{
288        if (!UpdateServer())
289                return;
290
291        bool download = xrc_call(*this, "ID_DOWNLOAD", &wxRadioButton::GetValue);
292
293        bool start = xrc_call(*this, "ID_START", &wxCheckBox::GetValue);
294
295        if (!m_pServer) {
296                wxMessageBoxEx(_("You need to specify a server."), _("Manual transfer"), wxICON_EXCLAMATION);
297                return;
298        }
299
300        wxString local_file = xrc_call(*this, "ID_LOCALFILE", &wxTextCtrl::GetValue);
301        if (local_file.empty()) {
302                wxMessageBoxEx(_("You need to specify a local file."), _("Manual transfer"), wxICON_EXCLAMATION);
303                return;
304        }
305
306        CLocalFileSystem::local_fileType type = CLocalFileSystem::GetFileType(local_file);
307        if (type == CLocalFileSystem::dir) {
308                wxMessageBoxEx(_("Local file is a directory instead of a regular file."), _("Manual transfer"), wxICON_EXCLAMATION);
309                return;
310        }
311        if (!download && type != CLocalFileSystem::file && start) {
312                wxMessageBoxEx(_("Local file does not exist."), _("Manual transfer"), wxICON_EXCLAMATION);
313                return;
314        }
315
316        wxString remote_file = xrc_call(*this, "ID_REMOTEFILE", &wxTextCtrl::GetValue);
317
318        if (remote_file.empty()) {
319                wxMessageBoxEx(_("You need to specify a remote file."), _("Manual transfer"), wxICON_EXCLAMATION);
320                return;
321        }
322
323        wxString remote_path_str = xrc_call(*this, "ID_REMOTEPATH", &wxTextCtrl::GetValue);
324        if (remote_path_str.empty()) {
325                wxMessageBoxEx(_("You need to specify a remote path."), _("Manual transfer"), wxICON_EXCLAMATION);
326                return;
327        }
328
329        CServerPath path(remote_path_str, m_pServer->GetType());
330        if (path.empty()) {
331                wxMessageBoxEx(_("Remote path could not be parsed."), _("Manual transfer"), wxICON_EXCLAMATION);
332                return;
333        }
334
335        int old_data_type = COptions::Get()->GetOptionVal(OPTION_ASCIIBINARY);
336
337        // Set data type for the file to add
338        if (xrc_call(*this, "ID_TYPE_ASCII", &wxRadioButton::GetValue))
339                COptions::Get()->SetOption(OPTION_ASCIIBINARY, 1);
340        else if (xrc_call(*this, "ID_TYPE_BINARY", &wxRadioButton::GetValue))
341                COptions::Get()->SetOption(OPTION_ASCIIBINARY, 2);
342        else
343                COptions::Get()->SetOption(OPTION_ASCIIBINARY, 0);
344
345        wxString name;
346        CLocalPath localPath(local_file, &name);
347
348        if (name.empty()) {
349                wxMessageBoxEx(_("Local file is not a valid filename."), _("Manual transfer"), wxICON_EXCLAMATION);
350                return;
351        }
352
353        m_pQueueView->QueueFile(!start, download,
354                download ? remote_file : name,
355                (remote_file != name) ? (download ? name : remote_file) : wxString(),
356                localPath, path, *m_pServer, -1);
357
358        // Restore old data type
359        COptions::Get()->SetOption(OPTION_ASCIIBINARY, old_data_type);
360
361        m_pQueueView->QueueFile_Finish(start);
362
363        EndModal(wxID_OK);
364}
365
366bool CManualTransfer::UpdateServer()
367{
368        if (!xrc_call(*this, "ID_SERVER_CUSTOM", &wxRadioButton::GetValue))
369                return true;
370
371        if (!VerifyServer())
372                return false;
373
374        CServer server;
375
376        unsigned long port;
377        if (!xrc_call(*this, "ID_PORT", &wxTextCtrl::GetValue).ToULong(&port)) {
378                return false;
379        }
380
381        wxString host = xrc_call(*this, "ID_HOST", &wxTextCtrl::GetValue);
382        // SetHost does not accept URL syntax
383        if (!host.empty() && host[0] == '[') {
384                host.RemoveLast();
385                host = host.Mid(1);
386        }
387        server.SetHost(host, port);
388
389        const wxString& protocolName = xrc_call(*this, "ID_PROTOCOL", &wxChoice::GetStringSelection);
390        const enum ServerProtocol protocol = CServer::GetProtocolFromName(protocolName);
391        if (protocol != UNKNOWN)
392                server.SetProtocol(protocol);
393        else
394                server.SetProtocol(FTP);
395
396        enum LogonType logon_type = CServer::GetLogonTypeFromName(xrc_call(*this, "ID_LOGONTYPE", &wxChoice::GetStringSelection));
397        server.SetLogonType(logon_type);
398
399        server.SetUser(xrc_call(*this, "ID_USER", &wxTextCtrl::GetValue),
400                xrc_call(*this, "ID_PASS", &wxTextCtrl::GetValue));
401        server.SetAccount(xrc_call(*this, "ID_ACCOUNT", &wxTextCtrl::GetValue));
402
403        delete m_pServer;
404        m_pServer = new CServer(server);
405
406        return true;
407}
408
409bool CManualTransfer::VerifyServer()
410{
411        const wxString& host = xrc_call(*this, "ID_HOST", &wxTextCtrl::GetValue);
412        if (host.empty()) {
413                xrc_call(*this, "ID_HOST", &wxTextCtrl::SetFocus);
414                wxMessageBoxEx(_("You have to enter a hostname."));
415                return false;
416        }
417
418        enum LogonType logon_type = CServer::GetLogonTypeFromName(xrc_call(*this, "ID_LOGONTYPE", &wxChoice::GetStringSelection));
419
420        wxString protocolName = xrc_call(*this, "ID_PROTOCOL", &wxChoice::GetStringSelection);
421        enum ServerProtocol protocol = CServer::GetProtocolFromName(protocolName);
422        if (protocol == SFTP &&
423                logon_type == ACCOUNT)
424        {
425                xrc_call(*this, "ID_LOGONTYPE", &wxChoice::SetFocus);
426                wxMessageBoxEx(_("'Account' logontype not supported by selected protocol"));
427                return false;
428        }
429
430        if (COptions::Get()->GetOptionVal(OPTION_DEFAULT_KIOSKMODE) != 0 &&
431                (logon_type == ACCOUNT || logon_type == NORMAL))
432        {
433                xrc_call(*this, "ID_LOGONTYPE", &wxChoice::SetFocus);
434                wxString msg;
435                if (COptions::Get()->OptionFromFzDefaultsXml(OPTION_DEFAULT_KIOSKMODE))
436                        msg = _("Saving of password has been disabled by your system administrator.");
437                else
438                        msg = _("Saving of passwords has been disabled by you.");
439                msg += _T("\n");
440                msg += _("'Normal' and 'Account' logontypes are not available, using 'Ask for password' instead.");
441                xrc_call(*this, "ID_LOGONTYPE", &wxChoice::SetStringSelection, CServer::GetNameFromLogonType(ASK));
442                xrc_call(*this, "ID_PASS", &wxTextCtrl::ChangeValue, _T(""));
443                logon_type = ASK;
444                wxMessageBoxEx(msg, _("Cannot remember password"), wxICON_INFORMATION, this);
445        }
446
447        CServer server;
448
449        // Set selected type
450        server.SetLogonType(logon_type);
451
452        if (protocol != UNKNOWN)
453                server.SetProtocol(protocol);
454
455        CServerPath path;
456        wxString error;
457        if (!server.ParseUrl(host, xrc_call(*this, "ID_PORT", &wxTextCtrl::GetValue), wxString(), wxString(), error, path)) {
458                xrc_call(*this, "ID_HOST", &wxTextCtrl::SetFocus);
459                wxMessageBoxEx(error);
460                return false;
461        }
462
463        xrc_call(*this, "ID_HOST", &wxTextCtrl::ChangeValue, server.FormatHost(true));
464        xrc_call(*this, "ID_PORT", &wxTextCtrl::ChangeValue, wxString::Format(_T("%d"), server.GetPort()));
465
466        protocolName = CServer::GetProtocolName(server.GetProtocol());
467        if (protocolName.empty())
468                CServer::GetProtocolName(FTP);
469        xrc_call(*this, "ID_PROTOCOL", &wxChoice::SetStringSelection, protocolName);
470
471        // Require username for non-anonymous, non-ask logon type
472        const wxString user = xrc_call(*this, "ID_USER", &wxTextCtrl::GetValue);
473        if (logon_type != ANONYMOUS &&
474                logon_type != ASK &&
475                logon_type != INTERACTIVE &&
476                user.empty())
477        {
478                xrc_call(*this, "ID_USER", &wxTextCtrl::SetFocus);
479                wxMessageBoxEx(_("You have to specify a user name"));
480                return false;
481        }
482
483        // We don't allow username of only spaces, confuses both users and XML libraries
484        if (!user.empty()) {
485                bool space_only = true;
486                for (unsigned int i = 0; i < user.Len(); ++i) {
487                        if (user[i] != ' ') {
488                                space_only = false;
489                                break;
490                        }
491                }
492                if (space_only) {
493                        xrc_call(*this, "ID_USER", &wxTextCtrl::SetFocus);
494                        wxMessageBoxEx(_("Username cannot be a series of spaces"));
495                        return false;
496                }
497
498        }
499
500        // Require account for account logon type
501        if (logon_type == ACCOUNT &&
502                xrc_call(*this, "ID_ACCOUNT", &wxTextCtrl::GetValue).empty())
503        {
504                xrc_call(*this, "ID_ACCOUNT", &wxTextCtrl::SetFocus);
505                wxMessageBoxEx(_("You have to enter an account name"));
506                return false;
507        }
508
509        return true;
510}
511
512void CManualTransfer::OnSelectSite(wxCommandEvent& event)
513{
514        std::unique_ptr<wxMenu> pMenu = CSiteManager::GetSitesMenu();
515        if (pMenu) {
516                PopupMenu(pMenu.get());
517        }
518}
519
520void CManualTransfer::OnSelectedSite(wxCommandEvent& event)
521{
522        std::unique_ptr<CSiteManagerItemData_Site> pData = CSiteManager::GetSiteById(event.GetId());
523        if (!pData)
524                return;
525
526        delete m_pServer;
527        m_pServer = new CServer(pData->m_server);
528        delete m_pLastSite;
529        m_pLastSite = new CServer(pData->m_server);
530
531        xrc_call(*this, "ID_SERVER_SITE_SERVER", &wxStaticText::SetLabel, m_pServer->GetName());
532
533        DisplayServer();
534}
535
536void CManualTransfer::OnLogontypeSelChanged(wxCommandEvent& event)
537{
538        xrc_call(*this, "ID_USER", &wxTextCtrl::Enable, event.GetString() != _("Anonymous"));
539        xrc_call(*this, "ID_PASS", &wxTextCtrl::Enable, event.GetString() == _("Normal") || event.GetString() == _("Account"));
540        xrc_call(*this, "ID_ACCOUNT", &wxTextCtrl::Enable, event.GetString() == _("Account"));
541}
Note: See TracBrowser for help on using the repository browser.