source: filezilla/trunk/fuentes/src/interface/settings/optionspage_edit.cpp

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

Update new version: 3.15.02

File size: 3.8 KB
Line 
1#include <filezilla.h>
2
3#include "../Options.h"
4#include "file_utils.h"
5#include "settingsdialog.h"
6#include "optionspage.h"
7#include "optionspage_edit.h"
8
9BEGIN_EVENT_TABLE(COptionsPageEdit, COptionsPage)
10EVT_BUTTON(XRCID("ID_BROWSE"), COptionsPageEdit::OnBrowseEditor)
11EVT_RADIOBUTTON(wxID_ANY, COptionsPageEdit::OnRadioButton)
12END_EVENT_TABLE()
13
14bool COptionsPageEdit::LoadPage()
15{
16        bool failure = false;
17
18        COptions* pOptions = COptions::Get();
19
20        wxString editor = pOptions->GetOption(OPTION_EDIT_DEFAULTEDITOR);
21        if (editor.empty() || editor[0] == '0')
22                SetRCheck(XRCID("ID_DEFAULT_NONE"), true, failure);
23        else if (editor[0] == '1')
24                SetRCheck(XRCID("ID_DEFAULT_TEXT"), true, failure);
25        else
26        {
27                if (editor[0] == '2')
28                        editor = editor.Mid(1);
29
30                SetRCheck(XRCID("ID_DEFAULT_CUSTOM"), true, failure);
31                SetText(XRCID("ID_EDITOR"), editor, failure);
32        }
33
34        if (pOptions->GetOptionVal(OPTION_EDIT_ALWAYSDEFAULT))
35                SetRCheck(XRCID("ID_USEDEFAULT"), true, failure);
36        else
37                SetRCheck(XRCID("ID_USEASSOCIATIONS"), true, failure);
38
39        SetCheckFromOption(XRCID("ID_EDIT_TRACK_LOCAL"), OPTION_EDIT_TRACK_LOCAL, failure);
40
41        if (!failure)
42                SetCtrlState();
43
44        return !failure;
45}
46
47bool COptionsPageEdit::SavePage()
48{
49        COptions* pOptions = COptions::Get();
50
51        if (GetRCheck(XRCID("ID_DEFAULT_CUSTOM")))
52                pOptions->SetOption(OPTION_EDIT_DEFAULTEDITOR, _T("2") + GetText(XRCID("ID_EDITOR")));
53        else
54                pOptions->SetOption(OPTION_EDIT_DEFAULTEDITOR, GetRCheck(XRCID("ID_DEFAULT_TEXT")) ? _T("1") : _T("0"));
55
56        if (GetRCheck(XRCID("ID_USEDEFAULT")))
57                pOptions->SetOption(OPTION_EDIT_ALWAYSDEFAULT, 1);
58        else
59                pOptions->SetOption(OPTION_EDIT_ALWAYSDEFAULT, 0);
60
61        SetOptionFromCheck(XRCID("ID_EDIT_TRACK_LOCAL"), OPTION_EDIT_TRACK_LOCAL);
62
63        return true;
64}
65
66bool COptionsPageEdit::Validate()
67{
68        const bool custom = GetRCheck(XRCID("ID_DEFAULT_CUSTOM"));
69        wxString editor;
70        if (custom) {
71                bool failure = false;
72
73                editor = GetText(XRCID("ID_EDITOR"));
74                editor.Trim(true);
75                editor.Trim(false);
76                SetText(XRCID("EDITOR"), editor, failure);
77
78                if (!editor.empty()) {
79                        wxString args;
80                        if (!UnquoteCommand(editor, args))
81                                return DisplayError(_T("ID_EDITOR"), _("Default editor not properly quoted."));
82
83                        if (editor.empty())
84                                return DisplayError(_T("ID_EDITOR"), _("Empty quoted string."));
85
86                        if (!ProgramExists(editor))
87                                return DisplayError(_T("ID_EDITOR"), _("The file selected as default editor does not exist."));
88                }
89        }
90
91        if (GetRCheck(XRCID("ID_USEDEFAULT"))) {
92                if (GetRCheck(XRCID("ID_DEFAULT_NONE")) ||
93                        (custom && editor.empty()))
94                {
95                        return DisplayError(_T("ID_EDITOR"), _("A default editor needs to be set."));
96                }
97        }
98
99        return true;
100}
101
102void COptionsPageEdit::OnBrowseEditor(wxCommandEvent&)
103{
104        wxFileDialog dlg(this, _("Select default editor"), wxString(), wxString(),
105#ifdef __WXMSW__
106                _T("Executable file (*.exe)|*.exe"),
107#elif __WXMAC__
108                _T("Applications (*.app)|*.app"),
109#else
110                wxFileSelectorDefaultWildcardStr,
111#endif
112                wxFD_OPEN | wxFD_FILE_MUST_EXIST);
113
114        if (dlg.ShowModal() != wxID_OK)
115                return;
116
117        wxString editor = dlg.GetPath();
118        if (editor.empty())
119                return;
120
121        if (!ProgramExists(editor))
122        {
123                XRCCTRL(*this, "ID_EDITOR", wxWindow)->SetFocus();
124                wxMessageBoxEx(_("Selected editor does not exist."), _("File not found"), wxICON_EXCLAMATION, this);
125                return;
126        }
127
128        if (editor.Find(' ') != -1)
129                editor = _T("\"") + editor + _T("\"");
130
131        bool tmp;
132        SetText(XRCID("ID_EDITOR"), editor, tmp);
133}
134
135void COptionsPageEdit::SetCtrlState()
136{
137        bool custom = GetRCheck(XRCID("ID_DEFAULT_CUSTOM"));
138
139        XRCCTRL(*this, "ID_EDITOR", wxTextCtrl)->Enable(custom);
140        XRCCTRL(*this, "ID_BROWSE", wxButton)->Enable(custom);
141
142        XRCCTRL(*this, "ID_USEDEFAULT", wxRadioButton)->Enable(!GetRCheck(XRCID("ID_DEFAULT_NONE")) || GetRCheck(XRCID("ID_USEDEFAULT")));
143}
144
145void COptionsPageEdit::OnRadioButton(wxCommandEvent&)
146{
147        SetCtrlState();
148}
Note: See TracBrowser for help on using the repository browser.