1 //////////////////////////////////////////////////////////////////////////////
2 // File:        edit.h
3 // Purpose:     STC test module
4 // Maintainer:  Wyo
5 // Created:     2003-09-01
6 // RCS-ID:      $Id: edit.h 35523 2005-09-16 18:25:44Z ABX $
7 // Copyright:   (c) wxGuide
8 // Licence:     wxWindows licence
9 //////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _EDIT_H_
12 #define _EDIT_H_
13 
14 //----------------------------------------------------------------------------
15 // informations
16 //----------------------------------------------------------------------------
17 
18 
19 //----------------------------------------------------------------------------
20 // headers
21 //----------------------------------------------------------------------------
22 
23 //! wxWidgets headers
24 
25 //! wxWidgets/contrib headers
26 #include "wx/stc/stc.h"  // styled text control
27 
28 //! application headers
29 #include "prefs.h"       // preferences
30 
31 
32 //============================================================================
33 // declarations
34 //============================================================================
35 
36 class EditPrint;
37 class EditProperties;
38 
39 
40 //----------------------------------------------------------------------------
41 //! Edit
42 class Edit: public wxStyledTextCtrl {
43     friend class EditProperties;
44     friend class EditPrint;
45 
46 public:
47     //! constructor
48     Edit (wxWindow *parent, wxWindowID id = wxID_ANY,
49           const wxPoint &pos = wxDefaultPosition,
50           const wxSize &size = wxDefaultSize,
51           long style = wxSUNKEN_BORDER|wxVSCROLL
52          );
53 
54     //! destructor
55     ~Edit ();
56 
57     // event handlers
58     // common
59     void OnSize( wxSizeEvent &event );
60     // edit
61     void OnEditRedo (wxCommandEvent &event);
62     void OnEditUndo (wxCommandEvent &event);
63     void OnEditClear (wxCommandEvent &event);
64     void OnEditCut (wxCommandEvent &event);
65     void OnEditCopy (wxCommandEvent &event);
66     void OnEditPaste (wxCommandEvent &event);
67     // find
68     void OnFind (wxCommandEvent &event);
69     void OnFindNext (wxCommandEvent &event);
70     void OnReplace (wxCommandEvent &event);
71     void OnReplaceNext (wxCommandEvent &event);
72     void OnBraceMatch (wxCommandEvent &event);
73     void OnGoto (wxCommandEvent &event);
74     void OnEditIndentInc (wxCommandEvent &event);
75     void OnEditIndentRed (wxCommandEvent &event);
76     void OnEditSelectAll (wxCommandEvent &event);
77     void OnEditSelectLine (wxCommandEvent &event);
78     //! view
79     void OnHilightLang (wxCommandEvent &event);
80     void OnDisplayEOL (wxCommandEvent &event);
81     void OnIndentGuide (wxCommandEvent &event);
82     void OnLineNumber (wxCommandEvent &event);
83     void OnLongLineOn (wxCommandEvent &event);
84     void OnWhiteSpace (wxCommandEvent &event);
85     void OnFoldToggle (wxCommandEvent &event);
86     void OnSetOverType (wxCommandEvent &event);
87     void OnSetReadOnly (wxCommandEvent &event);
88     void OnWrapmodeOn (wxCommandEvent &event);
89     void OnUseCharset (wxCommandEvent &event);
90     //! extra
91     void OnChangeCase (wxCommandEvent &event);
92     void OnConvertEOL (wxCommandEvent &event);
93     // stc
94     void OnMarginClick (wxStyledTextEvent &event);
95     void OnCharAdded  (wxStyledTextEvent &event);
96 
97     //! language/lexer
98     wxString DeterminePrefs (const wxString &filename);
99     bool InitializePrefs (const wxString &filename);
100     bool UserSettings (const wxString &filename);
GetLanguageInfo()101     LanguageInfo const* GetLanguageInfo () {return m_language;};
102 
103     //! load/save file
104     bool LoadFile ();
105     bool LoadFile (const wxString &filename);
106     bool SaveFile ();
107     bool SaveFile (const wxString &filename);
108     bool Modified ();
GetFilename()109     wxString GetFilename () {return m_filename;};
SetFilename(const wxString & filename)110     void SetFilename (const wxString &filename) {m_filename = filename;};
111 
112 private:
113     // file
114     wxString m_filename;
115 
116     // lanugage properties
117     LanguageInfo const* m_language;
118 
119     // margin variables
120     int m_LineNrID;
121     int m_LineNrMargin;
122     int m_FoldingID;
123     int m_FoldingMargin;
124     int m_DividerID;
125 
126     DECLARE_EVENT_TABLE()
127 };
128 
129 //----------------------------------------------------------------------------
130 //! EditProperties
131 class EditProperties: public wxDialog {
132 
133 public:
134 
135     //! constructor
136     EditProperties (Edit *edit, long style = 0);
137 
138 private:
139 
140 };
141 
142 #if wxUSE_PRINTING_ARCHITECTURE
143 
144 //----------------------------------------------------------------------------
145 //! EditPrint
146 class EditPrint: public wxPrintout {
147 
148 public:
149 
150     //! constructor
151     EditPrint (Edit *edit, wxChar *title = _T(""));
152 
153     //! event handlers
154     bool OnPrintPage (int page);
155     bool OnBeginDocument (int startPage, int endPage);
156 
157     //! print functions
158     bool HasPage (int page);
159     void GetPageInfo (int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
160 
161 private:
162     Edit *m_edit;
163     int m_printed;
164     wxRect m_pageRect;
165     wxRect m_printRect;
166 
167     bool PrintScaling (wxDC *dc);
168 };
169 
170 #endif // wxUSE_PRINTING_ARCHITECTURE
171 
172 #endif // _EDIT_H_
173