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

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

First release to xenial

File size: 3.3 KB
Line 
1#include <filezilla.h>
2#include "cmdline.h"
3
4CCommandLine::CCommandLine(int argc, wxChar** argv)
5{
6        m_parser.AddSwitch(_T("h"), _T("help"), _("Shows this help dialog"), wxCMD_LINE_OPTION_HELP);
7        m_parser.AddSwitch(_T("s"), _T("site-manager"), _("Start with opened Site Manager"));
8        m_parser.AddOption(_T("c"), _T("site"), _("Connect to specified Site Manager site"));
9        m_parser.AddOption(_T("a"), _T("local"), _("Starts the local site in the given path"));
10
11        wxString desc = wxString::Format(_("Logontype, can only be used together with FTP URL. Argument has to be either '%s' or '%s'"), _T("ask"), _T("interactive"));
12        m_parser.AddOption(_T("l"), _T("logontype"), desc);
13
14#ifdef __WXMSW__
15        m_parser.AddSwitch(_T(""), _T("close"), _("Close all running instances of FileZilla"));
16#endif
17        m_parser.AddSwitch(_T(""), _T("verbose"), _("Verbose log messages from wxWidgets"));
18        m_parser.AddSwitch(_T("v"), _T("version"), _("Print version information to stdout and exit"));
19        m_parser.AddSwitch(_T(""), _T("debug-startup"), _("Print diagnostic information related to startup of FileZilla"));
20        wxString str = _T("<");
21        str += _("FTP URL");
22        str += _T(">");
23        m_parser.AddParam(str, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL);
24
25        m_parser.SetCmdLine(argc, argv);
26
27        m_parser.SetSwitchChars(_T("-"));
28}
29
30bool CCommandLine::HasSwitch(enum CCommandLine::t_switches s) const
31{
32        if (s == sitemanager)
33                return m_parser.Found(_T("s"));
34#ifdef __WXMSW__
35        else if (s == close)
36                return m_parser.Found(_T("close"));
37#endif
38        else if (s == version)
39                return m_parser.Found(_T("v"));
40        else if (s == debug_startup)
41                return m_parser.Found(_T("debug-startup"));
42
43        return false;
44}
45
46wxString CCommandLine::GetOption(enum CCommandLine::t_option option) const
47{
48        wxString value;
49        switch (option)
50        {
51        case site:
52                if (m_parser.Found(_T("c"), &value))
53                        return value;
54                break;
55        case logontype:
56                if (m_parser.Found(_T("l"), &value))
57                        return value;
58                break;
59        case local:
60                if (m_parser.Found(_T("a"), &value))
61                        return value;
62                break;
63        }
64
65        return wxString();
66}
67
68bool CCommandLine::Parse()
69{
70        int res = m_parser.Parse(false);
71        if (res != 0)
72                return false;
73
74        if (HasSwitch(sitemanager) && !GetOption(site).empty())
75        {
76                wxMessageBoxEx(_("-s and -c cannot be present at the same time."), _("Syntax error in command line"));
77                return false;
78        }
79
80        if (HasSwitch(sitemanager) && m_parser.GetParamCount())
81        {
82                wxMessageBoxEx(_("-s cannot be used together with an FTP URL."), _("Syntax error in command line"));
83                return false;
84        }
85
86        if (!GetOption(site).empty() && m_parser.GetParamCount())
87        {
88                wxMessageBoxEx(_("-c cannot be used together with an FTP URL."), _("Syntax error in command line"));
89                return false;
90        }
91
92        wxString type = GetOption(logontype);
93        if (!type.empty())
94        {
95                if (!m_parser.GetParamCount())
96                {
97                        wxMessageBoxEx(_("-l can only be used together with an FTP URL."), _("Syntax error in command line"));
98                        return false;
99                }
100
101                if (type != _T("ask") && type != _T("interactive"))
102                {
103                        wxMessageBoxEx(_("Logontype has to be either 'ask' or 'interactive' (without the quotes)."), _("Syntax error in command line"));
104                        return false;
105                }
106        }
107
108        if (m_parser.Found(_T("verbose")))
109                wxLog::SetVerbose(true);
110
111        return true;
112}
113
114void CCommandLine::DisplayUsage()
115{
116        m_parser.Usage();
117}
118
119wxString CCommandLine::GetParameter() const
120{
121        if (!m_parser.GetParamCount())
122                return wxString();
123
124        return m_parser.GetParam();
125}
Note: See TracBrowser for help on using the repository browser.