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

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

First release to xenial

File size: 6.2 KB
Line 
1#include <filezilla.h>
2
3#include "aboutdialog.h"
4#include "buildinfo.h"
5#include "xrc_helper.h"
6#include "Options.h"
7
8#include <misc.h>
9
10#include <wx/hyperlink.h>
11#include <wx/clipbrd.h>
12
13BEGIN_EVENT_TABLE(CAboutDialog, wxDialogEx)
14EVT_BUTTON(XRCID("wxID_OK"), CAboutDialog::OnOK)
15EVT_BUTTON(XRCID("ID_COPY"), CAboutDialog::OnCopy)
16END_EVENT_TABLE()
17
18bool CAboutDialog::Create(wxWindow* parent)
19{
20        if (!Load(parent, _T("ID_ABOUT")))
21                return false;
22
23        xrc_call(*this, "ID_URL", &wxHyperlinkCtrl::SetLabel, _T("https://filezilla-project.org/"));
24        xrc_call(*this, "ID_COPYRIGHT", &wxStaticText::SetLabel, _T("Copyright (C) 2004-2015  Tim Kosse"));
25
26        wxString version = CBuildInfo::GetVersion();
27        if (CBuildInfo::GetBuildType() == _T("nightly"))
28                version += _T("-nightly");
29        if (!SetChildLabel(XRCID("ID_VERSION"), version))
30                return false;
31
32        wxString const host = CBuildInfo::GetHostname();
33        if (host.empty()) {
34                xrc_call(*this, "ID_HOST", &wxStaticText::Hide);
35                xrc_call(*this, "ID_HOST_DESC", &wxStaticText::Hide);
36        }
37        else {
38                xrc_call(*this, "ID_HOST", &wxStaticText::SetLabel, host);
39        }
40
41        wxString const build = CBuildInfo::GetBuildSystem();
42        if (build.empty()) {
43                xrc_call(*this, "ID_BUILD", &wxStaticText::Hide);
44                xrc_call(*this, "ID_BUILD_DESC", &wxStaticText::Hide);
45        }
46        else {
47                xrc_call(*this, "ID_BUILD", &wxStaticText::SetLabel, build);
48        }
49
50        if (!SetChildLabel(XRCID("ID_BUILDDATE"), CBuildInfo::GetBuildDateString()))
51                return false;
52
53        if (!SetChildLabel(XRCID("ID_COMPILEDWITH"), CBuildInfo::GetCompiler(), 200))
54                return false;
55
56        wxString compilerFlags = CBuildInfo::GetCompilerFlags();
57        if (compilerFlags.empty()) {
58                xrc_call(*this, "ID_CFLAGS", &wxStaticText::Hide);
59                xrc_call(*this, "ID_CFLAGS_DESC", &wxStaticText::Hide);
60        }
61        else {
62                WrapText(this, compilerFlags, 250);
63                xrc_call(*this, "ID_CFLAGS", &wxStaticText::SetLabel, compilerFlags);
64        }
65
66        xrc_call(*this, "ID_VER_WX", &wxStaticText::SetLabel, GetDependencyVersion(dependency::wxwidgets));
67        xrc_call(*this, "ID_VER_GNUTLS", &wxStaticText::SetLabel, GetDependencyVersion(dependency::gnutls));
68        xrc_call(*this, "ID_VER_SQLITE", &wxStaticText::SetLabel, GetDependencyVersion(dependency::sqlite));
69
70        wxString const os = wxGetOsDescription();
71        if (os.empty()) {
72                xrc_call(*this, "ID_SYSTEM_NAME", &wxStaticText::Hide);
73                xrc_call(*this, "ID_SYSTEM_NAME_DESC", &wxStaticText::Hide);
74        }
75        else {
76                xrc_call(*this, "ID_SYSTEM_NAME", &wxStaticText::SetLabel, os);
77        }
78
79        int major, minor;
80        if (GetRealOsVersion(major, minor)) {
81                wxString osVersion = wxString::Format(_T("%d.%d"), major, minor);
82                int fakeMajor, fakeMinor;
83                if (wxGetOsVersion(&fakeMajor, &fakeMinor) != wxOS_UNKNOWN && (fakeMajor != major || fakeMinor != minor)) {
84                        osVersion += _T(" ");
85                        osVersion += wxString::Format(_("(app-compat is set to %d.%d)"), fakeMajor, fakeMinor);
86                }
87                xrc_call(*this, "ID_SYSTEM_VER", &wxStaticText::SetLabel, osVersion);
88        }
89        else {
90                xrc_call(*this, "ID_SYSTEM_VER", &wxStaticText::Hide);
91                xrc_call(*this, "ID_SYSTEM_VER_DESC", &wxStaticText::Hide);
92        }
93
94#ifdef __WXMSW__
95        if (::wxIsPlatform64Bit())
96                xrc_call(*this, "ID_SYSTEM_PLATFORM", &wxStaticText::SetLabel, _("64-bit system"));
97        else
98                xrc_call(*this, "ID_SYSTEM_PLATFORM", &wxStaticText::SetLabel, _("32-bit system"));
99#else
100        xrc_call(*this, "ID_SYSTEM_PLATFORM", &wxStaticText::Hide);
101        xrc_call(*this, "ID_SYSTEM_PLATFORM_DESC", &wxStaticText::Hide);
102#endif
103
104        wxString cpuCaps = CBuildInfo::GetCPUCaps(' ');
105        if (!cpuCaps.empty()) {
106                WrapText(this, cpuCaps, 250);
107                xrc_call(*this, "ID_SYSTEM_CPU", &wxStaticText::SetLabel, cpuCaps);
108        }
109        else {
110                xrc_call(*this, "ID_SYSTEM_CPU_DESC", &wxStaticText::Hide);
111                xrc_call(*this, "ID_SYSTEM_CPU", &wxStaticText::Hide);
112        }
113
114        xrc_call(*this, "ID_SYSTEM_SETTINGS_DIR", &wxStaticText::SetLabel, COptions::Get()->GetOption(OPTION_DEFAULT_SETTINGSDIR));
115
116        GetSizer()->Fit(this);
117        GetSizer()->SetSizeHints(this);
118
119        return true;
120}
121
122void CAboutDialog::OnOK(wxCommandEvent&)
123{
124        EndModal(wxID_OK);
125}
126
127void CAboutDialog::OnCopy(wxCommandEvent&)
128{
129        wxString text = _T("FileZilla Client\n");
130        text += _T("----------------\n\n");
131
132        text += _T("Version:          ") + CBuildInfo::GetVersion();
133        if (CBuildInfo::GetBuildType() == _T("nightly"))
134                text += _T("-nightly");
135        text += '\n';
136
137        text += _T("\nBuild information:\n");
138
139        wxString host = CBuildInfo::GetHostname();
140        if (!host.empty())
141                text += _T("  Compiled for:   ") + host + _T("\n");
142
143        wxString build = CBuildInfo::GetBuildSystem();
144        if (!build.empty())
145                text += _T("  Compiled on:    ") + build + _T("\n");
146
147        text += _T("  Build date:     ") + CBuildInfo::GetBuildDateString() + _T("\n");
148
149        text += _T("  Compiled with:  ") + CBuildInfo::GetCompiler() + _T("\n");
150
151        wxString compilerFlags = CBuildInfo::GetCompilerFlags();
152        if (!compilerFlags.empty())
153                text += _T("  Compiler flags: ") + compilerFlags + _T("\n");
154
155        text += _T("\nLinked against:\n");
156        for (int i = 0; i < dependency::count; ++i) {
157                text += wxString::Format(_T("  % -15s %s\n"),
158                        GetDependencyName(dependency::type(i)) + _T(":"),
159                        GetDependencyVersion(dependency::type(i)));
160        }
161
162        text += _T("\nOperating system:\n");
163        wxString os = wxGetOsDescription();
164        if (!os.empty())
165                text += _T("  Name:           ") + os + _T("\n");
166
167        int major, minor;
168        if (GetRealOsVersion(major, minor)) {
169                wxString version = wxString::Format(_T("%d.%d"), major, minor);
170                int fakeMajor, fakeMinor;
171                if (wxGetOsVersion(&fakeMajor, &fakeMinor) != wxOS_UNKNOWN && (fakeMajor != major || fakeMinor != minor))
172                {
173                        version += _T(" ");
174                        version += wxString::Format(_("(app-compat is set to %d.%d)"), fakeMajor, fakeMinor);
175                }
176                text += wxString::Format(_T("  Version:        %s\n"), version);
177        }
178
179#ifdef __WXMSW__
180        if (::wxIsPlatform64Bit())
181                text += _T("  Platform:       64-bit system\n");
182        else
183                text += _T("  Platform:       32-bit system\n");
184#endif
185
186        wxString cpuCaps = CBuildInfo::GetCPUCaps(' ');
187        if (!cpuCaps.empty()) {
188                text += _T("  CPU features:   ") + cpuCaps + _T("\n");
189        }
190
191        text += _T("  Settings dir:   ") + COptions::Get()->GetOption(OPTION_DEFAULT_SETTINGSDIR) + _T("\n");
192
193#ifdef __WXMSW__
194        text.Replace(_T("\n"), _T("\r\n"));
195#endif
196
197        if (!wxTheClipboard->Open()) {
198                wxMessageBoxEx(_("Could not open clipboard"), _("Could not copy data"), wxICON_EXCLAMATION);
199                return;
200        }
201
202        wxTheClipboard->SetData(new wxTextDataObject(text));
203        wxTheClipboard->Flush();
204        wxTheClipboard->Close();
205}
Note: See TracBrowser for help on using the repository browser.