~ubuntu-branches/ubuntu/intrepid/tcm/intrepid

« back to all changes in this revision

Viewing changes to src/ui/texteditdialog.c

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2003-07-03 20:08:21 UTC
  • Revision ID: james.westby@ubuntu.com-20030703200821-se4xtqx25e5miczi
Tags: upstream-2.20
ImportĀ upstreamĀ versionĀ 2.20

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
////////////////////////////////////////////////////////////////////////////////
 
2
//
 
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).
 
6
//
 
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.
 
11
//
 
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.
 
16
//
 
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
 
20
// 02111-1307, USA.
 
21
////////////////////////////////////////////////////////////////////////////////
 
22
#include "texteditdialog.h"
 
23
#include "fileselectiondialog.h"
 
24
#include "replacedialog.h"
 
25
#include "menu.h"
 
26
#include "system.h"
 
27
#include <Xm/XmAll.h>
 
28
 
 
29
TextEditDialog::TextEditDialog(Widget w): TextViewDialog(w) {
 
30
        SetReplaceDialog(0);
 
31
}
 
32
 
 
33
void TextEditDialog::Configure() {
 
34
        TextViewDialog::Configure();
 
35
        if (check(GetWidget())) {
 
36
                XtVaSetValues(GetTextWidget(), 
 
37
                        XmNeditable, True,
 
38
                        XmNcursorPositionVisible, True, 0);
 
39
                ManageCancelButton(True);
 
40
                SetOKButtonLabel("Ok");
 
41
                XtManageChild(GetTextWidget());
 
42
                ReplaceDialog *r = new ReplaceDialog(GetWidget());
 
43
                r->Initialize();
 
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);
 
49
                SetReplaceDialog(r);
 
50
        }
 
51
}
 
52
 
 
53
void TextEditDialog::Replace() {
 
54
        GetReplaceDialog()->Popup();
 
55
}
 
56
 
 
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");
 
63
}
 
64
 
 
65
void TextEditDialog::CutCB(Widget, XtPointer cd, XtPointer) {
 
66
        TextEditDialog *t = (TextEditDialog *)cd;
 
67
        t->Cut();
 
68
}
 
69
 
 
70
void TextEditDialog::PasteCB(Widget, XtPointer cd, XtPointer) {
 
71
        TextEditDialog *t = (TextEditDialog *)cd;
 
72
        t->Paste();
 
73
}
 
74
 
 
75
void TextEditDialog::DeleteAllCB(Widget, XtPointer cd, XtPointer) {
 
76
        TextEditDialog *t = (TextEditDialog *)cd;
 
77
        t->DeleteAll();
 
78
}
 
79
 
 
80
void TextEditDialog::ReplaceCB(Widget, XtPointer cd, XtPointer) {
 
81
        TextEditDialog *t = (TextEditDialog *)cd;
 
82
        t->Replace();
 
83
}
 
84
 
 
85
void TextEditDialog::ReplaceNextCB(Widget, XtPointer cd, XtPointer) {
 
86
        TextEditDialog *t = (TextEditDialog *)cd;
 
87
        t->DoFind(2);
 
88
}
 
89
 
 
90
void TextEditDialog::ReplaceAllCB(Widget, XtPointer cd, XtPointer) {
 
91
        TextEditDialog *t = (TextEditDialog *)cd;
 
92
        t->DoFind(3);
 
93
}
 
94
 
 
95
void TextEditDialog::ReplaceFindCB(Widget, XtPointer cd, XtPointer) {
 
96
        TextEditDialog *t = (TextEditDialog *)cd;
 
97
        t->DoFind(4);
 
98
}
 
99
 
 
100
void TextEditDialog::ClearReplaceCB(Widget, XtPointer cd, XtPointer) {
 
101
        TextEditDialog *t = (TextEditDialog *)cd;
 
102
        t->ClearReplace();
 
103
}
 
104
 
 
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);
 
110
        fs->Popup();
 
111
}
 
112
 
 
113
void TextEditDialog::LoadCB(Widget, XtPointer cd, XtPointer) {
 
114
        TextEditDialog *t = (TextEditDialog *)cd;
 
115
        t->Load();
 
116
}
 
117
 
 
118
void TextEditDialog::LoadOKCB(Widget, XtPointer cd, XtPointer) {
 
119
        TextEditDialog *t = (TextEditDialog *)cd;
 
120
        char fname[MAXNAME];
 
121
        t->GetFileSelectionDialog()->GetFileName(fname);
 
122
        (void) t->LoadFile(fname);
 
123
}
 
124
 
 
125
void TextEditDialog::InitMenuItems() {
 
126
        int i = 0;
 
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;
 
138
 
 
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, 
 
152
                0, 0, 1); i++;
 
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;
 
158
 
 
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;
 
167
}