chiark / gitweb /
Import upstream version 5.3.
[mup] / mup / mupmate / Edit.H
CommitLineData
69695f33
MW
1/* Copyright (c) 2006 by Arkkra Enterprises */
2/* All rights reserved */
3
4#ifndef _EDIT_H_
5#define _EDIT_H_
6
7// Classes for Edit menu item off of main toolbar
8
9#include <FL/Fl_Widget.H>
10#include <FL/Fl_Text_Editor.H>
11#include <FL/Fl_Text_Buffer.H>
12#include <FL/Fl_Double_Window.H>
13#include <FL/Fl_Input.H>
14#include <FL/Fl_Int_Input.H>
15#include <FL/Fl_Box.H>
16#include <FL/Fl_Button.H>
17#include <FL/Fl_Round_Button.H>
18#include <FL/Fl_Check_Button.H>
19#include <FL/Fl_Return_Button.H>
20
21
22
23// Class for window that pops up for "Find" or "Replace"
24
25class Find_dialog : public Fl_Double_Window {
26
27friend class Edit; // so it can call FindNext()
28
29public:
30 Find_dialog(void);
31 ~Find_dialog();
32
33 // Callbacks
34 static void FindNext_cb(Fl_Widget *, void * data);
35 static void Replace_cb(Fl_Widget *, void * data);
36 static void ReplaceAll_cb(Fl_Widget *, void * data);
37 static void Cancel_cb(Fl_Widget *, void * data);
38 static void Pattern_cb(Fl_Widget *, void * data);
39 static void change_cb(Fl_Widget *, void * data);
40 static void cursor_change_check(void * data);
41
42 // Returns current search pattern
43 const char * get_pattern(void);
44
45 // Tells class which edit buffer to search in
46 void set_editor(Fl_Text_Editor *);
47
48 // Class instance can be either a Find or a Replace.
49 // These change the personality.
50 void as_Find(void);
51 void as_Replace(void);
52
53 // when not allowed to search/replace
54 void gray_out(void);
55
56private:
57 // Callbacks
58 void FindNext(void);
59 void Replace(void);
60 void ReplaceAll(void);
61 void Cancel(void);
62 void Pattern(void);
63 void change(void);
64
65 // Widgets
66 Fl_Input * pattern_p;
67 Fl_Input * replace_with_p;
68 Fl_Button * replace_p;
69 Fl_Button * replace_all_p;
70 Fl_Check_Button * casematch_p;
71 Fl_Box * direction_p;
72 Fl_Round_Button * up_p;
73 Fl_Round_Button * down_p;
74 Fl_Return_Button * next_p;
75 Fl_Button * cancel_p;
76
77 // The text editor widget we are editing
78 Fl_Text_Editor * editor_p;
79
80 // true if current personality is "Replace," false if "Find."
81 bool is_replace;
82
83 // Where cursor was at last check
84 int last_cursor_position;
85};
86
87
88// Class for window that pops up for Go To
89
90class GoTo_dialog : Fl_Double_Window {
91
92friend class Edit;
93
94public:
95 GoTo_dialog(void);
96 ~GoTo_dialog();
97
98 // Callbacks
99 static void OK_cb(Fl_Widget *, void * data);
100 static void Cancel_cb(Fl_Widget *, void * data);
101
102 // Tells us which editor instance to use
103 void set_editor(Fl_Text_Editor * ed);
104
105 // Initialize contents on GoTo field to the current line number
106 void set_current_line();
107
108private:
109 // Callbacks
110 void OK(void);
111 void Cancel(void);
112
113 // Widgets
114 Fl_Int_Input * linenum_p;
115 Fl_Return_Button * ok_p;
116 Fl_Button * cancel_p;
117 Fl_Text_Editor * editor_p;
118};
119
120
121// Class for Edit Menu from main toolbar
122
123class Edit {
124public:
125 Edit();
126 ~Edit();
127
128 // Callbacks
129 static void Undo_cb(Fl_Widget *, void * data);
130 static void Cut_cb(Fl_Widget *, void * data);
131 static void Copy_cb(Fl_Widget *, void * data);
132 static void Paste_cb(Fl_Widget *, void * data);
133 static void Delete_cb(Fl_Widget *, void * data);
134 static void Find_cb(Fl_Widget *, void * data);
135 static void FindNext_cb(Fl_Widget *, void * data);
136 static void Replace_cb(Fl_Widget *, void * data);
137 static void GoTo_cb(Fl_Widget *, void * data);
138 static void SelectAll_cb(Fl_Widget *, void * data);
139 static void modify_cb(int, int, int, int, const char *, void * data);
140
141 // Tells us which editor instance to use
142 void set_editor(Fl_Text_Editor * ed);
143
144 // true if there is something in the clipboard that can be pasted
145 bool can_paste() { return wrote_to_clipboard; }
146 void set_can_paste();
147
148private:
149 // Callbacks
150 void Undo(void);
151 void Cut(void);
152 void Copy(void);
153 void Paste(void);
154 void Delete(void);
155 void Find(void);
156 void FindNext(void);
157 void Replace(void);
158 void GoTo(void);
159 void SelectAll(void);
160
161 // Widgets
162 Fl_Text_Editor * editor_p;
163 Fl_Text_Buffer * buffer_p;
164 Find_dialog * find_p;
165 GoTo_dialog * goto_p;
166
167 // if wrote something to the cut/copy buffer
168 bool wrote_to_clipboard;
169};
170
171#endif