]> git.saurik.com Git - wxWidgets.git/blame - utils/screenshotgen/src/screenshot_main.cpp
remove misleaing mentions of wxEXEC_ASYNC from wxExecute() overloads always executing...
[wxWidgets.git] / utils / screenshotgen / src / screenshot_main.cpp
CommitLineData
0d5eda9c
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: screenshot_main.cpp
f978831f 3// Purpose: Implements the window containing all controls.
0d5eda9c
FM
4// Author: Utensil Candel (UtensilCandel@@gmail.com)
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9// For compilers that support precompilation, includes "wx/wx.h".
10#include "wx/wxprec.h"
11
12#ifdef __BORLANDC__
f978831f 13#pragma hdrstop
0d5eda9c
FM
14#endif
15
f978831f 16// for all others, include the necessary headers wxWidgets headers)
0d5eda9c 17#ifndef WX_PRECOMP
f978831f 18#include "wx/wx.h"
0d5eda9c
FM
19#endif
20
f978831f
BP
21#include "wx/aboutdlg.h"
22#include "wx/dir.h"
4bae10bd 23
0d5eda9c 24#include "screenshot_main.h"
0d5eda9c
FM
25#include "autocapture.h"
26
0d5eda9c 27// ----------------------------------------------------------------------------
4bae10bd 28// ScreenshotFrame
0d5eda9c
FM
29// ----------------------------------------------------------------------------
30
51d48751 31ScreenshotFrame::ScreenshotFrame(wxFrame *frame) : GUIFrame(frame)
0d5eda9c
FM
32{
33#if wxUSE_STATUSBAR
60a2264d 34 statusBar->SetStatusText(_("Welcome to the Automatic Screenshot Generator!"), 0);
0d5eda9c
FM
35#endif
36
60a2264d
FM
37 // set minimum size hints
38 GetSizer()->SetSizeHints(this);
0d5eda9c
FM
39}
40
0d5eda9c 41// ----------------------------------------------------------------------------
4bae10bd 42// ScreenshotFrame - event handlers
0d5eda9c
FM
43// ----------------------------------------------------------------------------
44
4bae10bd 45void ScreenshotFrame::OnClose(wxCloseEvent& WXUNUSED(event))
0d5eda9c
FM
46{
47 Destroy();
48}
49
4bae10bd 50void ScreenshotFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
0d5eda9c
FM
51{
52 Destroy();
53}
54
4bae10bd 55void ScreenshotFrame::OnSeeScreenshots(wxCommandEvent& WXUNUSED(event))
0d5eda9c 56{
17ad109b 57 wxString defaultDir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath();
0d5eda9c 58
17ad109b
FM
59 if (wxFileName::DirExists(defaultDir))
60 wxLaunchDefaultBrowser(defaultDir);
61 else
62 wxMessageBox(_("There isn't any screenshots yet."));
0d5eda9c
FM
63}
64
4bae10bd 65void ScreenshotFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
0d5eda9c 66{
4bae10bd
FM
67 wxAboutDialogInfo info;
68 info.SetName(_("Automatic Screenshot Generator"));
69 info.SetVersion(_("1.0"));
416fddd3 70 info.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for use in wxWidgets documentation."));
4bae10bd
FM
71 info.SetCopyright(_T("(C) 2008 Utensil Candel"));
72
73 wxAboutBox(info);
0d5eda9c
FM
74}
75
4bae10bd 76void ScreenshotFrame::OnCaptureFullScreen(wxCommandEvent& WXUNUSED(event))
0d5eda9c
FM
77{
78 // Create a DC for the whole screen area
79 wxScreenDC dcScreen;
80
81 // Get the size of the screenDC
82 wxCoord screenWidth, screenHeight;
83 dcScreen.GetSize(&screenWidth, &screenHeight);
84
ecba92ec 85 wxBitmap fullscreen = AutoCaptureMechanism::Capture(0, 0, screenWidth, screenHeight);
0d5eda9c 86
17ad109b 87 AutoCaptureMechanism::Save(fullscreen, _T("fullscreen"));
0d5eda9c 88
ecba92ec 89 wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n ")
17ad109b 90 + AutoCaptureMechanism::GetDefaultDirectoryAbsPath() + _T("fullscreen.png"),
ecba92ec 91 _("Full screen capture"), wxICON_INFORMATION|wxOK, this);
0d5eda9c
FM
92}
93
4bae10bd 94void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event))
0d5eda9c 95{
17ad109b 96 wxString dir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath();
0d5eda9c 97
60a2264d 98 // check if there are other screenshots taken before
0d5eda9c
FM
99 if (wxFileName::DirExists(dir))
100 {
6cd1aa9d 101 int choice = wxMessageBox(_("It seems that you have already generated some screenshots.\n\nClick YES to delete them all (recommended) or NO to preserve them.\nClick CANCEL to cancel this auto-capture operation."),
60a2264d 102 _("Delete existing screenshots?"),
0d5eda9c
FM
103 wxYES_NO|wxCANCEL|wxICON_QUESTION, this);
104 switch(choice)
105 {
60a2264d 106 case wxYES:
0d5eda9c
FM
107 {
108 wxArrayString files;
8da17c86 109 wxDir::GetAllFiles(dir, &files, _T("*.png"), wxDIR_FILES);
0d5eda9c 110
60a2264d 111 // remove all PNG files from the screenshots folder
0d5eda9c
FM
112 int n = files.GetCount();
113 for (int i = 0; i < n; ++i)
114 wxRemoveFile(files[i]);
115 }
116 break;
117
60a2264d
FM
118 case wxNO: break;
119 case wxCANCEL: return;
0d5eda9c
FM
120 }
121 }
122
60a2264d
FM
123 // proceed with the automatic screenshot capture
124
0d5eda9c
FM
125 this->Maximize();
126
127 AutoCaptureMechanism auto_cap(m_notebook1);
128
129 auto_cap.RegisterControl(m_button1);
130 auto_cap.RegisterControl(m_staticText1);
131 auto_cap.RegisterControl(m_checkBox1, AJ_Union);
132 auto_cap.RegisterControl(m_checkBox2, AJ_UnionEnd);
133 auto_cap.RegisterControl(m_radioBtn1, AJ_Union);
134 auto_cap.RegisterControl(m_radioBtn2, AJ_UnionEnd);
135 auto_cap.RegisterControl(m_bpButton1);
136 auto_cap.RegisterControl(m_bitmap1);
8da17c86 137 auto_cap.RegisterControl(m_gauge1, _T("wxGauge"));
0d5eda9c
FM
138 auto_cap.RegisterControl(m_slider1);
139 auto_cap.RegisterControl(m_toggleBtn1, AJ_Union);
140 auto_cap.RegisterControl(m_toggleBtn2, AJ_UnionEnd);
8da17c86 141 auto_cap.RegisterControl(m_hyperlink1, _T("wxHyperlinkCtrl"));
0d5eda9c
FM
142 auto_cap.RegisterControl(m_spinCtrl1, AJ_RegionAdjust);
143 auto_cap.RegisterControl(m_spinBtn1);
144 auto_cap.RegisterControl(m_scrollBar1);
145
146 auto_cap.RegisterPageTurn();
147
148 auto_cap.RegisterControl(m_checkList1);
149 auto_cap.RegisterControl(m_listBox1);
150 auto_cap.RegisterControl(m_radioBox1);
151 auto_cap.RegisterControl(m_staticBox1);
152 auto_cap.RegisterControl(m_treeCtrl1);
8da17c86 153 auto_cap.RegisterControl(m_listCtrl1, _T("wxListCtrl"));
0d5eda9c
FM
154
155 auto_cap.RegisterControl(m_animationCtrl1);
8da17c86 156 auto_cap.RegisterControl(m_collPane1, _T("wxCollapsiblePane"), AJ_Union);
0d5eda9c
FM
157 auto_cap.RegisterControl(m_collPane2, AJ_UnionEnd);
158
159 auto_cap.RegisterPageTurn();
160
161 auto_cap.RegisterControl(m_textCtrl1, AJ_Union);
162 auto_cap.RegisterControl(m_textCtrl2, AJ_UnionEnd);
163 auto_cap.RegisterControl(m_richText1);
164
165 auto_cap.RegisterPageTurn();
166
8da17c86
FM
167 auto_cap.RegisterControl(m_colourPicker1, _T("wxColourPickerCtrl"));
168 auto_cap.RegisterControl(m_fontPicker1, _T("wxFontPickerCtrl"));
169 auto_cap.RegisterControl(m_filePicker1, _T("wxFilePickerCtrl"), AJ_RegionAdjust);
170 auto_cap.RegisterControl(m_calendar1, _T("wxCalendarCtrl"), AJ_RegionAdjust);
171 auto_cap.RegisterControl(m_datePicker1, _T("wxDatePickerCtrl"));
172 auto_cap.RegisterControl(m_genericDirCtrl1, _T("wxGenericDirCtrl"));
173 auto_cap.RegisterControl(m_dirPicker1, _T("wxDirPickerCtrl"), AJ_RegionAdjust);
0d5eda9c
FM
174
175 auto_cap.RegisterPageTurn();
176
177 auto_cap.RegisterControl(m_choice1, AJ_Dropdown);
178 auto_cap.RegisterControl(m_comboBox1, AJ_Dropdown);
179 auto_cap.RegisterControl(m_bmpComboBox1, AJ_Dropdown);
180 auto_cap.RegisterControl(m_ownerDrawnComboBox1, AJ_Dropdown);
181 auto_cap.RegisterControl(m_comboCtrl1, AJ_Dropdown|AJ_Union);
182 auto_cap.RegisterControl(m_comboCtrl2, AJ_Dropdown|AJ_UnionEnd);
183
184 auto_cap.CaptureAll();
185
60a2264d
FM
186 wxMessageBox(_("All screenshots were generated successfully in the folder:\n ") + dir,
187 _("Success"), wxOK|wxICON_INFORMATION, this);
0d5eda9c 188}