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