wxWidgets/utils/emulator/src/emulator.h
2005-09-23 12:56:45 +00:00

165 lines
4.4 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: emulator.h
// Purpose: wxX11-based PDA emulator classes
// Author: Julian Smart
// Modified by:
// Created: 2002-03-10
// RCS-ID: $Id$
// Copyright: (c) wxWidgets team
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_EMULATOR_H_
#define _WX_EMULATOR_H_
#define wxEMULATOR_VERSION 0.1
// Information about the emulator decorations
class wxEmulatorInfo: public wxObject
{
public:
wxEmulatorInfo() { Init(); }
wxEmulatorInfo(const wxEmulatorInfo& info) : wxObject() { Init(); Copy(info); }
void operator= (const wxEmulatorInfo& info) { Copy(info); }
void Copy(const wxEmulatorInfo& info);
// Initialisation
void Init();
// Loads bitmaps
bool Load(const wxString& appDir);
// Emulator config filename
wxString m_emulatorFilename;
// Emulator title
wxString m_emulatorTitle;
// Emulator description
wxString m_emulatorDescription;
// The offset from the top-left of the main emulator
// bitmap and the virtual screen (where Xnest is
// positioned)
wxPoint m_emulatorScreenPosition;
// The emulated screen size, e.g. 320x240
wxSize m_emulatorScreenSize;
// The emulated device size. This is ignored
// if there is a background bitmap
wxSize m_emulatorDeviceSize;
// The bitmap used for drawing the main emulator
// decorations
wxBitmap m_emulatorBackgroundBitmap;
wxString m_emulatorBackgroundBitmapName;
// The intended background colour (for filling in
// areas of the window not covered by the bitmap)
wxColour m_emulatorBackgroundColour;
// TODO: an array of bitmaps and ids for custom buttons
};
// Emulator app class
class wxEmulatorContainer;
class wxEmulatorApp : public wxApp
{
public:
wxEmulatorApp();
virtual bool OnInit();
// Load the specified emulator
bool LoadEmulator(const wxString& appDir);
// Get app dir
wxString GetAppDir() const { return m_appDir; }
// Prepend the current app program directory to the name
wxString GetFullAppPath(const wxString& filename) const;
public:
wxEmulatorInfo m_emulatorInfo;
#ifdef __WXX11__
wxAdoptedWindow* m_xnestWindow;
#else
wxWindow* m_xnestWindow;
#endif
wxEmulatorContainer* m_containerWindow;
wxString m_appDir;
wxString m_displayNumber;
long m_xnestPID;
};
// The container for the Xnest window. The decorations
// will be drawn on this window.
class wxEmulatorContainer: public wxWindow
{
public:
wxEmulatorContainer(wxWindow* parent, wxWindowID id);
void DoResize();
void OnSize(wxSizeEvent& event);
void OnPaint(wxPaintEvent& event);
void OnEraseBackground(wxEraseEvent& event);
DECLARE_CLASS(wxEmulatorContainer)
DECLARE_EVENT_TABLE()
};
// Frame class
class wxEmulatorFrame : public wxFrame
{
public:
// ctor(s)
wxEmulatorFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
// event handlers
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent& event);
private:
// any class wishing to process wxWidgets events must use this macro
DECLARE_EVENT_TABLE()
};
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// IDs for the controls and the menu commands
enum
{
// menu items
Emulator_Quit = 1,
// it is important for the id corresponding to the "About" command to have
// this standard value as otherwise it won't be handled properly under Mac
// (where it is special and put into the "Apple" menu)
Emulator_About = wxID_ABOUT
};
// Returns the image type, or -1, determined from the extension.
wxBitmapType wxDetermineImageType(const wxString& filename);
// Convert a colour to a 6-digit hex string
wxString wxColourToHexString(const wxColour& col);
// Convert 6-digit hex string to a colour
wxColour wxHexStringToColour(const wxString& hex);
// Find the absolute path where this application has been run from.
wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxString& appVariableName);
#endif
// _WX_EMULATOR_H_