~efargaspro/+junk/codeblocks-16.01-release

1 by damienlmoore at gmail
Code::Blocks 16.01
1
///////////////////////////////////////////////////////////////////////////////
2
// Name:        steevent.h
3
// Purpose:     wxSTEditorEvent
4
// Author:      John Labenski
5
// Modified by:
6
// Created:     11/05/2002
7
// Copyright:   (c) John Labenski
8
// Licence:     wxWidgets licence
9
///////////////////////////////////////////////////////////////////////////////
10
11
/// @file steevent.h
12
/// @brief wxSTEditorEvent, a wxCommandEvent derived class for wxSTEditor events and wxEVT_ST* declarations.
13
14
#ifndef _STEEVENT_H_
15
#define _STEEVENT_H_
16
17
#include <wx/defs.h>
18
#include <wx/event.h>
19
20
#include "wx/stedit/stedefs.h"
21
22
class WXDLLIMPEXP_FWD_STEDIT wxSTEditor;
23
24
//-----------------------------------------------------------------------------
25
/// @class wxSTEditorEvent
26
/// @brief A specialized wxCommandEvent for use with the wxSTEditor.
27
//-----------------------------------------------------------------------------
28
class WXDLLIMPEXP_STEDIT wxSTEditorEvent : public wxCommandEvent
29
{
30
public:
31
    wxSTEditorEvent() : wxCommandEvent() {}
32
    wxSTEditorEvent(const wxSTEditorEvent& event) : wxCommandEvent(event) {}
33
    wxSTEditorEvent( int id, wxEventType type, wxObject* obj,
34
                     int stateChange, int stateValues,
35
                     const wxString& fileName );
36
37
    virtual ~wxSTEditorEvent() {}
38
39
    /// Has the state of the editor changed see STE_StateType for different states.
40
    /// Can OR states together to see if any of them have changed.
41
    bool HasStateChange(int stateChange) const         { return (GetStateChange() & stateChange) != 0; }
42
    bool GetStateValue(STE_StateType stateValue) const { return (GetStateValues() & stateValue)  != 0; }
43
44
    /// Get the changes of the wxSTEditor::GetState() for the wxEVT_STEDITOR_STATE_CHANGED.
45
    int  GetStateChange() const          { return GetInt(); }
46
    /// Get the wxSTEditor::GetState() for any wxEVT_STEDITOR_* events.
47
    int  GetStateValues() const          { return int(GetExtraLong()); }
48
    void SetStateChange(int stateChange) { SetInt(stateChange); }
49
    void SetStateValues(int stateValues) { SetExtraLong(stateValues); }
50
51
    ///. Get the filename of the wxStEditor for wxEVT_STEDITOR_* events.
52
    wxFileName GetFileName() const                 { return wxFileName(GetString()); }
53
    void SetFileName( const wxFileName& fileName ) { SetString( fileName.GetFullPath() ); }
54
55
    wxSTEditor* GetEditor() const;
56
57
    // implementation
58
    virtual wxEvent *Clone() const { return new wxSTEditorEvent(*this); }
59
60
private:
61
    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSTEditorEvent)
62
};
63
64
// --------------------------------------------------------------------------
65
/// @name wxSTEditor wxEvent types
66
67
BEGIN_DECLARE_EVENT_TYPES()
68
/// @{
69
    /// wxSTEditor created, event.GetEventObject() is the editor, use to setup after constructor
70
    /// and at the end of the call to wxSTEditor::CreateOptions(...).
71
    ///   (this is a wxCommandEvent)
72
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEDITOR_CREATED, 0)
73
    /// wxSTEditorSplitter created, event.GetEventObject() is the splitter, use to setup after constructor.
74
    ///   (this is a wxCommandEvent)
75
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STSPLITTER_CREATED, 0)
76
    /// wxSTEditorNotebook created, event.GetEventObject() is the notebook, use to setup after constructor.
77
    ///   (this is a wxCommandEvent)
78
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STNOTEBOOK_CREATED, 0)
79
80
    /// The state of the editor has changed see STE_StateType for the types of changes.
