1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
|
/////////////////////////////////////////////////////////////////////////////
// Name: uiaction.cpp
// Purpose: wxUIActionSimulator sample
// Author: Kevin Ollivier
// Modified by:
// Created: 04/01/98
// Copyright: (c) Kevin Ollivier, Steven Lamerton
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWidgets headers)
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#if wxUSE_UIACTIONSIMULATOR
#include "wx/uiaction.h"
#endif
// ----------------------------------------------------------------------------
// resources
// ----------------------------------------------------------------------------
// the application icon (under Windows and OS/2 it is in resources and even
// though we could still include the XPM here it would be unused)
#ifndef wxHAS_IMAGES_IN_RESOURCES
#include "../sample.xpm"
#endif
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// IDs for the controls and the menu commands
enum
{
// menu items
RunSimulation = 1,
SimulateText
};
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
// Define a new application type, each program should derive a class from wxApp
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
#if wxUSE_UIACTIONSIMULATOR
// Define a new frame type: this is going to be our main frame
class MyFrame : public wxFrame
{
public:
// ctor(s)
MyFrame(const wxString& title);
void OnButtonPressed(wxCommandEvent& event);
void OnRunSimulation(wxCommandEvent& event);
void OnSimulateText(wxCommandEvent& event);
void OnExit(wxCommandEvent& WXUNUSED(event)) { Close(); }
private:
wxButton* m_button;
wxTextCtrl* m_text;
wxDECLARE_EVENT_TABLE();
};
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(wxID_ANY, MyFrame::OnButtonPressed)
EVT_MENU(RunSimulation, MyFrame::OnRunSimulation)
EVT_MENU(SimulateText, MyFrame::OnSimulateText)
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
wxEND_EVENT_TABLE()
#endif // wxUSE_UIACTIONSIMULATOR
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// the application class
// ----------------------------------------------------------------------------
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
if ( !wxApp::OnInit() )
return false;
#if wxUSE_UIACTIONSIMULATOR
MyFrame *frame = new MyFrame("wxUIActionSimulator sample application");
frame->Show(true);
return true;
#else // !wxUSE_UIACTIONSIMULATOR
wxLogError("wxUSE_UIACTIONSIMULATOR must be 1 for this sample");
return false;
#endif // wxUSE_UIACTIONSIMULATOR/!wxUSE_UIACTIONSIMULATOR
}
// ----------------------------------------------------------------------------
// main frame
// ----------------------------------------------------------------------------
#if wxUSE_UIACTIONSIMULATOR
// frame constructor
MyFrame::MyFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title)
{
SetIcon(wxICON(sample));
#if wxUSE_MENUS
// create a menu bar
wxMenu *fileMenu = new wxMenu;
fileMenu->Append(wxID_NEW, "&New File...", "Open a new file");
fileMenu->Append(RunSimulation, "&Run Simulation",
"Run predefined UI action simulation");
fileMenu->Append(SimulateText, "Simulate &text input...",
"Enter text to simulate");
fileMenu->AppendSeparator();
fileMenu->Append(wxID_EXIT, "E&xit\tAlt-X", "Quit this program");
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, "&File");
SetMenuBar(menuBar);
#endif // wxUSE_MENUS
wxPanel *panel = new wxPanel(this);
wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
panel->SetSizer(sizer);
m_button = new wxButton(panel, wxID_ANY, "&Button");
sizer->Add(m_button, wxSizerFlags().Centre().Border());
m_text = new wxTextCtrl(panel, wxID_ANY, "",
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE);
sizer->Add(m_text, wxSizerFlags(1).Expand().Border());
}
// event handlers
void MyFrame::OnRunSimulation(wxCommandEvent& WXUNUSED(event))
{
wxUIActionSimulator sim;
// Add some extra distance to take account of window decorations
sim.MouseMove(m_button->GetScreenPosition() + wxPoint(10, 10));
sim.MouseClick(wxMOUSE_BTN_LEFT);
// Process the resulting button event
wxYield();
m_text->SetFocus();
sim.Char('A');
sim.Char('A', wxMOD_SHIFT);
sim.Char(WXK_RETURN);
sim.Char('Z');
sim.Char('Z', wxMOD_SHIFT);
sim.Char(WXK_RETURN);
sim.Text("aAbBcC");
sim.Char(WXK_RETURN);
sim.Text("1 234.57e-8");
sim.Char(WXK_RETURN);
}
void MyFrame::OnSimulateText(wxCommandEvent& WXUNUSED(event))
{
static wxString s_text;
const wxString text = wxGetTextFromUser
(
"Enter text to simulate: ",
"wxUIActionSimulator wxWidgets Sample",
s_text,
this
);
if ( text.empty() )
return;
s_text = text;
wxUIActionSimulator sim;
m_text->SetFocus();
sim.Text(s_text.c_str());
}
void MyFrame::OnButtonPressed(wxCommandEvent& WXUNUSED(event))
{
m_text->AppendText("Button pressed.\n");
}
#endif // wxUSE_UIACTIONSIMULATOR
|