1 /////////////////////////////////////////////////////////////////////////////
2 // Name: screenshot_main.cpp
3 // Purpose: Implements the window containing all controls.
4 // Author: Utensil Candel (UtensilCandel@@gmail.com)
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
9 // For compilers that support precompilation, includes "wx/wx.h".
10 #include "wx/wxprec.h"
16 // for all others, include the necessary headers wxWidgets headers)
21 #include "wx/aboutdlg.h"
24 #include "screenshot_main.h"
25 #include "autocapture.h"
27 // ----------------------------------------------------------------------------
29 // ----------------------------------------------------------------------------
31 ScreenshotFrame::ScreenshotFrame(wxFrame
*frame
) : GUIFrame(frame
)
34 statusBar
->SetStatusText(_("Welcome to the Automatic Screenshot Generator!"), 0);
37 // set minimum size hints
38 GetSizer()->SetSizeHints(this);
41 // ----------------------------------------------------------------------------
42 // ScreenshotFrame - event handlers
43 // ----------------------------------------------------------------------------
45 void ScreenshotFrame::OnClose(wxCloseEvent
& WXUNUSED(event
))
50 void ScreenshotFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
55 void ScreenshotFrame::OnSeeScreenshots(wxCommandEvent
& WXUNUSED(event
))
57 wxFileName defaultDir
= wxFileName::DirName(GetDefaultDirectory());
58 defaultDir
.MakeAbsolute();
60 // Check if defaultDir already existed
61 if (!defaultDir
.DirExists())
64 // Use the native file browser to open defaultDir
65 wxLaunchDefaultBrowser(defaultDir
.GetFullPath());
68 void ScreenshotFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
70 wxAboutDialogInfo info
;
71 info
.SetName(_("Automatic Screenshot Generator"));
72 info
.SetVersion(_("1.0"));
73 info
.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for use in wxWidgets documentation."));
74 info
.SetCopyright(_T("(C) 2008 Utensil Candel"));
79 void ScreenshotFrame::OnCaptureFullScreen(wxCommandEvent
& WXUNUSED(event
))
81 // Create a DC for the whole screen area
84 // Get the size of the screenDC
85 wxCoord screenWidth
, screenHeight
;
86 dcScreen
.GetSize(&screenWidth
, &screenHeight
);
88 const wxString fullscreen_filename
= GetDefaultDirectoryAbsPath() + _T("fullscreen.png");
90 wxBitmap fullscreen
= AutoCaptureMechanism::Capture(0, 0, screenWidth
, screenHeight
);
92 fullscreen
.SaveFile(fullscreen_filename
, wxBITMAP_TYPE_PNG
);
94 wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n ")
95 + fullscreen_filename
,
96 _("Full screen capture"), wxICON_INFORMATION
|wxOK
, this);
99 void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent
& WXUNUSED(event
))
101 wxString dir
= GetDefaultDirectoryAbsPath();
103 // check if there are other screenshots taken before
104 if (wxFileName::DirExists(dir
))
106 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."),
107 _("Delete existing screenshots?"),
108 wxYES_NO
|wxCANCEL
|wxICON_QUESTION
, this);
114 wxDir::GetAllFiles(dir
, &files
, wxT("*.png"), wxDIR_FILES
);
116 // remove all PNG files from the screenshots folder
117 int n
= files
.GetCount();
118 for (int i
= 0; i
< n
; ++i
)
119 wxRemoveFile(files
[i
]);
124 case wxCANCEL
: return;
128 // proceed with the automatic screenshot capture
132 AutoCaptureMechanism
auto_cap(m_notebook1
);
134 auto_cap
.RegisterControl(m_button1
);
135 auto_cap
.RegisterControl(m_staticText1
);
136 auto_cap
.RegisterControl(m_checkBox1
, AJ_Union
);
137 auto_cap
.RegisterControl(m_checkBox2
, AJ_UnionEnd
);
138 auto_cap
.RegisterControl(m_radioBtn1
, AJ_Union
);
139 auto_cap
.RegisterControl(m_radioBtn2
, AJ_UnionEnd
);
140 auto_cap
.RegisterControl(m_bpButton1
);
141 auto_cap
.RegisterControl(m_bitmap1
);
142 auto_cap
.RegisterControl(m_gauge1
, wxT("wxGauge"));
143 auto_cap
.RegisterControl(m_slider1
);
144 auto_cap
.RegisterControl(m_toggleBtn1
, AJ_Union
);
145 auto_cap
.RegisterControl(m_toggleBtn2
, AJ_UnionEnd
);
146 auto_cap
.RegisterControl(m_hyperlink1
, wxT("wxHyperlinkCtrl"));
147 auto_cap
.RegisterControl(m_spinCtrl1
, AJ_RegionAdjust
);
148 auto_cap
.RegisterControl(m_spinBtn1
);
149 auto_cap
.RegisterControl(m_scrollBar1
);
151 auto_cap
.RegisterPageTurn();
153 auto_cap
.RegisterControl(m_checkList1
);
154 auto_cap
.RegisterControl(m_listBox1
);
155 auto_cap
.RegisterControl(m_radioBox1
);
156 auto_cap
.RegisterControl(m_staticBox1
);
157 auto_cap
.RegisterControl(m_treeCtrl1
);
158 auto_cap
.RegisterControl(m_listCtrl1
, wxT("wxListCtrl"));
160 auto_cap
.RegisterControl(m_animationCtrl1
);
161 auto_cap
.RegisterControl(m_collPane1
, wxT("wxCollapsiblePane"), AJ_Union
);
162 auto_cap
.RegisterControl(m_collPane2
, AJ_UnionEnd
);
164 auto_cap
.RegisterPageTurn();
166 auto_cap
.RegisterControl(m_textCtrl1
, AJ_Union
);
167 auto_cap
.RegisterControl(m_textCtrl2
, AJ_UnionEnd
);
168 auto_cap
.RegisterControl(m_richText1
);
170 auto_cap
.RegisterPageTurn();
172 auto_cap
.RegisterControl(m_colourPicker1
, wxT("wxColourPickerCtrl"));
173 auto_cap
.RegisterControl(m_fontPicker1
, wxT("wxFontPickerCtrl"));
174 auto_cap
.RegisterControl(m_filePicker1
, wxT("wxFilePickerCtrl"), AJ_RegionAdjust
);
175 auto_cap
.RegisterControl(m_calendar1
, wxT("wxCalendarCtrl"), AJ_RegionAdjust
);
176 auto_cap
.RegisterControl(m_datePicker1
, wxT("wxDatePickerCtrl"));
177 auto_cap
.RegisterControl(m_genericDirCtrl1
, wxT("wxGenericDirCtrl"));
178 auto_cap
.RegisterControl(m_dirPicker1
, wxT("wxDirPickerCtrl"), AJ_RegionAdjust
);
180 auto_cap
.RegisterPageTurn();
182 auto_cap
.RegisterControl(m_choice1
, AJ_Dropdown
);
183 auto_cap
.RegisterControl(m_comboBox1
, AJ_Dropdown
);
184 auto_cap
.RegisterControl(m_bmpComboBox1
, AJ_Dropdown
);
185 auto_cap
.RegisterControl(m_ownerDrawnComboBox1
, AJ_Dropdown
);
186 auto_cap
.RegisterControl(m_comboCtrl1
, AJ_Dropdown
|AJ_Union
);
187 auto_cap
.RegisterControl(m_comboCtrl2
, AJ_Dropdown
|AJ_UnionEnd
);
189 auto_cap
.CaptureAll();
191 wxMessageBox(_("All screenshots were generated successfully in the folder:\n ") + dir
,
192 _("Success"), wxOK
|wxICON_INFORMATION
, this);