81
    /// An event to update the gui only when items change to avoid UpdateUI overkill.
82
    ///   (this is a wxSTEditorEvent)
83
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEDITOR_STATE_CHANGED, 0)
84
    /// This wxSTEditor has the focus now, (serves to pass EVT_SET_FOCUS to parents).
85
    ///   (this is a wxSTEditorEvent)
86
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEDITOR_SET_FOCUS, 0)
87
    /// The popup menu for the wxSTEditor is about to be shown, maybe you want to update it?
88
    ///   (this is a wxSTEditorEvent)
89
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEDITOR_POPUPMENU, 0)
90
91
    /// The margin has been double clicked in the same line.
92
    ///   (this is a wxStyledTextEvent)
93
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEDITOR_MARGINDCLICK, 0)
94
95
    /// A wxSTEditor is about to be created for the wxSTEditorSplitter.
96
    /// event.GetEventObject() is the parent wxSTEditorSplitter.
97
    /// You can set the event.SetEventObject() to a "new wxSTEditor" or a
98
    /// subclassed one of your own and this editor will be used instead.
99
    /// Make sure that the parent of your editor is the splitter
100
    ///    (ie. the original event.GetEventObject())
101
    /// event.GetInt() is the preferred id (probably wxID_ANY)
102
    ///   (this is a wxCommandEvent)
103
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STSPLITTER_CREATE_EDITOR, 0)
104
105
    /// A wxSTEditorSplitter is about to be created for the wxSTEditorNotebook.
106
    /// event.GetEventObject() is the parent wxSTEditorNotebook.
107
    /// You can set the event.SetEventObject() to a "new wxSTEditorSplitter" or a
108
    /// subclassed one of your own and this splitter will be used instead.
109
    /// Make sure that the parent of your splitter is the notebook
110
    ///    (ie. the original event.GetEventObject())
111
    /// event.GetInt() is the preferred id (probably wxID_ANY)
112
    ///   (this is a wxCommandEvent)
113
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STNOTEBOOK_CREATE_SPLITTER, 0)
114
115
    /// The user has clicked on one of the splitter buttons in the
116
    ///   wxSTEditor. This event is received by the splitter and then
117
    ///   the splitting occurs. The event.GetInt() is enum wxSPLIT_VERTICAL
118
    ///   or wxSPLIT_HORIZONTAL.
119
    ///   (this is a wxCommandEvent)
120
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STSPLITTER_SPLIT_BEGIN, 0)
121
122
    /// The wxNotebook doesn't always send enough events to follow it's state.
123
    ///  This event is sent whenever the selection or page count changes
124
    ///  eg. When all the pages are deleted, gtk doesn't notify you that the
125
    ///  selection is now -1
126
    ///   (this is a wxNotebookEvent)
127
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STNOTEBOOK_PAGE_CHANGED, 0)
128
129
    /// Enter has been pressed on the last line of the wxSTEditorShell.
130
    ///   event.GetString() contains the contents of the line.
131
    ///   (this is a wxSTEditorEvent)
132
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STESHELL_ENTER, 0)
133
134
    /// New find-all results are in a wxSTEditorFindResultsEditor.
135
    ///   event.GetEventObject() is the wxSTEditorFindResultsEditor with the results.
136
    /// This event is sent since the parents of the wxSTEditorFindResultsEditor,
137
    ///    be they a notebook, splitter, separate dialog, know how to show it.
138
    ///   (this is a wxCommandEvent)
139
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEFIND_RESULTS_NEED_SHOWN, 0)
140
141
    /// Go to the file and line in an editor, probably from a previous find all.
142
    ///   event.GetString() can be parsed using wxSTEditorFindReplaceData::ParseFindAllString()
143
    ///   event.GetExtraLong() is the index into the wxSTEditorFindReplaceData::GetFindAllStrings().
144
    ///   event.GetEventObject() is the wxSTEditorFindResultsEditor who's results was selected.
145
    ///   (this is a wxFindDialogEvent)
146
    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STEDIT, wxEVT_STEFIND_GOTO, 0)
