]> git.saurik.com Git - wxWidgets.git/blobdiff - 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
index 3555bed5c061a4a2c26c608361677c385fa1364d..d7305e8266aa8bb121fdaba8334586cf1ad7e427 100644 (file)
 #include "wx/dir.h"
 
 #include "screenshot_main.h"
-#include "ctrlmaskout.h"
 #include "autocapture.h"
 
-#include "bitmaps/play.xpm"
-#include "bitmaps/stop.xpm"
-
-
 // ----------------------------------------------------------------------------
 // ScreenshotFrame
 // ----------------------------------------------------------------------------
@@ -39,87 +34,10 @@ ScreenshotFrame::ScreenshotFrame(wxFrame *frame) : GUIFrame(frame)
     statusBar->SetStatusText(_("Welcome to the Automatic Screenshot Generator!"), 0);
 #endif
 
-    // We will hold one ctrlmaskout during the whole life time of the main frame
-    m_maskout = new CtrlMaskOut();
-
-    // At the begining, we are not specifying the rect region
-    capturingRect = false;
-
-    // Do some further customization on some controls generated by wxFormBuilder
-    InitFBControls();
-}
-
-ScreenshotFrame::~ScreenshotFrame()
-{
-    delete m_maskout;
-}
-
-/*
-    Do some further customization on some controls.
-
-    NB: under wxGTK for the radio button "unchecked" to be unchecked, it's
-        important to put the wxRB_GROUP style on the first wxRadioButton
-        (the one "checked") and no flags on the second one.
-*/
-void ScreenshotFrame::InitFBControls()
-{
-    m_scrollBar1->SetScrollbar(50, 1, 100, 1);
-
-    // Do the default selection for wxComboBox
-    m_comboBox1->Select(0);
-
-    // To look better under gtk
-#ifdef __WXGTK__
-    m_comboBox1->Delete(4);
-#endif
-
-    // Add a root and some nodes for wxTreeCtrl
-    wxTreeItemId root = m_treeCtrl1->AddRoot(_("wxTreeCtrl"));
-    m_treeCtrl1->AppendItem(root, _("Node1"));
-    wxTreeItemId node2 = m_treeCtrl1->AppendItem(root, _("Node2"));
-    m_treeCtrl1->AppendItem(node2, _("Node3"));
-    m_treeCtrl1->ExpandAll();
-
-    // Add items into wxListCtrl
-    m_listCtrl1->InsertColumn(0, "Names");
-    m_listCtrl1->InsertColumn(1, "Values");
-    for(long index = 0; index < 5; index++) {
-        m_listCtrl1->InsertItem( index, wxString::Format(_("Item%d"),index));
-        m_listCtrl1->SetItem(index, 1, wxString::Format("%d", index));
-    }
-
-    // Init file and dir pickers
-    wxString file, dir;
-#if defined(__WXMSW__)
-    file = "C:\\Windows\\explorer.exe";
-    dir = "C:\\Windows";
-#else
-    file = "/bin/bash";
-    dir = "/home";
-#endif
-    m_filePicker1->SetPath(file);
-    m_dirPicker1->SetPath(dir);
-
-    // Check the first item in wxCheckListBox
-    m_checkList1->Check(0);
-
-    // Load richtext.xml into wxRichtextCtrl
-    m_richText1->LoadFile(_T("richtext.xml"));
-    //m_richText1->ShowPosition(335);
-
-    // select first page in the main notebook ctrl
-    m_notebook1->ChangeSelection(0);
-
     // set minimum size hints
     GetSizer()->SetSizeHints(this);
-
-    // add bitmaps to the menus
-    m_menuCapRect->SetBitmap( wxIcon(play_xpm) );
-    m_menuEndCapRect->SetBitmap( wxIcon(stop_xpm) );
 }
 
-
-
 // ----------------------------------------------------------------------------
 // ScreenshotFrame - event handlers
 // ----------------------------------------------------------------------------
