1/////////////////////////////////////////////////////////////////////////////// 2// Name: emulator.h 3// Purpose: wxX11-based PDA emulator classes 4// Author: Julian Smart 5// Modified by: 6// Created: 2002-03-10 7// RCS-ID: $Id: emulator.h 35650 2005-09-23 12:56:45Z MR $ 8// Copyright: (c) wxWidgets team 9// Licence: wxWindows licence 10/////////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_EMULATOR_H_ 13#define _WX_EMULATOR_H_ 14 15#define wxEMULATOR_VERSION 0.1 16 17// Information about the emulator decorations 18class wxEmulatorInfo: public wxObject 19{ 20public: 21 22 wxEmulatorInfo() { Init(); } 23 wxEmulatorInfo(const wxEmulatorInfo& info) : wxObject() { Init(); Copy(info); } 24 25 void operator= (const wxEmulatorInfo& info) { Copy(info); } 26 void Copy(const wxEmulatorInfo& info); 27 28 // Initialisation 29 void Init(); 30 31 // Loads bitmaps 32 bool Load(const wxString& appDir); 33 34 // Emulator config filename 35 wxString m_emulatorFilename; 36 37 // Emulator title 38 wxString m_emulatorTitle; 39 40 // Emulator description 41 wxString m_emulatorDescription; 42 43 // The offset from the top-left of the main emulator 44 // bitmap and the virtual screen (where Xnest is 45 // positioned) 46 wxPoint m_emulatorScreenPosition; 47 48 // The emulated screen size, e.g. 320x240 49 wxSize m_emulatorScreenSize; 50 51 // The emulated device size. This is ignored 52 // if there is a background bitmap 53 wxSize m_emulatorDeviceSize; 54 55 // The bitmap used for drawing the main emulator 56 // decorations 57 wxBitmap m_emulatorBackgroundBitmap; 58 wxString m_emulatorBackgroundBitmapName; 59 60 // The intended background colour (for filling in 61 // areas of the window not covered by the bitmap) 62 wxColour m_emulatorBackgroundColour; 63 64 // TODO: an array of bitmaps and ids for custom buttons 65}; 66 67// Emulator app class 68class wxEmulatorContainer; 69class wxEmulatorApp : public wxApp 70{ 71public: 72 wxEmulatorApp(); 73 virtual bool OnInit(); 74 75 // Load the specified emulator 76 bool LoadEmulator(const wxString& appDir); 77 78 // Get app dir 79 wxString GetAppDir() const { return m_appDir; } 80 81 // Prepend the current app program directory to the name 82 wxString GetFullAppPath(const wxString& filename) const; 83 84public: 85 86 wxEmulatorInfo m_emulatorInfo; 87#ifdef __WXX11__ 88 wxAdoptedWindow* m_xnestWindow; 89#else 90 wxWindow* m_xnestWindow; 91#endif 92 wxEmulatorContainer* m_containerWindow; 93 wxString m_appDir; 94 wxString m_displayNumber; 95 long m_xnestPID; 96}; 97 98// The container for the Xnest window. The decorations 99// will be drawn on this window. 100class wxEmulatorContainer: public wxWindow 101{ 102public: 103 104 wxEmulatorContainer(wxWindow* parent, wxWindowID id); 105 106 void DoResize(); 107 108 void OnSize(wxSizeEvent& event); 109 void OnPaint(wxPaintEvent& event); 110 void OnEraseBackground(wxEraseEvent& event); 111 112DECLARE_CLASS(wxEmulatorContainer) 113DECLARE_EVENT_TABLE() 114 115}; 116 117// Frame class 118class wxEmulatorFrame : public wxFrame 119{ 120public: 121 // ctor(s) 122 wxEmulatorFrame(const wxString& title, const wxPoint& pos, const wxSize& size); 123 124 // event handlers 125 void OnQuit(wxCommandEvent& event); 126 void OnAbout(wxCommandEvent& event); 127 void OnCloseWindow(wxCloseEvent& event); 128 129private: 130 // any class wishing to process wxWidgets events must use this macro 131 DECLARE_EVENT_TABLE() 132}; 133 134// ---------------------------------------------------------------------------- 135// constants 136// ---------------------------------------------------------------------------- 137 138// IDs for the controls and the menu commands 139enum 140{ 141 // menu items 142 Emulator_Quit = 1, 143 144 // it is important for the id corresponding to the "About" command to have 145 // this standard value as otherwise it won't be handled properly under Mac 146 // (where it is special and put into the "Apple" menu) 147 Emulator_About = wxID_ABOUT 148}; 149 150// Returns the image type, or -1, determined from the extension. 151wxBitmapType wxDetermineImageType(const wxString& filename); 152 153// Convert a colour to a 6-digit hex string 154wxString wxColourToHexString(const wxColour& col); 155 156// Convert 6-digit hex string to a colour 157wxColour wxHexStringToColour(const wxString& hex); 158 159// Find the absolute path where this application has been run from. 160wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxString& appVariableName); 161 162#endif 163 // _WX_EMULATOR_H_ 164 165