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

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

First release to xenial

File size: 4.6 KB
Line 
1#include <filezilla.h>
2#include "../Options.h"
3#include "settingsdialog.h"
4#include "optionspage.h"
5
6bool COptionsPage::CreatePage(COptions* pOptions, CSettingsDialog* pOwner, wxWindow* parent, wxSize& maxSize)
7{
8        m_pOwner = pOwner;
9        m_pOptions = pOptions;
10
11        if (!wxXmlResource::Get()->LoadPanel(this, parent, GetResourceName()))
12                return false;
13
14        wxSize size = GetSize();
15
16#ifdef __WXGTK__
17        // wxStaticBox draws its own border coords -1.
18        // Adjust this window so that the left border is fully visible.
19        Move(1, 0);
20        size.x += 1;
21#endif
22
23        if (size.GetWidth() > maxSize.GetWidth())
24                maxSize.SetWidth(size.GetWidth());
25        if (size.GetHeight() > maxSize.GetHeight())
26                maxSize.SetHeight(size.GetHeight());
27
28        m_was_selected = false;
29
30        return true;
31}
32
33void COptionsPage::SetCheck(int id, bool checked, bool& failure)
34{
35        wxCheckBox* pCheckBox = wxDynamicCast(FindWindow(id), wxCheckBox);
36        if (!pCheckBox)
37        {
38                failure = true;
39                return;
40        }
41
42        pCheckBox->SetValue(checked);
43}
44
45void COptionsPage::SetCheckFromOption(int control_id, int option_id, bool& failure)
46{
47        SetCheck(control_id, m_pOptions->GetOptionVal(option_id) != 0, failure);
48}
49
50bool COptionsPage::GetCheck(int id) const
51{
52        wxCheckBox* pCheckBox = wxDynamicCast(FindWindow(id), wxCheckBox);
53        wxASSERT(pCheckBox);
54
55        return pCheckBox->GetValue();
56}
57
58void COptionsPage::SetOptionFromCheck(int control_id, int option_id)
59{
60        m_pOptions->SetOption(option_id, GetCheck(control_id) ? 1 : 0);
61}
62
63void COptionsPage::SetTextFromOption(int ctrlId, int optionId, bool& failure)
64{
65        if (ctrlId == -1)
66        {
67                failure = true;
68                return;
69        }
70
71        wxTextCtrl* pTextCtrl = wxDynamicCast(FindWindow(ctrlId), wxTextCtrl);
72        if (!pTextCtrl)
73        {
74                failure = true;
75                return;
76        }
77
78        const wxString& text = m_pOptions->GetOption(optionId);
79        pTextCtrl->ChangeValue(text);
80}
81
82wxString COptionsPage::GetText(int id) const
83{
84        wxTextCtrl* pTextCtrl = wxDynamicCast(FindWindow(id), wxTextCtrl);
85        wxASSERT(pTextCtrl);
86
87        return pTextCtrl->GetValue();
88}
89
90bool COptionsPage::SetText(int id, const wxString& text, bool& failure)
91{
92        wxTextCtrl* pTextCtrl = wxDynamicCast(FindWindow(id), wxTextCtrl);
93        if (!pTextCtrl)
94        {
95                failure = true;
96                return false;
97        }
98
99        pTextCtrl->ChangeValue(text);
100
101        return true;
102}
103
104void COptionsPage::SetRCheck(int id, bool checked, bool& failure)
105{
106        wxRadioButton* pRadioButton = wxDynamicCast(FindWindow(id), wxRadioButton);
107        if (!pRadioButton)
108        {
109                failure = true;
110                return;
111        }
112
113        pRadioButton->SetValue(checked);
114}
115
116bool COptionsPage::GetRCheck(int id) const
117{
118        wxRadioButton* pRadioButton = wxDynamicCast(FindWindow(id), wxRadioButton);
119        wxASSERT(pRadioButton);
120
121        return pRadioButton->GetValue();
122}
123
124void COptionsPage::SetStaticText(int id, const wxString& text, bool& failure)
125{
126        wxStaticText* pStaticText = wxDynamicCast(FindWindow(id), wxStaticText);
127        if (!pStaticText)
128        {
129                failure = true;
130                return;
131        }
132
133        pStaticText->SetLabel(text);
134}
135
136wxString COptionsPage::GetStaticText(int id) const
137{
138        wxStaticText* pStaticText = wxDynamicCast(FindWindow(id), wxStaticText);
139        wxASSERT(pStaticText);
140
141        return pStaticText->GetLabel();
142}
143
144void COptionsPage::ReloadSettings()
145{
146        m_pOwner->LoadSettings();
147}
148
149void COptionsPage::SetOptionFromText(int ctrlId, int optionId)
150{
151        const wxString& value = GetText(ctrlId);
152        m_pOptions->SetOption(optionId, value);
153}
154
155void COptionsPage::SetIntOptionFromText(int ctrlId, int optionId)
156{
157        const wxString& value = GetText(ctrlId);
158
159        long n;
160        wxCHECK_RET(value.ToLong(&n), _T("Some options page did not validate user input!"));
161
162        m_pOptions->SetOption(optionId, n);
163}
164
165void COptionsPage::SetChoice(int id, int selection, bool& failure)
166{
167        if (selection < -1)
168        {
169                failure = true;
170                return;
171        }
172
173        wxChoice* pChoice = wxDynamicCast(FindWindow(id), wxChoice);
174        if (!pChoice)
175        {
176                failure = true;
177                return;
178        }
179
180        if (selection >= (int)pChoice->GetCount())
181        {
182                failure = true;
183                return;
184        }
185
186        pChoice->SetSelection(selection);
187}
188
189int COptionsPage::GetChoice(int id) const
190{
191        wxChoice* pChoice = wxDynamicCast(FindWindow(id), wxChoice);
192        wxASSERT(pChoice);
193        if (!pChoice)
194                return 0;
195
196        return pChoice->GetSelection();
197}
198
199bool COptionsPage::DisplayError(const wxString& controlToFocus, const wxString& error)
200{
201        int id = wxXmlResource::GetXRCID(controlToFocus);
202        if (id == -1)
203                DisplayError(0, error);
204        else
205                DisplayError(FindWindow(id), error);
206
207        return false;
208}
209
210bool COptionsPage::DisplayError(wxWindow* pWnd, const wxString& error)
211{
212        if (pWnd)
213                pWnd->SetFocus();
214
215        wxMessageBoxEx(error, _("Failed to validate settings"), wxICON_EXCLAMATION, this);
216
217        return false;
218}
219
220bool COptionsPage::Display()
221{
222        if (!m_was_selected)
223        {
224                if (!OnDisplayedFirstTime())
225                        return false;
226                m_was_selected = true;
227        }
228        Show();
229
230        return true;
231}
232
233bool COptionsPage::OnDisplayedFirstTime()
234{
235        return true;
236}
Note: See TracBrowser for help on using the repository browser.