147
148
/// @}
149
END_DECLARE_EVENT_TYPES()
150
151
152
#if !defined(wxStyledTextEventHandler) // not in < wx29
153
typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
154
155
#define wxStyledTextEventHandler( func ) \
156
    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxStyledTextEventFunction, &func)
157
    //wxEVENT_HANDLER_CAST( wxStyledTextEventFunction, func )
158
#endif // !defined(wxStyledTextEventHandler)
159
160
typedef void (wxEvtHandler::*wxSTEditorEventFunction)(wxSTEditorEvent&);
161
162
#define wxSTEditorEventHandler(func) \
163
    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSTEditorEventFunction, &func)
164
#define StyledTextEventHandler(func) \
165
    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxStyledTextEventFunction, &func)
166
167
#define wx__DECLARE_STEEVT(evt, id, fn)  wx__DECLARE_EVT1( evt, id, wxSTEditorEventHandler(fn))
168
#define wx__DECLARE_STEVT(evt, id, fn)   wx__DECLARE_EVT1( evt, id, StyledTextEventHandler(fn))
169
170
// --------------------------------------------------------------------------
171
/// @name wxSTEditor static EVT_ST*() wxEvent handlers.
172
// --------------------------------------------------------------------------
173
/// @{
174
175
#define EVT_STEDITOR_CREATED(id, fn)            EVT_COMMAND(id, wxEVT_STEDITOR_CREATED,   fn)
176
#define EVT_STSPLITTER_CREATED(id, fn)          EVT_COMMAND(id, wxEVT_STSPLITTER_CREATED, fn)
177
#define EVT_STNOTEBOOK_CREATED(id, fn)          EVT_COMMAND(id, wxEVT_STNOTEBOOK_CREATED, fn)
178
179
#define EVT_STEDITOR_STATE_CHANGED(id, fn)      wx__DECLARE_STEEVT(wxEVT_STEDITOR_STATE_CHANGED, id, fn)
180
#define EVT_STEDITOR_SET_FOCUS(id, fn)          wx__DECLARE_STEEVT(wxEVT_STEDITOR_SET_FOCUS,     id, fn)
181
#define EVT_STEDITOR_POPUPMENU(id, fn)          wx__DECLARE_STEEVT(wxEVT_STEDITOR_POPUPMENU,     id, fn)
182
183
#define EVT_STEDITOR_MARGINDCLICK(id, fn)       wx__DECLARE_STEVT(wxEVT_STEDITOR_MARGINDCLICK,   id, fn)
184
185
#define EVT_STSPLITTER_CREATE_EDITOR(id, fn)    EVT_COMMAND(id, wxEVT_STSPLITTER_CREATE_EDITOR,   fn)
186
#define EVT_STNOTEBOOK_CREATE_SPLITTER(id, fn)  EVT_COMMAND(id, wxEVT_STNOTEBOOK_CREATE_SPLITTER, fn)
187
188
#define EVT_STNOTEBOOK_PAGE_CHANGED(id, fn)     wx__DECLARE_EVT1(wxEVT_STNOTEBOOK_PAGE_CHANGED, id, wxNotebookEventHandler(fn))
189
190
#define EVT_STSPLITTER_SPLIT_BEGIN(id, fn)      wx__DECLARE_EVT1(wxEVT_STSPLITTER_SPLIT_BEGIN,  id, wxCommandEventHandler(fn))
191
192
#define EVT_STESHELL_ENTER(id, fn)              wx__DECLARE_STEEVT(wxEVT_STESHELL_ENTER, id, fn)
193
194
#define EVT_STEFIND_RESULTS_NEED_SHOWN(id, fn)  wx__DECLARE_EVT1(wxEVT_STEFIND_RESULTS_NEED_SHOWN, id, wxCommandEventHandler(fn))
195
#define EVT_STEFIND_GOTO(id, fn)                wx__DECLARE_EVT1(wxEVT_STEFIND_GOTO,               id, wxFindDialogEventHandler(fn))
196
197
/// @}
198
199
#endif  // _STEEVENT_H_