@@ -136,15 +54,12 @@ void ScreenshotFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 
 void ScreenshotFrame::OnSeeScreenshots(wxCommandEvent& WXUNUSED(event))
 {
-    wxFileName defaultDir = wxFileName::DirName(m_maskout->GetDefaultDirectory());
-    defaultDir.MakeAbsolute();
-
-    // Check if defaultDir already existed
-    if (!defaultDir.DirExists())
-        defaultDir.Mkdir();
+    wxString defaultDir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath();
 
-    // Use the native file browser to open defaultDir
-    wxLaunchDefaultBrowser(defaultDir.GetFullPath());
+    if (wxFileName::DirExists(defaultDir))
+        wxLaunchDefaultBrowser(defaultDir);
+    else
+        wxMessageBox(_("There isn't any screenshots yet."));
 }
 
 void ScreenshotFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
@@ -153,7 +68,7 @@ void ScreenshotFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
     info.SetName(_("Automatic Screenshot Generator"));
     info.SetVersion(_("1.0"));
     info.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for use in wxWidgets documentation."));
-    info.SetCopyright(_T("(C) 2008 Utensil Candel"));
+    info.SetCopyright(wxT("(C) 2008 Utensil Candel"));
 
     wxAboutBox(info);
 }
@@ -167,79 +82,19 @@ void ScreenshotFrame::OnCaptureFullScreen(wxCommandEvent& WXUNUSED(event))
     wxCoord screenWidth, screenHeight;
     dcScreen.GetSize(&screenWidth, &screenHeight);
 
-    m_maskout->Capture(0, 0, screenWidth, screenHeight, _T("fullscreen"));
+    wxBitmap fullscreen(1, 1);
+    AutoCaptureMechanism::Capture(&fullscreen, 0, 0, screenWidth, screenHeight);
 
-    // Inform the user
-    wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n  ") +
-                 m_maskout->GetDefaultDirectoryAbsPath() + wxFileName::GetPathSeparator() + "fullscreen.png",
-                 _("Full screen capture"), wxICON_INFORMATION|wxOK, this);
-}
-
-void ScreenshotFrame::OnCaptureRect(wxCommandEvent& WXUNUSED(event))
-{
-    capturingRect = true;
-    wxMenuBar * menubar = this->GetMenuBar();
-    menubar->FindItem(idMenuCapRect)->Enable(false);
-    menubar->FindItem(idMenuEndCapRect)->Enable(true);
-
-    wxWindow * thePage = m_notebook1->GetPage(m_notebook1->GetSelection());
-
-    thePage->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout);
-    thePage->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout);
-    thePage->Connect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout);
-}
-
-void ScreenshotFrame::OnEndCaptureRect(wxCommandEvent& WXUNUSED(event))
-{
-    capturingRect = false;
-    wxMenuBar * menubar = this->GetMenuBar();
-    menubar->FindItem(idMenuCapRect)->Enable(true);
-    menubar->FindItem(idMenuEndCapRect)->Enable(false);
-
-    wxWindow * thePage = m_notebook1->GetPage(m_notebook1->GetSelection());
-
-    thePage->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout);
-    thePage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout);
-    thePage->Disconnect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout);
-}
-
-void ScreenshotFrame::OnNotebookPageChanging(wxNotebookEvent& event)
-{
-    if (!capturingRect)
-    {
-        event.Skip();
-        return;
-    }
-
-    wxWindow * thePage = m_notebook1->GetPage(event.GetOldSelection());
-
-    thePage->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout);
-    thePage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout);
-    thePage->Disconnect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout);
+    AutoCaptureMechanism::Save(&fullscreen, wxT("fullscreen"));
 
-    event.Skip();
-}
-
-void ScreenshotFrame::OnNotebookPageChanged(wxNotebookEvent& event)
-{
-    if (!capturingRect)
-    {
-        event.Skip();
-        return;
-    }
-
-    wxWindow *thePage = m_notebook1->GetPage(event.GetSelection());
-
-    thePage->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout);
-    thePage->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout);
-    thePage->Connect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout);
-
-    event.Skip();
+    wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n  ")
+                + AutoCaptureMechanism::GetDefaultDirectoryAbsPath() + wxT("fullscreen.png"),
+                 _("Full screen capture"), wxICON_INFORMATION|wxOK, this);
 }
 
 void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event))
 {
-    wxString dir = m_maskout->GetDefaultDirectoryAbsPath();
+    wxString dir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath();
 
     // check if there are other screenshots taken before
     if (wxFileName::DirExists(dir))