Accelerators implemented for wxMotif; some wxComboBox stupidities cured

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@995 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1998-11-12 22:47:51 +00:00
parent 892dbe9961
commit 8aa04e8bf1
21 changed files with 514 additions and 130 deletions

View File

@@ -14,6 +14,8 @@
# pragma interface "wxexthlp.h"
#endif
#include "wx/helpbase.h"
/// Name for map file.
#define WXEXTHELP_MAPFILE "wxhelp.map"
/// Path separator.

View File

@@ -18,6 +18,7 @@
#include "wx/object.h"
#include "wx/string.h"
#include "wx/event.h"
class WXDLLEXPORT wxAcceleratorTable;
@@ -31,11 +32,15 @@ class WXDLLEXPORT wxAcceleratorTable;
#define wxACCEL_SHIFT 0x04
// Hold no key down
#define wxACCEL_NONE 0x00
#define wxACCEL_NORMAL 0x00
class WXDLLEXPORT wxAcceleratorEntry
{
public:
wxAcceleratorEntry(const wxAcceleratorEntry& entry)
{
m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command;
}
wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0)
{
m_flags = flags; m_keyCode = keyCode; m_command = cmd;
@@ -48,6 +53,15 @@ public:
inline int GetKeyCode() const { return m_keyCode; }
inline int GetCommand() const { return m_command; }
void operator = (const wxAcceleratorEntry& entry)
{
m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command;
}
// Implementation use only
bool MatchesEvent(const wxKeyEvent& event) const;
public:
int m_flags;
int m_keyCode; // ASCII or virtual keycode
int m_command; // Command id to generate
@@ -72,6 +86,10 @@ public:
inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; }
bool Ok() const;
// Implementation only
int GetCount() const;
wxAcceleratorEntry* GetEntries() const;
};
WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable;

View File

@@ -107,6 +107,14 @@ class WXDLLEXPORT wxApp: public wxEvtHandler
// Creates a log object
virtual wxLog* CreateLogTarget();
// Motif implementation.
// Processes an X event.
virtual void ProcessXEvent(WXEvent* event);
// Returns TRUE if an accelerator has been processed
virtual bool CheckForAccelerator(WXEvent* event);
public:
// Will always be set to the appropriate, main-style values.
int argc;

View File

@@ -28,6 +28,7 @@ class WXDLLEXPORT wxComboBox: public wxChoice
public:
inline wxComboBox() {}
~wxComboBox();
inline wxComboBox(wxWindow *parent, wxWindowID id,
const wxString& value = wxEmptyString,
@@ -50,8 +51,20 @@ class WXDLLEXPORT wxComboBox: public wxChoice
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr);
// List functions: see wxChoice
virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
// List functions
virtual void Append(const wxString& item);
virtual void Delete(int n);
virtual void Clear();
virtual int GetSelection() const ;
virtual void SetSelection(int n);
virtual int FindString(const wxString& s) const;
virtual wxString GetString(int n) const ;
virtual wxString GetStringSelection() const ;
virtual bool SetStringSelection(const wxString& sel);
virtual inline int Number() const { return m_noStrings; }
// Text field functions
virtual wxString GetValue() const ;
virtual void SetValue(const wxString& value);
@@ -66,10 +79,6 @@ class WXDLLEXPORT wxComboBox: public wxChoice
virtual long GetLastPosition() const ;
virtual void Replace(long from, long to, const wxString& value);
virtual void Remove(long from, long to);
virtual void SetSelection(int n)
{
wxChoice::SetSelection(n);
}
virtual void SetSelection(long from, long to);
virtual void SetEditable(bool editable);
@@ -77,6 +86,8 @@ class WXDLLEXPORT wxComboBox: public wxChoice
virtual void ChangeFont(bool keepOriginalSize = TRUE);
virtual void ChangeBackgroundColour();
virtual void ChangeForegroundColour();
WXWidget GetTopWidget() const { return m_mainWidget; }
WXWidget GetMainWidget() const { return m_mainWidget; }
};
#endif

View File

@@ -66,7 +66,7 @@ protected:
int m_viewSize;
int m_objectSize;
DECLARE_EVENT_TABLE()
// DECLARE_EVENT_TABLE()
};
#endif

View File

@@ -539,6 +539,20 @@ public:
// Generates a paint event
virtual void DoPaint();
// How to implement accelerators. If we find a key event,
// translate to wxWindows wxKeyEvent form. Find a widget for the window.
// Now find a wxWindow for the widget. If there isn't one, go up the widget hierarchy
// trying to find one. Once one is found, call ProcessAccelerator for the
// window. If it returns TRUE (processed the event), skip the X event,
// otherwise carry on up the wxWindows window hierarchy calling ProcessAccelerator.
// If all return FALSE, process the X event as normal.
// Eventually we can implement OnCharHook the same way, but concentrate on accelerators
// for now.
// ProcessAccelerator must look at the current accelerator table, and try to find
// what menu id or window (beneath it) has this ID. Then construct an appropriate command
// event and send it.
virtual bool ProcessAccelerator(wxKeyEvent& event);
////////////////////////////////////////////////////////////////////////
//// PROTECTED DATA
protected:

View File

@@ -31,7 +31,7 @@ class WXDLLEXPORT wxAcceleratorTable;
#define wxACCEL_SHIFT 0x04
// Hold no key down
#define wxACCEL_NONE 0x00
#define wxACCEL_NORMAL 0x00
class WXDLLEXPORT wxAcceleratorEntry
{

View File

@@ -50,7 +50,17 @@ class WXDLLEXPORT wxComboBox: public wxChoice
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr);
// List functions: see wxChoice
// List functions
virtual void Append(const wxString& item);
virtual void Delete(int n);
virtual void Clear();
virtual int GetSelection() const ;
virtual void SetSelection(int n);
virtual int FindString(const wxString& s) const;
virtual wxString GetString(int n) const ;
virtual wxString GetStringSelection() const ;
virtual bool SetStringSelection(const wxString& sel);
virtual inline int Number() const { return m_noStrings; }
// Text field functions
virtual wxString GetValue() const ;
@@ -66,10 +76,6 @@ class WXDLLEXPORT wxComboBox: public wxChoice
virtual long GetLastPosition() const ;
virtual void Replace(long from, long to, const wxString& value);
virtual void Remove(long from, long to);
virtual void SetSelection(int n)
{
wxChoice::SetSelection(n);
}
virtual void SetSelection(long from, long to);
virtual void SetEditable(bool editable);
};