1
////////////////////////////////////////////////////////////////////////////////
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
5
// Author: Frank Dehne (frank@cs.vu.nl).
7
// TCM is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// TCM is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with TCM; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
////////////////////////////////////////////////////////////////////////////////
22
#include "texteditdialog.h"
23
#include "fileselectiondialog.h"
24
#include "replacedialog.h"
29
TextEditDialog::TextEditDialog(Widget w): TextViewDialog(w) {
33
void TextEditDialog::Configure() {
34
TextViewDialog::Configure();
35
if (check(GetWidget())) {
36
XtVaSetValues(GetTextWidget(),
38
XmNcursorPositionVisible, True, 0);
39
ManageCancelButton(True);
40
SetOKButtonLabel("Ok");
41
XtManageChild(GetTextWidget());
42
ReplaceDialog *r = new ReplaceDialog(GetWidget());
44
r->SetTitle("Replace text in dialog");
45
r->SetOKCallback(ReplaceFindCB, this);
46
r->SetReplaceCallback(ReplaceNextCB, this);
47
r->SetApplyCallback(ReplaceAllCB, this);
48
r->SetHelpCallback(ClearReplaceCB, this);
53
void TextEditDialog::Replace() {
54
GetReplaceDialog()->Popup();
57
void TextEditDialog::ClearReplace() {
58
int pos = XmTextGetLastPosition(GetTextWidget());
59
XmTextSetHighlight(GetTextWidget(), 0, pos, XmHIGHLIGHT_NORMAL);
60
GetReplaceDialog()->SetTextString("");
61
GetReplaceDialog()->SetReplaceText("");
62
SetStatus("action: Clear highlight");
65
void TextEditDialog::CutCB(Widget, XtPointer cd, XtPointer) {
66
TextEditDialog *t = (TextEditDialog *)cd;
70
void TextEditDialog::PasteCB(Widget, XtPointer cd, XtPointer) {
71
TextEditDialog *t = (TextEditDialog *)cd;
75
void TextEditDialog::DeleteAllCB(Widget, XtPointer cd, XtPointer) {
76
TextEditDialog *t = (TextEditDialog *)cd;
80
void TextEditDialog::ReplaceCB(Widget, XtPointer cd, XtPointer) {
81
TextEditDialog *t = (TextEditDialog *)cd;
85
void TextEditDialog::ReplaceNextCB(Widget, XtPointer cd, XtPointer) {
86
TextEditDialog *t = (TextEditDialog *)cd;
90
void TextEditDialog::ReplaceAllCB(Widget, XtPointer cd, XtPointer) {
91
TextEditDialog *t = (TextEditDialog *)cd;
95
void TextEditDialog::ReplaceFindCB(Widget, XtPointer cd, XtPointer) {
96
TextEditDialog *t = (TextEditDialog *)cd;
100
void TextEditDialog::ClearReplaceCB(Widget, XtPointer cd, XtPointer) {
101
TextEditDialog *t = (TextEditDialog *)cd;
105
void TextEditDialog::Load() {
106
FileSelectionDialog *fs = GetFileSelectionDialog();
107
fs->SetTitle("Load text from file into dialog");
108
fs->SetDefaultFile("");
109
fs->SetOKCallback(LoadOKCB, this);
113
void TextEditDialog::LoadCB(Widget, XtPointer cd, XtPointer) {
114
TextEditDialog *t = (TextEditDialog *)cd;
118
void TextEditDialog::LoadOKCB(Widget, XtPointer cd, XtPointer) {
119
TextEditDialog *t = (TextEditDialog *)cd;
121
t->GetFileSelectionDialog()->GetFileName(fname);
122
(void) t->LoadFile(fname);
125
void TextEditDialog::InitMenuItems() {
127
fileItems = new MenuItem[24]; i = 0;
128
fileItems[i] = MenuItem(
129
"Load...", MenuItem::PUSHBUTTON, 'L', "Ctrl<Key>L", "Ctrl-L",
130
TextEditDialog::LoadCB, (XtPointer)this, 0, 0, 1); i++;
131
fileItems[i] = MenuItem(
132
"Save As...", MenuItem::PUSHBUTTON, 'S', "Ctrl<Key>S", "Ctrl-S",
133
TextViewDialog::SaveAsCB, (XtPointer)this, 0, 0, 1); i++;
134
fileItems[i] = MenuItem(
135
"Print...", MenuItem::PUSHBUTTON, 'P', "Ctrl<Key>P", "Ctrl-P",
136
TextViewDialog::PrintCB, (XtPointer)this, 0, 0, 1); i++;
137
fileItems[i] = MenuItem::NUL;
139
editItems = new MenuItem[24]; i = 0;
140
editItems[i] = MenuItem(
141
"Cut", MenuItem::PUSHBUTTON, 'C', "Ctrl<Key>X", "Ctrl-X",
142
TextEditDialog::CutCB, (XtPointer)this, 0, 0, 1); i++;
143
editItems[i] = MenuItem(
144
"Copy", MenuItem::PUSHBUTTON, 'o', "Ctrl<Key>C", "Ctrl-C",
145
TextEditDialog::CopyCB, (XtPointer)this, 0, 0, 1); i++;
146
editItems[i] = MenuItem(
147
"Paste", MenuItem::PUSHBUTTON, 'P', "Ctrl<Key>Y", "Ctrl-Y",
148
TextEditDialog::PasteCB, (XtPointer)this, 0, 0, 1); i++;
149
editItems[i] = MenuItem(
150
"Clear Selection", MenuItem::PUSHBUTTON, 'S', "Ctrl<Key>B",
151
"Ctrl-B", TextEditDialog::ClearSelectionCB, (XtPointer)this,
153
editItems[i] = MenuItem("", MenuItem::SEPARATOR); i++;
154
editItems[i] = MenuItem(
155
"Delete All", MenuItem::PUSHBUTTON, 'D', "Ctrl<Key>D", "Ctrl-D",
156
TextEditDialog::DeleteAllCB, (XtPointer)this, 0, 0, 1); i++;
157
editItems[i] = MenuItem::NUL;
159
searchItems = new MenuItem[24]; i = 0;
160
searchItems[i] = MenuItem(
161
"Find...", MenuItem::PUSHBUTTON, 'F', "Ctrl<Key>F", "Ctrl-F",
162
TextViewDialog::FindCB, (XtPointer)this, 0, 0, 1); i++;
163
searchItems[i] = MenuItem(
164
"Replace...", MenuItem::PUSHBUTTON, 'R', "Ctrl<Key>Z", "Ctrl-Z",
165
TextEditDialog::ReplaceCB, (XtPointer)this, 0, 0, 1); i++;
166
searchItems[i] = MenuItem::NUL;