summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-12-22 18:24:31 (UTC)
committer llornkcor <llornkcor>2002-12-22 18:24:31 (UTC)
commit3ae485ccb47ca618bc00d96a0e81c978a1cfbdaf (patch) (unidiff)
treef4a50457221d593f258d2f3f3d55c7b47a7b976d
parentc82ed38520b4038678ab0ab0c9f0ba147d8791ea (diff)
downloadopie-3ae485ccb47ca618bc00d96a0e81c978a1cfbdaf.zip
opie-3ae485ccb47ca618bc00d96a0e81c978a1cfbdaf.tar.gz
opie-3ae485ccb47ca618bc00d96a0e81c978a1cfbdaf.tar.bz2
use ofontselector, and temp fix for dialog crash
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/tinykate/libkate/view/kateview.cpp2
-rw-r--r--noncore/apps/tinykate/libkate/view/kateviewdialog.cpp37
-rw-r--r--noncore/apps/tinykate/libkate/view/kateviewdialog.h2
3 files changed, 30 insertions, 11 deletions
diff --git a/noncore/apps/tinykate/libkate/view/kateview.cpp b/noncore/apps/tinykate/libkate/view/kateview.cpp
index 6453458..63e941f 100644
--- a/noncore/apps/tinykate/libkate/view/kateview.cpp
+++ b/noncore/apps/tinykate/libkate/view/kateview.cpp
@@ -1,2923 +1,2923 @@
1/*************************************************************************** 1/***************************************************************************
2 kateview.cpp - description 2 kateview.cpp - description
3 ------------------- 3 -------------------
4 begin : Mon Jan 15 2001 4 begin : Mon Jan 15 2001
5 copyright : (C) 2001 by Christoph "Crossfire" Cullmann 5 copyright : (C) 2001 by Christoph "Crossfire" Cullmann
6 (C) 2002 by Joseph Wenninger 6 (C) 2002 by Joseph Wenninger
7 email : crossfire@babylon2k.de 7 email : crossfire@babylon2k.de
8 jowenn@kde.org 8 jowenn@kde.org
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19 19
20/* 20/*
21 Copyright (C) 1998, 1999 Jochen Wilhelmy 21 Copyright (C) 1998, 1999 Jochen Wilhelmy
22 digisnap@cs.tu-berlin.de 22 digisnap@cs.tu-berlin.de
23 23
24 This library is free software; you can redistribute it and/or 24 This library is free software; you can redistribute it and/or
25 modify it under the terms of the GNU Library General Public 25 modify it under the terms of the GNU Library General Public
26 License as published by the Free Software Foundation; either 26 License as published by the Free Software Foundation; either
27 version 2 of the License, or (at your option) any later version. 27 version 2 of the License, or (at your option) any later version.
28 28
29 This library is distributed in the hope that it will be useful, 29 This library is distributed in the hope that it will be useful,
30 but WITHOUT ANY WARRANTY; without even the implied warranty of 30 but WITHOUT ANY WARRANTY; without even the implied warranty of
31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
32 Library General Public License for more details. 32 Library General Public License for more details.
33 33
34 You should have received a copy of the GNU Library General Public License 34 You should have received a copy of the GNU Library General Public License
35 along with this library; see the file COPYING.LIB. If not, write to 35 along with this library; see the file COPYING.LIB. If not, write to
36 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 36 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
37 Boston, MA 02111-1307, USA. 37 Boston, MA 02111-1307, USA.
38*/ 38*/
39 39
40 40
41 41
42#include "kateview.h" 42#include "kateview.h"
43 43
44#include "../document/katedocument.h" 44#include "../document/katedocument.h"
45#include "../document/katecmd.h" 45#include "../document/katecmd.h"
46#include "../document/katehighlight.h" 46#include "../document/katehighlight.h"
47#include "kateviewdialog.h" 47#include "kateviewdialog.h"
48#include "../document/katedialogs.h" 48#include "../document/katedialogs.h"
49 49
50#include <qfocusdata.h> 50#include <qfocusdata.h>
51#include <kdebug.h> 51#include <kdebug.h>
52#include <kapplication.h> 52#include <kapplication.h>
53#include <qscrollbar.h> 53#include <qscrollbar.h>
54#include <qiodevice.h> 54#include <qiodevice.h>
55#include <qpopupmenu.h> 55#include <qpopupmenu.h>
56#include <kpopupmenu.h> 56#include <kpopupmenu.h>
57#include <qkeycode.h> 57#include <qkeycode.h>
58#include <qintdict.h> 58#include <qintdict.h>
59#include <kconfig.h> 59#include <kconfig.h>
60#include <qfont.h> 60#include <qfont.h>
61#include <qpainter.h> 61#include <qpainter.h>
62#include <qpixmap.h> 62#include <qpixmap.h>
63#include <qfileinfo.h> 63#include <qfileinfo.h>
64#include <qfile.h> 64#include <qfile.h>
65#include <qevent.h> 65#include <qevent.h>
66#include <qdir.h> 66#include <qdir.h>
67#include <qvbox.h> 67#include <qvbox.h>
68#include <qprintdialog.h> 68#include <qprintdialog.h>
69#include <qpaintdevicemetrics.h> 69#include <qpaintdevicemetrics.h>
70#include <qiodevice.h> 70#include <qiodevice.h>
71#include <qbuffer.h> 71#include <qbuffer.h>
72#include <qfocusdata.h> 72#include <qfocusdata.h>
73#include <klocale.h> 73#include <klocale.h>
74#include <kglobal.h> 74#include <kglobal.h>
75#include <kdebug.h> 75#include <kdebug.h>
76#include <kmessagebox.h> 76#include <kmessagebox.h>
77#include <qregexp.h> 77#include <qregexp.h>
78#include <kdialogbase.h> 78#include <kdialogbase.h>
79#include <klineeditdlg.h> 79#include <klineeditdlg.h>
80#include <qapplication.h> 80#include <qapplication.h>
81#include <kfiledialog.h> 81#include <kfiledialog.h>
82#include <kiconloader.h> 82#include <kiconloader.h>
83#include "../document/katetextline.h" 83#include "../document/katetextline.h"
84#include "kateviewdialog.h" 84#include "kateviewdialog.h"
85#include "kateundohistory.h" 85#include "kateundohistory.h"
86#include <qlayout.h> 86#include <qlayout.h>
87 87
88KateViewInternal::KateViewInternal(KateView *view, KateDocument *doc) : QWidget(view) 88KateViewInternal::KateViewInternal(KateView *view, KateDocument *doc) : QWidget(view)
89{ 89{
90 waitForPreHighlight=-1; 90 waitForPreHighlight=-1;
91 myView = view; 91 myView = view;
92 myDoc = doc; 92 myDoc = doc;
93 93
94 iconBorderWidth = 16; 94 iconBorderWidth = 16;
95 iconBorderHeight = 800; 95 iconBorderHeight = 800;
96 96
97 QWidget::setCursor(ibeamCursor); 97 QWidget::setCursor(ibeamCursor);
98 setBackgroundMode(NoBackground); 98 setBackgroundMode(NoBackground);
99 99
100 setFocusPolicy(StrongFocus); 100 setFocusPolicy(StrongFocus);
101 101
102 xScroll = new QScrollBar(QScrollBar::Horizontal,myView); 102 xScroll = new QScrollBar(QScrollBar::Horizontal,myView);
103 yScroll = new QScrollBar(QScrollBar::Vertical,myView); 103 yScroll = new QScrollBar(QScrollBar::Vertical,myView);
104 connect(xScroll,SIGNAL(valueChanged(int)),SLOT(changeXPos(int))); 104 connect(xScroll,SIGNAL(valueChanged(int)),SLOT(changeXPos(int)));
105 connect(yScroll,SIGNAL(valueChanged(int)),SLOT(changeYPos(int))); 105 connect(yScroll,SIGNAL(valueChanged(int)),SLOT(changeYPos(int)));
106 connect(yScroll,SIGNAL(valueChanged(int)),myView,SIGNAL(scrollValueChanged(int))); 106 connect(yScroll,SIGNAL(valueChanged(int)),myView,SIGNAL(scrollValueChanged(int)));
107 connect( doc, SIGNAL (preHighlightChanged(long)),this,SLOT(slotPreHighlightUpdate(long))); 107 connect( doc, SIGNAL (preHighlightChanged(long)),this,SLOT(slotPreHighlightUpdate(long)));
108 108
109 xPos = 0; 109 xPos = 0;
110 yPos = 0; 110 yPos = 0;
111 111
112 scrollTimer = 0; 112 scrollTimer = 0;
113 113
114 cursor.x = 0; 114 cursor.x = 0;
115 cursor.y = 0; 115 cursor.y = 0;
116 cursorOn = false; 116 cursorOn = false;
117 cursorTimer = 0; 117 cursorTimer = 0;
118 cXPos = 0; 118 cXPos = 0;
119 cOldXPos = 0; 119 cOldXPos = 0;
120 120
121 startLine = 0; 121 startLine = 0;
122 endLine = -1; 122 endLine = -1;
123 123
124 exposeCursor = false; 124 exposeCursor = false;
125 updateState = 0; 125 updateState = 0;
126 numLines = 0; 126 numLines = 0;
127 lineRanges = 0L; 127 lineRanges = 0L;
128 newXPos = -1; 128 newXPos = -1;
129 newYPos = -1; 129 newYPos = -1;
130 130
131 drawBuffer = new QPixmap (); 131 drawBuffer = new QPixmap ();
132 drawBuffer->setOptimization (QPixmap::BestOptim); 132 drawBuffer->setOptimization (QPixmap::BestOptim);
133 133
134 bm.sXPos = 0; 134 bm.sXPos = 0;
135 bm.eXPos = -1; 135 bm.eXPos = -1;
136 136
137} 137}
138 138
139 139
140KateViewInternal::~KateViewInternal() 140KateViewInternal::~KateViewInternal()
141{ 141{
142 delete [] lineRanges; 142 delete [] lineRanges;
143 delete drawBuffer; 143 delete drawBuffer;
144} 144}
145 145
146 146
147void KateViewInternal::slotPreHighlightUpdate(long line) 147void KateViewInternal::slotPreHighlightUpdate(long line)
148{ 148{
149 //kdDebug()<<QString("slotPreHighlightUpdate - Wait for: %1, line: %2").arg(waitForPreHighlight).arg(line)<<endl; 149 //kdDebug()<<QString("slotPreHighlightUpdate - Wait for: %1, line: %2").arg(waitForPreHighlight).arg(line)<<endl;
150 if (waitForPreHighlight!=-1) 150 if (waitForPreHighlight!=-1)
151 { 151 {
152 if (line>=waitForPreHighlight) 152 if (line>=waitForPreHighlight)
153 { 153 {
154 waitForPreHighlight=-1; 154 waitForPreHighlight=-1;
155 repaint(); 155 repaint();
156 } 156 }
157 } 157 }
158} 158}
159 159
160void KateViewInternal::doCursorCommand(VConfig &c, int cmdNum) { 160void KateViewInternal::doCursorCommand(VConfig &c, int cmdNum) {
161 161
162 switch (cmdNum) { 162 switch (cmdNum) {
163 case KateView::cmLeft: 163 case KateView::cmLeft:
164 cursorLeft(c); 164 cursorLeft(c);
165 break; 165 break;
166 case KateView::cmRight: 166 case KateView::cmRight:
167 cursorRight(c); 167 cursorRight(c);
168 break; 168 break;
169 case KateView::cmWordLeft: 169 case KateView::cmWordLeft:
170 wordLeft(c); 170 wordLeft(c);
171 break; 171 break;
172 case KateView::cmWordRight: 172 case KateView::cmWordRight:
173 wordRight(c); 173 wordRight(c);
174 break; 174 break;
175 case KateView::cmHome: 175 case KateView::cmHome:
176 home(c); 176 home(c);
177 break; 177 break;
178 case KateView::cmEnd: 178 case KateView::cmEnd:
179 end(c); 179 end(c);
180 break; 180 break;
181 case KateView::cmUp: 181 case KateView::cmUp:
182 cursorUp(c); 182 cursorUp(c);
183 break; 183 break;
184 case KateView::cmDown: 184 case KateView::cmDown:
185 cursorDown(c); 185 cursorDown(c);
186 break; 186 break;
187 case KateView::cmScrollUp: 187 case KateView::cmScrollUp:
188 scrollUp(c); 188 scrollUp(c);
189 break; 189 break;
190 case KateView::cmScrollDown: 190 case KateView::cmScrollDown:
191 scrollDown(c); 191 scrollDown(c);
192 break; 192 break;
193 case KateView::cmTopOfView: 193 case KateView::cmTopOfView:
194 topOfView(c); 194 topOfView(c);
195 break; 195 break;
196 case KateView::cmBottomOfView: 196 case KateView::cmBottomOfView:
197 bottomOfView(c); 197 bottomOfView(c);
198 break; 198 break;
199 case KateView::cmPageUp: 199 case KateView::cmPageUp:
200 pageUp(c); 200 pageUp(c);
201 break; 201 break;
202 case KateView::cmPageDown: 202 case KateView::cmPageDown:
203 pageDown(c); 203 pageDown(c);
204 break; 204 break;
205 case KateView::cmTop: 205 case KateView::cmTop:
206 top_home(c); 206 top_home(c);
207 break; 207 break;
208 case KateView::cmBottom: 208 case KateView::cmBottom:
209 bottom_end(c); 209 bottom_end(c);
210 break; 210 break;
211 } 211 }
212} 212}
213 213
214void KateViewInternal::doEditCommand(VConfig &c, int cmdNum) { 214void KateViewInternal::doEditCommand(VConfig &c, int cmdNum) {
215 215
216 switch (cmdNum) { 216 switch (cmdNum) {
217 case KateView::cmCopy: 217 case KateView::cmCopy:
218 myDoc->copy(c.flags); 218 myDoc->copy(c.flags);
219 return; 219 return;
220 case KateView::cmSelectAll: 220 case KateView::cmSelectAll:
221 myDoc->selectAll(); 221 myDoc->selectAll();
222 return; 222 return;
223 case KateView::cmDeselectAll: 223 case KateView::cmDeselectAll:
224 myDoc->deselectAll(); 224 myDoc->deselectAll();
225 return; 225 return;
226 case KateView::cmInvertSelection: 226 case KateView::cmInvertSelection:
227 myDoc->invertSelection(); 227 myDoc->invertSelection();
228 return; 228 return;
229 } 229 }
230 if (myView->isReadOnly()) return; 230 if (myView->isReadOnly()) return;
231 switch (cmdNum) { 231 switch (cmdNum) {
232 case KateView::cmReturn: 232 case KateView::cmReturn:
233 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c); 233 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c);
234 myDoc->newLine(c); 234 myDoc->newLine(c);
235 //emit returnPressed(); 235 //emit returnPressed();
236 //e->ignore(); 236 //e->ignore();
237 return; 237 return;
238 case KateView::cmDelete: 238 case KateView::cmDelete:
239 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText()) 239 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText())
240 myDoc->delMarkedText(c); 240 myDoc->delMarkedText(c);
241 else myDoc->del(c); 241 else myDoc->del(c);
242 return; 242 return;
243 case KateView::cmBackspace: 243 case KateView::cmBackspace:
244 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText()) 244 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText())
245 myDoc->delMarkedText(c); 245 myDoc->delMarkedText(c);
246 else myDoc->backspace(c); 246 else myDoc->backspace(c);
247 return; 247 return;
248 case KateView::cmKillLine: 248 case KateView::cmKillLine:
249 myDoc->killLine(c); 249 myDoc->killLine(c);
250 return; 250 return;
251 case KateView::cmCut: 251 case KateView::cmCut:
252 myDoc->cut(c); 252 myDoc->cut(c);
253 return; 253 return;
254 case KateView::cmPaste: 254 case KateView::cmPaste:
255 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c); 255 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c);
256 myDoc->paste(c); 256 myDoc->paste(c);
257 return; 257 return;
258 case KateView::cmUndo: 258 case KateView::cmUndo:
259 myDoc->undo(c); 259 myDoc->undo(c);
260 return; 260 return;
261 case KateView::cmRedo: 261 case KateView::cmRedo:
262 myDoc->redo(c); 262 myDoc->redo(c);
263 return; 263 return;
264 case KateView::cmIndent: 264 case KateView::cmIndent:
265 myDoc->indent(c); 265 myDoc->indent(c);
266 return; 266 return;
267 case KateView::cmUnindent: 267 case KateView::cmUnindent:
268 myDoc->unIndent(c); 268 myDoc->unIndent(c);
269 return; 269 return;
270 case KateView::cmCleanIndent: 270 case KateView::cmCleanIndent:
271 myDoc->cleanIndent(c); 271 myDoc->cleanIndent(c);
272 return; 272 return;
273 case KateView::cmComment: 273 case KateView::cmComment:
274 myDoc->comment(c); 274 myDoc->comment(c);
275 return; 275 return;
276 case KateView::cmUncomment: 276 case KateView::cmUncomment:
277 myDoc->unComment(c); 277 myDoc->unComment(c);
278 return; 278 return;
279 } 279 }
280} 280}
281 281
282void KateViewInternal::cursorLeft(VConfig &c) { 282void KateViewInternal::cursorLeft(VConfig &c) {
283 283
284 cursor.x--; 284 cursor.x--;
285 if (c.flags & KateView::cfWrapCursor && cursor.x < 0 && cursor.y > 0) { 285 if (c.flags & KateView::cfWrapCursor && cursor.x < 0 && cursor.y > 0) {
286 cursor.y--; 286 cursor.y--;
287 cursor.x = myDoc->textLength(cursor.y); 287 cursor.x = myDoc->textLength(cursor.y);
288 } 288 }
289 cOldXPos = cXPos = myDoc->textWidth(cursor); 289 cOldXPos = cXPos = myDoc->textWidth(cursor);
290 changeState(c); 290 changeState(c);
291} 291}
292 292
293void KateViewInternal::cursorRight(VConfig &c) { 293void KateViewInternal::cursorRight(VConfig &c) {
294 294
295 if (c.flags & KateView::cfWrapCursor) { 295 if (c.flags & KateView::cfWrapCursor) {
296 if (cursor.x >= myDoc->textLength(cursor.y)) { 296 if (cursor.x >= myDoc->textLength(cursor.y)) {
297 if (cursor.y == myDoc->lastLine()) return; 297 if (cursor.y == myDoc->lastLine()) return;
298 cursor.y++; 298 cursor.y++;
299 cursor.x = -1; 299 cursor.x = -1;
300 } 300 }
301 } 301 }
302 cursor.x++; 302 cursor.x++;
303 cOldXPos = cXPos = myDoc->textWidth(cursor); 303 cOldXPos = cXPos = myDoc->textWidth(cursor);
304 changeState(c); 304 changeState(c);
305} 305}
306 306
307void KateViewInternal::wordLeft(VConfig &c) { 307void KateViewInternal::wordLeft(VConfig &c) {
308 Highlight *highlight; 308 Highlight *highlight;
309 309
310 highlight = myDoc->highlight(); 310 highlight = myDoc->highlight();
311 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 311 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
312 312
313 if (cursor.x > 0) { 313 if (cursor.x > 0) {
314 do { 314 do {
315 cursor.x--; 315 cursor.x--;
316 } while (cursor.x > 0 && !highlight->isInWord(textLine->getChar(cursor.x))); 316 } while (cursor.x > 0 && !highlight->isInWord(textLine->getChar(cursor.x)));
317 while (cursor.x > 0 && highlight->isInWord(textLine->getChar(cursor.x -1))) 317 while (cursor.x > 0 && highlight->isInWord(textLine->getChar(cursor.x -1)))
318 cursor.x--; 318 cursor.x--;
319 } else { 319 } else {
320 if (cursor.y > 0) { 320 if (cursor.y > 0) {
321 cursor.y--; 321 cursor.y--;
322 textLine = myDoc->getTextLine(cursor.y); 322 textLine = myDoc->getTextLine(cursor.y);
323 cursor.x = textLine->length(); 323 cursor.x = textLine->length();
324 } 324 }
325 } 325 }
326 326
327 cOldXPos = cXPos = myDoc->textWidth(cursor); 327 cOldXPos = cXPos = myDoc->textWidth(cursor);
328 changeState(c); 328 changeState(c);
329} 329}
330 330
331void KateViewInternal::wordRight(VConfig &c) { 331void KateViewInternal::wordRight(VConfig &c) {
332 Highlight *highlight; 332 Highlight *highlight;
333 int len; 333 int len;
334 334
335 highlight = myDoc->highlight(); 335 highlight = myDoc->highlight();
336 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 336 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
337 len = textLine->length(); 337 len = textLine->length();
338 338
339 if (cursor.x < len) { 339 if (cursor.x < len) {
340 do { 340 do {
341 cursor.x++; 341 cursor.x++;
342 } while (cursor.x < len && highlight->isInWord(textLine->getChar(cursor.x))); 342 } while (cursor.x < len && highlight->isInWord(textLine->getChar(cursor.x)));
343 while (cursor.x < len && !highlight->isInWord(textLine->getChar(cursor.x))) 343 while (cursor.x < len && !highlight->isInWord(textLine->getChar(cursor.x)))
344 cursor.x++; 344 cursor.x++;
345 } else { 345 } else {
346 if (cursor.y < myDoc->lastLine()) { 346 if (cursor.y < myDoc->lastLine()) {
347 cursor.y++; 347 cursor.y++;
348 textLine = myDoc->getTextLine(cursor.y); 348 textLine = myDoc->getTextLine(cursor.y);
349 cursor.x = 0; 349 cursor.x = 0;
350 } 350 }
351 } 351 }
352 352
353 cOldXPos = cXPos = myDoc->textWidth(cursor); 353 cOldXPos = cXPos = myDoc->textWidth(cursor);
354 changeState(c); 354 changeState(c);
355} 355}
356 356
357void KateViewInternal::home(VConfig &c) { 357void KateViewInternal::home(VConfig &c) {
358 int lc; 358 int lc;
359 359
360 lc = (c.flags & KateView::cfSmartHome) ? myDoc->getTextLine(cursor.y)->firstChar() : 0; 360 lc = (c.flags & KateView::cfSmartHome) ? myDoc->getTextLine(cursor.y)->firstChar() : 0;
361 if (lc <= 0 || cursor.x == lc) { 361 if (lc <= 0 || cursor.x == lc) {
362 cursor.x = 0; 362 cursor.x = 0;
363 cOldXPos = cXPos = 0; 363 cOldXPos = cXPos = 0;
364 } else { 364 } else {
365 cursor.x = lc; 365 cursor.x = lc;
366 cOldXPos = cXPos = myDoc->textWidth(cursor); 366 cOldXPos = cXPos = myDoc->textWidth(cursor);
367 } 367 }
368 368
369 changeState(c); 369 changeState(c);
370} 370}
371 371
372void KateViewInternal::end(VConfig &c) { 372void KateViewInternal::end(VConfig &c) {
373 cursor.x = myDoc->textLength(cursor.y); 373 cursor.x = myDoc->textLength(cursor.y);
374 cOldXPos = cXPos = myDoc->textWidth(cursor); 374 cOldXPos = cXPos = myDoc->textWidth(cursor);
375 changeState(c); 375 changeState(c);
376} 376}
377 377
378 378
379void KateViewInternal::cursorUp(VConfig &c) { 379void KateViewInternal::cursorUp(VConfig &c) {
380 380
381 cursor.y--; 381 cursor.y--;
382 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 382 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
383 changeState(c); 383 changeState(c);
384} 384}
385 385
386 386
387void KateViewInternal::cursorDown(VConfig &c) { 387void KateViewInternal::cursorDown(VConfig &c) {
388 int x; 388 int x;
389 389
390 if (cursor.y == myDoc->lastLine()) { 390 if (cursor.y == myDoc->lastLine()) {
391 x = myDoc->textLength(cursor.y); 391 x = myDoc->textLength(cursor.y);
392 if (cursor.x >= x) return; 392 if (cursor.x >= x) return;
393 cursor.x = x; 393 cursor.x = x;
394 cXPos = myDoc->textWidth(cursor); 394 cXPos = myDoc->textWidth(cursor);
395 } else { 395 } else {
396 cursor.y++; 396 cursor.y++;
397 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos); 397 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos);
398 } 398 }
399 changeState(c); 399 changeState(c);
400} 400}
401 401
402void KateViewInternal::scrollUp(VConfig &c) { 402void KateViewInternal::scrollUp(VConfig &c) {
403 403
404 if (! yPos) return; 404 if (! yPos) return;
405 405
406 newYPos = yPos - myDoc->fontHeight; 406 newYPos = yPos - myDoc->fontHeight;
407 if (cursor.y == (yPos + height())/myDoc->fontHeight -1) { 407 if (cursor.y == (yPos + height())/myDoc->fontHeight -1) {
408 cursor.y--; 408 cursor.y--;
409 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 409 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
410 410
411 changeState(c); 411 changeState(c);
412 } 412 }
413} 413}
414 414
415void KateViewInternal::scrollDown(VConfig &c) { 415void KateViewInternal::scrollDown(VConfig &c) {
416 416
417 if (endLine >= myDoc->lastLine()) return; 417 if (endLine >= myDoc->lastLine()) return;
418 418
419 newYPos = yPos + myDoc->fontHeight; 419 newYPos = yPos + myDoc->fontHeight;
420 if (cursor.y == (yPos + myDoc->fontHeight -1)/myDoc->fontHeight) { 420 if (cursor.y == (yPos + myDoc->fontHeight -1)/myDoc->fontHeight) {
421 cursor.y++; 421 cursor.y++;
422 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 422 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
423 changeState(c); 423 changeState(c);
424 } 424 }
425} 425}
426 426
427void KateViewInternal::topOfView(VConfig &c) { 427void KateViewInternal::topOfView(VConfig &c) {
428 428
429 cursor.y = (yPos + myDoc->fontHeight -1)/myDoc->fontHeight; 429 cursor.y = (yPos + myDoc->fontHeight -1)/myDoc->fontHeight;
430 cursor.x = 0; 430 cursor.x = 0;
431 cOldXPos = cXPos = 0; 431 cOldXPos = cXPos = 0;
432 changeState(c); 432 changeState(c);
433} 433}
434 434
435void KateViewInternal::bottomOfView(VConfig &c) { 435void KateViewInternal::bottomOfView(VConfig &c) {
436 436
437 cursor.y = (yPos + height())/myDoc->fontHeight -1; 437 cursor.y = (yPos + height())/myDoc->fontHeight -1;
438 if (cursor.y < 0) cursor.y = 0; 438 if (cursor.y < 0) cursor.y = 0;
439 if (cursor.y > myDoc->lastLine()) cursor.y = myDoc->lastLine(); 439 if (cursor.y > myDoc->lastLine()) cursor.y = myDoc->lastLine();
440 cursor.x = 0; 440 cursor.x = 0;
441 cOldXPos = cXPos = 0; 441 cOldXPos = cXPos = 0;
442 changeState(c); 442 changeState(c);
443} 443}
444 444
445void KateViewInternal::pageUp(VConfig &c) { 445void KateViewInternal::pageUp(VConfig &c) {
446 int lines = (endLine - startLine - 1); 446 int lines = (endLine - startLine - 1);
447 447
448 if (lines <= 0) lines = 1; 448 if (lines <= 0) lines = 1;
449 449
450 if (!(c.flags & KateView::cfPageUDMovesCursor) && yPos > 0) { 450 if (!(c.flags & KateView::cfPageUDMovesCursor) && yPos > 0) {
451 newYPos = yPos - lines * myDoc->fontHeight; 451 newYPos = yPos - lines * myDoc->fontHeight;
452 if (newYPos < 0) newYPos = 0; 452 if (newYPos < 0) newYPos = 0;
453 } 453 }
454 cursor.y -= lines; 454 cursor.y -= lines;
455 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos); 455 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos);
456 changeState(c); 456 changeState(c);
457// cursorPageUp(c); 457// cursorPageUp(c);
458} 458}
459 459
460void KateViewInternal::pageDown(VConfig &c) { 460void KateViewInternal::pageDown(VConfig &c) {
461 461
462 int lines = (endLine - startLine - 1); 462 int lines = (endLine - startLine - 1);
463 463
464 if (!(c.flags & KateView::cfPageUDMovesCursor) && endLine < myDoc->lastLine()) { 464 if (!(c.flags & KateView::cfPageUDMovesCursor) && endLine < myDoc->lastLine()) {
465 if (lines < myDoc->lastLine() - endLine) 465 if (lines < myDoc->lastLine() - endLine)
466 newYPos = yPos + lines * myDoc->fontHeight; 466 newYPos = yPos + lines * myDoc->fontHeight;
467 else 467 else
468 newYPos = yPos + (myDoc->lastLine() - endLine) * myDoc->fontHeight; 468 newYPos = yPos + (myDoc->lastLine() - endLine) * myDoc->fontHeight;
469 } 469 }
470 cursor.y += lines; 470 cursor.y += lines;
471 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 471 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
472 changeState(c); 472 changeState(c);
473// cursorPageDown(c); 473// cursorPageDown(c);
474} 474}
475 475
476// go to the top, same X position 476// go to the top, same X position
477void KateViewInternal::top(VConfig &c) { 477void KateViewInternal::top(VConfig &c) {
478 478
479// cursor.x = 0; 479// cursor.x = 0;
480 cursor.y = 0; 480 cursor.y = 0;
481 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 481 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
482// cOldXPos = cXPos = 0; 482// cOldXPos = cXPos = 0;
483 changeState(c); 483 changeState(c);
484} 484}
485 485
486// go to the bottom, same X position 486// go to the bottom, same X position
487void KateViewInternal::bottom(VConfig &c) { 487void KateViewInternal::bottom(VConfig &c) {
488 488
489// cursor.x = 0; 489// cursor.x = 0;
490 cursor.y = myDoc->lastLine(); 490 cursor.y = myDoc->lastLine();
491 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 491 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
492// cOldXPos = cXPos = 0; 492// cOldXPos = cXPos = 0;
493 changeState(c); 493 changeState(c);
494} 494}
495 495
496// go to the top left corner 496// go to the top left corner
497void KateViewInternal::top_home(VConfig &c) 497void KateViewInternal::top_home(VConfig &c)
498{ 498{
499 cursor.y = 0; 499 cursor.y = 0;
500 cursor.x = 0; 500 cursor.x = 0;
501 cOldXPos = cXPos = 0; 501 cOldXPos = cXPos = 0;
502 changeState(c); 502 changeState(c);
503} 503}
504 504
505// go to the bottom right corner 505// go to the bottom right corner
506void KateViewInternal::bottom_end(VConfig &c) { 506void KateViewInternal::bottom_end(VConfig &c) {
507 507
508 cursor.y = myDoc->lastLine(); 508 cursor.y = myDoc->lastLine();
509 cursor.x = myDoc->textLength(cursor.y); 509 cursor.x = myDoc->textLength(cursor.y);
510 cOldXPos = cXPos = myDoc->textWidth(cursor); 510 cOldXPos = cXPos = myDoc->textWidth(cursor);
511 changeState(c); 511 changeState(c);
512} 512}
513 513
514 514
515void KateViewInternal::changeXPos(int p) { 515void KateViewInternal::changeXPos(int p) {
516 int dx; 516 int dx;
517 517
518 dx = xPos - p; 518 dx = xPos - p;
519 xPos = p; 519 xPos = p;
520 if (QABS(dx) < width()) scroll(dx, 0); else update(); 520 if (QABS(dx) < width()) scroll(dx, 0); else update();
521} 521}
522 522
523void KateViewInternal::changeYPos(int p) { 523void KateViewInternal::changeYPos(int p) {
524 int dy; 524 int dy;
525 525
526 dy = yPos - p; 526 dy = yPos - p;
527 yPos = p; 527 yPos = p;
528 clearDirtyCache(height()); 528 clearDirtyCache(height());
529 529
530 if (QABS(dy) < height()) 530 if (QABS(dy) < height())
531 { 531 {
532 scroll(0, dy); 532 scroll(0, dy);
533 leftBorder->scroll(0, dy); 533 leftBorder->scroll(0, dy);
534 } 534 }
535 else 535 else
536 update(); 536 update();
537} 537}
538 538
539 539
540void KateViewInternal::getVConfig(VConfig &c) { 540void KateViewInternal::getVConfig(VConfig &c) {
541 541
542 c.view = myView; 542 c.view = myView;
543 c.cursor = cursor; 543 c.cursor = cursor;
544 c.cXPos = cXPos; 544 c.cXPos = cXPos;
545 c.flags = myView->configFlags; 545 c.flags = myView->configFlags;
546} 546}
547 547
548void KateViewInternal::changeState(VConfig &c) { 548void KateViewInternal::changeState(VConfig &c) {
549 /* 549 /*
550 * we need to be sure to kill the selection on an attempted cursor 550 * we need to be sure to kill the selection on an attempted cursor
551 * movement even if the cursor doesn't physically move, 551 * movement even if the cursor doesn't physically move,
552 * but we need to be careful not to do some other things in this case, 552 * but we need to be careful not to do some other things in this case,
553 * like we don't want to expose the cursor 553 * like we don't want to expose the cursor
554 */ 554 */
555 555
556// if (cursor.x == c.cursor.x && cursor.y == c.cursor.y) return; 556// if (cursor.x == c.cursor.x && cursor.y == c.cursor.y) return;
557 bool nullMove = (cursor.x == c.cursor.x && cursor.y == c.cursor.y); 557 bool nullMove = (cursor.x == c.cursor.x && cursor.y == c.cursor.y);
558 558
559// if (cursor.y != c.cursor.y || c.flags & KateView::cfMark) myDoc->recordReset(); 559// if (cursor.y != c.cursor.y || c.flags & KateView::cfMark) myDoc->recordReset();
560 560
561 if (! nullMove) { 561 if (! nullMove) {
562 562
563 exposeCursor = true; 563 exposeCursor = true;
564 564
565 // mark old position of cursor as dirty 565 // mark old position of cursor as dirty
566 if (cursorOn) { 566 if (cursorOn) {
567 tagLines(c.cursor.y, c.cursor.y, c.cXPos -2, c.cXPos +3); 567 tagLines(c.cursor.y, c.cursor.y, c.cXPos -2, c.cXPos +3);
568 cursorOn = false; 568 cursorOn = false;
569 } 569 }
570 570
571 // mark old bracket mark position as dirty 571 // mark old bracket mark position as dirty
572 if (bm.sXPos < bm.eXPos) { 572 if (bm.sXPos < bm.eXPos) {
573 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos); 573 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos);
574 } 574 }
575 // make new bracket mark 575 // make new bracket mark
576 myDoc->newBracketMark(cursor, bm); 576 myDoc->newBracketMark(cursor, bm);
577 577
578 // remove trailing spaces when leaving a line 578 // remove trailing spaces when leaving a line
579 if (c.flags & KateView::cfRemoveSpaces && cursor.y != c.cursor.y) { 579 if (c.flags & KateView::cfRemoveSpaces && cursor.y != c.cursor.y) {
580 TextLine::Ptr textLine = myDoc->getTextLine(c.cursor.y); 580 TextLine::Ptr textLine = myDoc->getTextLine(c.cursor.y);
581 int newLen = textLine->lastChar(); 581 int newLen = textLine->lastChar();
582 if (newLen != textLine->length()) { 582 if (newLen != textLine->length()) {
583 textLine->truncate(newLen); 583 textLine->truncate(newLen);
584 // if some spaces are removed, tag the line as dirty 584 // if some spaces are removed, tag the line as dirty
585 myDoc->tagLines(c.cursor.y, c.cursor.y); 585 myDoc->tagLines(c.cursor.y, c.cursor.y);
586 } 586 }
587 } 587 }
588 } 588 }
589 589
590 if (c.flags & KateView::cfMark) { 590 if (c.flags & KateView::cfMark) {
591 if (! nullMove) 591 if (! nullMove)
592 myDoc->selectTo(c, cursor, cXPos); 592 myDoc->selectTo(c, cursor, cXPos);
593 } else { 593 } else {
594 if (!(c.flags & KateView::cfPersistent)) 594 if (!(c.flags & KateView::cfPersistent))
595 myDoc->deselectAll(); 595 myDoc->deselectAll();
596 } 596 }
597} 597}
598 598
599void KateViewInternal::insLine(int line) { 599void KateViewInternal::insLine(int line) {
600 600
601 if (line <= cursor.y) { 601 if (line <= cursor.y) {
602 cursor.y++; 602 cursor.y++;
603 } 603 }
604 if (line < startLine) { 604 if (line < startLine) {
605 startLine++; 605 startLine++;
606 endLine++; 606 endLine++;
607 yPos += myDoc->fontHeight; 607 yPos += myDoc->fontHeight;
608 } else if (line <= endLine) { 608 } else if (line <= endLine) {
609 tagAll(); 609 tagAll();
610 } 610 }
611} 611}
612 612
613void KateViewInternal::delLine(int line) { 613void KateViewInternal::delLine(int line) {
614 614
615 if (line <= cursor.y && cursor.y > 0) { 615 if (line <= cursor.y && cursor.y > 0) {
616 cursor.y--; 616 cursor.y--;
617 } 617 }
618 if (line < startLine) { 618 if (line < startLine) {
619 startLine--; 619 startLine--;
620 endLine--; 620 endLine--;
621 yPos -= myDoc->fontHeight; 621 yPos -= myDoc->fontHeight;
622 } else if (line <= endLine) { 622 } else if (line <= endLine) {
623 tagAll(); 623 tagAll();
624 } 624 }
625} 625}
626 626
627void KateViewInternal::updateCursor() { 627void KateViewInternal::updateCursor() {
628 cOldXPos = cXPos = myDoc->textWidth(cursor); 628 cOldXPos = cXPos = myDoc->textWidth(cursor);
629} 629}
630 630
631 631
632void KateViewInternal::updateCursor(PointStruc &newCursor) { 632void KateViewInternal::updateCursor(PointStruc &newCursor) {
633 updateCursor(newCursor, myView->config()); 633 updateCursor(newCursor, myView->config());
634} 634}
635 635
636void KateViewInternal::updateCursor(PointStruc &newCursor, int flags) { 636void KateViewInternal::updateCursor(PointStruc &newCursor, int flags) {
637 637
638 if (!(flags & KateView::cfPersistent)) myDoc->deselectAll(); 638 if (!(flags & KateView::cfPersistent)) myDoc->deselectAll();
639 639
640 exposeCursor = true; 640 exposeCursor = true;
641 if (cursorOn) { 641 if (cursorOn) {
642 tagLines(cursor.y, cursor.y, cXPos -2, cXPos +3); 642 tagLines(cursor.y, cursor.y, cXPos -2, cXPos +3);
643 cursorOn = false; 643 cursorOn = false;
644 } 644 }
645 645
646 if (bm.sXPos < bm.eXPos) { 646 if (bm.sXPos < bm.eXPos) {
647 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos); 647 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos);
648 } 648 }
649 myDoc->newBracketMark(newCursor, bm); 649 myDoc->newBracketMark(newCursor, bm);
650 650
651 cursor = newCursor; 651 cursor = newCursor;
652 cOldXPos = cXPos = myDoc->textWidth(cursor); 652 cOldXPos = cXPos = myDoc->textWidth(cursor);
653} 653}
654 654
655// init the line dirty cache 655// init the line dirty cache
656void KateViewInternal::clearDirtyCache(int height) { 656void KateViewInternal::clearDirtyCache(int height) {
657 int lines, z; 657 int lines, z;
658 658
659 // calc start and end line of visible part 659 // calc start and end line of visible part
660 startLine = yPos/myDoc->fontHeight; 660 startLine = yPos/myDoc->fontHeight;
661 endLine = (yPos + height -1)/myDoc->fontHeight; 661 endLine = (yPos + height -1)/myDoc->fontHeight;
662 662
663 updateState = 0; 663 updateState = 0;
664 664
665 lines = endLine - startLine +1; 665 lines = endLine - startLine +1;
666 if (lines > numLines) { // resize the dirty cache 666 if (lines > numLines) { // resize the dirty cache
667 numLines = lines*2; 667 numLines = lines*2;
668 delete [] lineRanges; 668 delete [] lineRanges;
669 lineRanges = new LineRange[numLines]; 669 lineRanges = new LineRange[numLines];
670 } 670 }
671 671
672 for (z = 0; z < lines; z++) { // clear all lines 672 for (z = 0; z < lines; z++) { // clear all lines
673 lineRanges[z].start = 0xffffff; 673 lineRanges[z].start = 0xffffff;
674 lineRanges[z].end = -2; 674 lineRanges[z].end = -2;
675 } 675 }
676 newXPos = newYPos = -1; 676 newXPos = newYPos = -1;
677} 677}
678 678
679void KateViewInternal::tagLines(int start, int end, int x1, int x2) { 679void KateViewInternal::tagLines(int start, int end, int x1, int x2) {
680 LineRange *r; 680 LineRange *r;
681 int z; 681 int z;
682 682
683 start -= startLine; 683 start -= startLine;
684 if (start < 0) start = 0; 684 if (start < 0) start = 0;
685 end -= startLine; 685 end -= startLine;
686 if (end > endLine - startLine) end = endLine - startLine; 686 if (end > endLine - startLine) end = endLine - startLine;
687 687
688 if (x1 <= 0) x1 = -2; 688 if (x1 <= 0) x1 = -2;
689 if (x1 < xPos-2) x1 = xPos-2; 689 if (x1 < xPos-2) x1 = xPos-2;
690 if (x2 > width() + xPos-2) x2 = width() + xPos-2; 690 if (x2 > width() + xPos-2) x2 = width() + xPos-2;
691 if (x1 >= x2) return; 691 if (x1 >= x2) return;
692 692
693 r = &lineRanges[start]; 693 r = &lineRanges[start];
694 for (z = start; z <= end; z++) { 694 for (z = start; z <= end; z++) {
695 if (x1 < r->start) r->start = x1; 695 if (x1 < r->start) r->start = x1;
696 if (x2 > r->end) r->end = x2; 696 if (x2 > r->end) r->end = x2;
697 r++; 697 r++;
698 updateState |= 1; 698 updateState |= 1;
699 } 699 }
700} 700}
701 701
702void KateViewInternal::tagAll() { 702void KateViewInternal::tagAll() {
703 updateState = 3; 703 updateState = 3;
704} 704}
705 705
706void KateViewInternal::setPos(int x, int y) { 706void KateViewInternal::setPos(int x, int y) {
707 newXPos = x; 707 newXPos = x;
708 newYPos = y; 708 newYPos = y;
709} 709}
710 710
711void KateViewInternal::center() { 711void KateViewInternal::center() {
712 newXPos = 0; 712 newXPos = 0;
713 newYPos = cursor.y*myDoc->fontHeight - height()/2; 713 newYPos = cursor.y*myDoc->fontHeight - height()/2;
714 if (newYPos < 0) newYPos = 0; 714 if (newYPos < 0) newYPos = 0;
715} 715}
716 716
717void KateViewInternal::updateView(int flags) { 717void KateViewInternal::updateView(int flags) {
718 int fontHeight; 718 int fontHeight;
719 int oldXPos, oldYPos; 719 int oldXPos, oldYPos;
720 int w, h; 720 int w, h;
721 int z; 721 int z;
722 bool b; 722 bool b;
723 int xMax, yMax; 723 int xMax, yMax;
724 int cYPos; 724 int cYPos;
725 int cXPosMin, cXPosMax, cYPosMin, cYPosMax; 725 int cXPosMin, cXPosMax, cYPosMin, cYPosMax;
726 int dx, dy; 726 int dx, dy;
727 int pageScroll; 727 int pageScroll;
728 int scrollbarWidth = style().scrollBarExtent().width(); 728 int scrollbarWidth = style().scrollBarExtent().width();
729 729
730//debug("upView %d %d %d %d %d", exposeCursor, updateState, flags, newXPos, newYPos); 730//debug("upView %d %d %d %d %d", exposeCursor, updateState, flags, newXPos, newYPos);
731 if (exposeCursor || flags & KateView::ufDocGeometry) { 731 if (exposeCursor || flags & KateView::ufDocGeometry) {
732 emit myView->newCurPos(); 732 emit myView->newCurPos();
733 } else { 733 } else {
734 if (updateState == 0 && newXPos < 0 && newYPos < 0) return; 734 if (updateState == 0 && newXPos < 0 && newYPos < 0) return;
735 } 735 }
736 736
737 if (cursorTimer) { 737 if (cursorTimer) {
738 killTimer(cursorTimer); 738 killTimer(cursorTimer);
739 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2); 739 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2);
740 cursorOn = true; 740 cursorOn = true;
741 } 741 }
742 742
743 oldXPos = xPos; 743 oldXPos = xPos;
744 oldYPos = yPos; 744 oldYPos = yPos;
745/* if (flags & ufPos) { 745/* if (flags & ufPos) {
746 xPos = newXPos; 746 xPos = newXPos;
747 yPos = newYPos; 747 yPos = newYPos;
748 exposeCursor = true; 748 exposeCursor = true;
749 }*/ 749 }*/
750 if (newXPos >= 0) xPos = newXPos; 750 if (newXPos >= 0) xPos = newXPos;
751 if (newYPos >= 0) yPos = newYPos; 751 if (newYPos >= 0) yPos = newYPos;
752 752
753 fontHeight = myDoc->fontHeight; 753 fontHeight = myDoc->fontHeight;
754 cYPos = cursor.y*fontHeight; 754 cYPos = cursor.y*fontHeight;
755 755
756 z = 0; 756 z = 0;
757 do { 757 do {
758 w = myView->width() - 4; 758 w = myView->width() - 4;
759 h = myView->height() - 4; 759 h = myView->height() - 4;
760 760
761 xMax = myDoc->textWidth() - w; 761 xMax = myDoc->textWidth() - w;
762 b = (xPos > 0 || xMax > 0); 762 b = (xPos > 0 || xMax > 0);
763 if (b) h -= scrollbarWidth; 763 if (b) h -= scrollbarWidth;
764 yMax = myDoc->textHeight() - h; 764 yMax = myDoc->textHeight() - h;
765 if (yPos > 0 || yMax > 0) { 765 if (yPos > 0 || yMax > 0) {
766 w -= scrollbarWidth; 766 w -= scrollbarWidth;
767 xMax += scrollbarWidth; 767 xMax += scrollbarWidth;
768 if (!b && xMax > 0) { 768 if (!b && xMax > 0) {
769 h -= scrollbarWidth; 769 h -= scrollbarWidth;
770 yMax += scrollbarWidth; 770 yMax += scrollbarWidth;
771 } 771 }
772 } 772 }
773 773
774 if (!exposeCursor) break; 774 if (!exposeCursor) break;
775// if (flags & KateView::ufNoScroll) break; 775// if (flags & KateView::ufNoScroll) break;
776/* 776/*
777 if (flags & KateView::ufCenter) { 777 if (flags & KateView::ufCenter) {
778 cXPosMin = xPos + w/3; 778 cXPosMin = xPos + w/3;
779 cXPosMax = xPos + (w*2)/3; 779 cXPosMax = xPos + (w*2)/3;
780 cYPosMin = yPos + h/3; 780 cYPosMin = yPos + h/3;
781 cYPosMax = yPos + ((h - fontHeight)*2)/3; 781 cYPosMax = yPos + ((h - fontHeight)*2)/3;
782 } else {*/ 782 } else {*/
783 cXPosMin = xPos + 4; 783 cXPosMin = xPos + 4;
784 cXPosMax = xPos + w - 8; 784 cXPosMax = xPos + w - 8;
785 cYPosMin = yPos; 785 cYPosMin = yPos;
786 cYPosMax = yPos + (h - fontHeight); 786 cYPosMax = yPos + (h - fontHeight);
787// } 787// }
788 788
789 if (cXPos < cXPosMin) { 789 if (cXPos < cXPosMin) {
790 xPos -= cXPosMin - cXPos; 790 xPos -= cXPosMin - cXPos;
791 } 791 }
792 if (xPos < 0) xPos = 0; 792 if (xPos < 0) xPos = 0;
793 if (cXPos > cXPosMax) { 793 if (cXPos > cXPosMax) {
794 xPos += cXPos - cXPosMax; 794 xPos += cXPos - cXPosMax;
795 } 795 }
796 if (cYPos < cYPosMin) { 796 if (cYPos < cYPosMin) {
797 yPos -= cYPosMin - cYPos; 797 yPos -= cYPosMin - cYPos;
798 } 798 }
799 if (yPos < 0) yPos = 0; 799 if (yPos < 0) yPos = 0;
800 if (cYPos > cYPosMax) { 800 if (cYPos > cYPosMax) {
801 yPos += cYPos - cYPosMax; 801 yPos += cYPos - cYPosMax;
802 } 802 }
803 803
804 z++; 804 z++;
805 } while (z < 2); 805 } while (z < 2);
806 806
807 if (xMax < xPos) xMax = xPos; 807 if (xMax < xPos) xMax = xPos;
808 if (yMax < yPos) yMax = yPos; 808 if (yMax < yPos) yMax = yPos;
809 809
810 if (xMax > 0) { 810 if (xMax > 0) {
811 pageScroll = w - (w % fontHeight) - fontHeight; 811 pageScroll = w - (w % fontHeight) - fontHeight;
812 if (pageScroll <= 0) 812 if (pageScroll <= 0)
813 pageScroll = fontHeight; 813 pageScroll = fontHeight;
814 814
815 xScroll->blockSignals(true); 815 xScroll->blockSignals(true);
816 xScroll->setGeometry(2,h + 2,w,scrollbarWidth); 816 xScroll->setGeometry(2,h + 2,w,scrollbarWidth);
817 xScroll->setRange(0,xMax); 817 xScroll->setRange(0,xMax);
818 xScroll->setValue(xPos); 818 xScroll->setValue(xPos);
819 xScroll->setSteps(fontHeight,pageScroll); 819 xScroll->setSteps(fontHeight,pageScroll);
820 xScroll->blockSignals(false); 820 xScroll->blockSignals(false);
821 xScroll->show(); 821 xScroll->show();
822 } else xScroll->hide(); 822 } else xScroll->hide();
823 823
824 if (yMax > 0) { 824 if (yMax > 0) {
825 pageScroll = h - (h % fontHeight) - fontHeight; 825 pageScroll = h - (h % fontHeight) - fontHeight;
826 if (pageScroll <= 0) 826 if (pageScroll <= 0)
827 pageScroll = fontHeight; 827 pageScroll = fontHeight;
828 828
829 yScroll->blockSignals(true); 829 yScroll->blockSignals(true);
830 yScroll->setGeometry(w + 2,2,scrollbarWidth,h); 830 yScroll->setGeometry(w + 2,2,scrollbarWidth,h);
831 yScroll->setRange(0,yMax); 831 yScroll->setRange(0,yMax);
832 yScroll->setValue(yPos); 832 yScroll->setValue(yPos);
833 yScroll->setSteps(fontHeight,pageScroll); 833 yScroll->setSteps(fontHeight,pageScroll);
834 yScroll->blockSignals(false); 834 yScroll->blockSignals(false);
835 yScroll->show(); 835 yScroll->show();
836 } else yScroll->hide(); 836 } else yScroll->hide();
837 837
838 if (w != width() || h != height()) { 838 if (w != width() || h != height()) {
839 clearDirtyCache(h); 839 clearDirtyCache(h);
840 resize(w,h); 840 resize(w,h);
841 } else { 841 } else {
842 dx = oldXPos - xPos; 842 dx = oldXPos - xPos;
843 dy = oldYPos - yPos; 843 dy = oldYPos - yPos;
844 844
845 b = updateState == 3; 845 b = updateState == 3;
846 if (flags & KateView::ufUpdateOnScroll) { 846 if (flags & KateView::ufUpdateOnScroll) {
847 b |= dx || dy; 847 b |= dx || dy;
848 } else { 848 } else {
849 b |= QABS(dx)*3 > w*2 || QABS(dy)*3 > h*2; 849 b |= QABS(dx)*3 > w*2 || QABS(dy)*3 > h*2;
850 } 850 }
851 851
852 if (b) { 852 if (b) {
853 clearDirtyCache(h); 853 clearDirtyCache(h);
854 update(); 854 update();
855 } else { 855 } else {
856 if (dy) 856 if (dy)
857 leftBorder->scroll(0, dy); 857 leftBorder->scroll(0, dy);
858 if (updateState > 0) paintTextLines(oldXPos, oldYPos); 858 if (updateState > 0) paintTextLines(oldXPos, oldYPos);
859 clearDirtyCache(h); 859 clearDirtyCache(h);
860 860
861 if (dx || dy) { 861 if (dx || dy) {
862 scroll(dx,dy); 862 scroll(dx,dy);
863// kapp->syncX(); 863// kapp->syncX();
864// scroll2(dx - dx/2,dy - dy/2); 864// scroll2(dx - dx/2,dy - dy/2);
865// } else { 865// } else {
866 } 866 }
867 if (cursorOn) paintCursor(); 867 if (cursorOn) paintCursor();
868 if (bm.eXPos > bm.sXPos) paintBracketMark(); 868 if (bm.eXPos > bm.sXPos) paintBracketMark();
869 } 869 }
870 } 870 }
871 exposeCursor = false; 871 exposeCursor = false;
872// updateState = 0; 872// updateState = 0;
873} 873}
874 874
875 875
876void KateViewInternal::paintTextLines(int xPos, int yPos) { 876void KateViewInternal::paintTextLines(int xPos, int yPos) {
877// int xStart, xEnd; 877// int xStart, xEnd;
878 int line;//, z; 878 int line;//, z;
879 int h; 879 int h;
880 LineRange *r; 880 LineRange *r;
881 881
882 if (!drawBuffer) return; 882 if (!drawBuffer) return;
883 if (drawBuffer->isNull()) return; 883 if (drawBuffer->isNull()) return;
884 884
885 QPainter paint; 885 QPainter paint;
886 paint.begin(drawBuffer); 886 paint.begin(drawBuffer);
887 887
888 h = myDoc->fontHeight; 888 h = myDoc->fontHeight;
889 r = lineRanges; 889 r = lineRanges;
890 for (line = startLine; line <= endLine; line++) { 890 for (line = startLine; line <= endLine; line++) {
891 if (r->start < r->end) { 891 if (r->start < r->end) {
892//debug("painttextline %d %d %d", line, r->start, r->end); 892//debug("painttextline %d %d %d", line, r->start, r->end);
893 myDoc->paintTextLine(paint, line, r->start, r->end, myView->configFlags & KateView::cfShowTabs); 893 myDoc->paintTextLine(paint, line, r->start, r->end, myView->configFlags & KateView::cfShowTabs);
894 bitBlt(this, r->start - (xPos-2), line*h - yPos, drawBuffer, 0, 0, 894 bitBlt(this, r->start - (xPos-2), line*h - yPos, drawBuffer, 0, 0,
895 r->end - r->start, h); 895 r->end - r->start, h);
896 leftBorder->paintLine(line); 896 leftBorder->paintLine(line);
897 } 897 }
898 r++; 898 r++;
899 } 899 }
900 900
901 paint.end(); 901 paint.end();
902} 902}
903 903
904void KateViewInternal::paintCursor() { 904void KateViewInternal::paintCursor() {
905 int h, y, x; 905 int h, y, x;
906 static int cx = 0, cy = 0, ch = 0; 906 static int cx = 0, cy = 0, ch = 0;
907 907
908 h = myDoc->fontHeight; 908 h = myDoc->fontHeight;
909 y = h*cursor.y - yPos; 909 y = h*cursor.y - yPos;
910 x = cXPos - (xPos-2); 910 x = cXPos - (xPos-2);
911 911
912 if(myDoc->myFont != font()) setFont(myDoc->myFont); 912 if(myDoc->myFont != font()) setFont(myDoc->myFont);
913 if(cx != x || cy != y || ch != h){ 913 if(cx != x || cy != y || ch != h){
914 cx = x; 914 cx = x;
915 cy = y; 915 cy = y;
916 ch = h; 916 ch = h;
917 setMicroFocusHint(cx, cy, 0, ch - 2); 917 setMicroFocusHint(cx, cy, 0, ch - 2);
918 } 918 }
919 919
920 QPainter paint; 920 QPainter paint;
921 if (cursorOn) { 921 if (cursorOn) {
922 paint.begin(this); 922 paint.begin(this);
923 paint.setClipping(false); 923 paint.setClipping(false);
924 paint.setPen(myDoc->cursorCol(cursor.x,cursor.y)); 924 paint.setPen(myDoc->cursorCol(cursor.x,cursor.y));
925 925
926 h += y - 1; 926 h += y - 1;
927 paint.drawLine(x, y, x, h); 927 paint.drawLine(x, y, x, h);
928 928
929 paint.end(); 929 paint.end();
930 } else { if (drawBuffer && !drawBuffer->isNull()) { 930 } else { if (drawBuffer && !drawBuffer->isNull()) {
931 paint.begin(drawBuffer); 931 paint.begin(drawBuffer);
932 myDoc->paintTextLine(paint, cursor.y, cXPos - 2, cXPos + 3, myView->configFlags & KateView::cfShowTabs); 932 myDoc->paintTextLine(paint, cursor.y, cXPos - 2, cXPos + 3, myView->configFlags & KateView::cfShowTabs);
933 bitBlt(this,x - 2,y, drawBuffer, 0, 0, 5, h); 933 bitBlt(this,x - 2,y, drawBuffer, 0, 0, 5, h);
934 paint.end(); } 934 paint.end(); }
935 } 935 }
936 936
937} 937}
938 938
939void KateViewInternal::paintBracketMark() { 939void KateViewInternal::paintBracketMark() {
940 int y; 940 int y;
941 941
942 y = myDoc->fontHeight*(bm.cursor.y +1) - yPos -1; 942 y = myDoc->fontHeight*(bm.cursor.y +1) - yPos -1;
943 943
944 QPainter paint; 944 QPainter paint;
945 paint.begin(this); 945 paint.begin(this);
946 paint.setPen(myDoc->cursorCol(bm.cursor.x, bm.cursor.y)); 946 paint.setPen(myDoc->cursorCol(bm.cursor.x, bm.cursor.y));
947 947
948 paint.drawLine(bm.sXPos - (xPos-2), y, bm.eXPos - (xPos-2) -1, y); 948 paint.drawLine(bm.sXPos - (xPos-2), y, bm.eXPos - (xPos-2) -1, y);
949 paint.end(); 949 paint.end();
950} 950}
951 951
952void KateViewInternal::placeCursor(int x, int y, int flags) { 952void KateViewInternal::placeCursor(int x, int y, int flags) {
953 VConfig c; 953 VConfig c;
954 954
955 getVConfig(c); 955 getVConfig(c);
956 c.flags |= flags; 956 c.flags |= flags;
957 cursor.y = (yPos + y)/myDoc->fontHeight; 957 cursor.y = (yPos + y)/myDoc->fontHeight;
958 cXPos = cOldXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor,xPos-2 + x); 958 cXPos = cOldXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor,xPos-2 + x);
959 changeState(c); 959 changeState(c);
960} 960}
961 961
962// given physical coordinates, report whether the text there is selected 962// given physical coordinates, report whether the text there is selected
963bool KateViewInternal::isTargetSelected(int x, int y) { 963bool KateViewInternal::isTargetSelected(int x, int y) {
964 964
965 y = (yPos + y) / myDoc->fontHeight; 965 y = (yPos + y) / myDoc->fontHeight;
966 966
967 TextLine::Ptr line = myDoc->getTextLine(y); 967 TextLine::Ptr line = myDoc->getTextLine(y);
968 if (!line) 968 if (!line)
969 return false; 969 return false;
970 970
971 x = myDoc->textPos(line, x); 971 x = myDoc->textPos(line, x);
972 972
973 return line->isSelected(x); 973 return line->isSelected(x);
974} 974}
975 975
976void KateViewInternal::focusInEvent(QFocusEvent *) { 976void KateViewInternal::focusInEvent(QFocusEvent *) {
977// debug("got focus %d",cursorTimer); 977// debug("got focus %d",cursorTimer);
978 978
979 if (!cursorTimer) { 979 if (!cursorTimer) {
980 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2); 980 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2);
981 cursorOn = true; 981 cursorOn = true;
982 paintCursor(); 982 paintCursor();
983 } 983 }
984} 984}
985 985
986void KateViewInternal::focusOutEvent(QFocusEvent *) { 986void KateViewInternal::focusOutEvent(QFocusEvent *) {
987// debug("lost focus %d", cursorTimer); 987// debug("lost focus %d", cursorTimer);
988 988
989 if (cursorTimer) { 989 if (cursorTimer) {
990 killTimer(cursorTimer); 990 killTimer(cursorTimer);
991 cursorTimer = 0; 991 cursorTimer = 0;
992 } 992 }
993 993
994 if (cursorOn) { 994 if (cursorOn) {
995 cursorOn = false; 995 cursorOn = false;
996 paintCursor(); 996 paintCursor();
997 } 997 }
998} 998}
999 999
1000void KateViewInternal::keyPressEvent(QKeyEvent *e) { 1000void KateViewInternal::keyPressEvent(QKeyEvent *e) {
1001 VConfig c; 1001 VConfig c;
1002// int ascii; 1002// int ascii;
1003 1003
1004/* if (e->state() & AltButton) { 1004/* if (e->state() & AltButton) {
1005 e->ignore(); 1005 e->ignore();
1006 return; 1006 return;
1007 }*/ 1007 }*/
1008// debug("ascii %i, key %i, state %i",e->ascii(), e->key(), e->state()); 1008// debug("ascii %i, key %i, state %i",e->ascii(), e->key(), e->state());
1009 1009
1010 getVConfig(c); 1010 getVConfig(c);
1011// ascii = e->ascii(); 1011// ascii = e->ascii();
1012 1012
1013 if (!myView->isReadOnly()) { 1013 if (!myView->isReadOnly()) {
1014 if (c.flags & KateView::cfTabIndents && myDoc->hasMarkedText()) { 1014 if (c.flags & KateView::cfTabIndents && myDoc->hasMarkedText()) {
1015 if (e->key() == Qt::Key_Tab) { 1015 if (e->key() == Qt::Key_Tab) {
1016 myDoc->indent(c); 1016 myDoc->indent(c);
1017 myDoc->updateViews(); 1017 myDoc->updateViews();
1018 return; 1018 return;
1019 } 1019 }
1020 if (e->key() == Qt::Key_Backtab) { 1020 if (e->key() == Qt::Key_Backtab) {
1021 myDoc->unIndent(c); 1021 myDoc->unIndent(c);
1022 myDoc->updateViews(); 1022 myDoc->updateViews();
1023 return; 1023 return;
1024 } 1024 }
1025 } 1025 }
1026 if ( !(e->state() & ControlButton ) && myDoc->insertChars(c, e->text())) { 1026 if ( !(e->state() & ControlButton ) && myDoc->insertChars(c, e->text())) {
1027 myDoc->updateViews(); 1027 myDoc->updateViews();
1028 e->accept(); 1028 e->accept();
1029 return; 1029 return;
1030 } 1030 }
1031 } 1031 }
1032 e->ignore(); 1032 e->ignore();
1033} 1033}
1034 1034
1035void KateViewInternal::mousePressEvent(QMouseEvent *e) { 1035void KateViewInternal::mousePressEvent(QMouseEvent *e) {
1036 1036
1037 if (e->button() == LeftButton) { 1037 if (e->button() == LeftButton) {
1038 1038
1039 int flags; 1039 int flags;
1040 1040
1041 flags = 0; 1041 flags = 0;
1042 if (e->state() & ShiftButton) { 1042 if (e->state() & ShiftButton) {
1043 flags |= KateView::cfMark; 1043 flags |= KateView::cfMark;
1044 if (e->state() & ControlButton) flags |= KateView::cfMark | KateView::cfKeepSelection; 1044 if (e->state() & ControlButton) flags |= KateView::cfMark | KateView::cfKeepSelection;
1045 } 1045 }
1046 placeCursor(e->x(), e->y(), flags); 1046 placeCursor(e->x(), e->y(), flags);
1047 scrollX = 0; 1047 scrollX = 0;
1048 scrollY = 0; 1048 scrollY = 0;
1049 if (!scrollTimer) scrollTimer = startTimer(50); 1049 if (!scrollTimer) scrollTimer = startTimer(50);
1050 myDoc->updateViews(); 1050 myDoc->updateViews();
1051 } 1051 }
1052 if (e->button() == MidButton) { 1052 if (e->button() == MidButton) {
1053 placeCursor(e->x(), e->y()); 1053 placeCursor(e->x(), e->y());
1054 if (! myView->isReadOnly()) 1054 if (! myView->isReadOnly())
1055 myView->paste(); 1055 myView->paste();
1056 } 1056 }
1057 if (myView->rmbMenu && e->button() == RightButton) { 1057 if (myView->rmbMenu && e->button() == RightButton) {
1058 myView->rmbMenu->popup(mapToGlobal(e->pos())); 1058 myView->rmbMenu->popup(mapToGlobal(e->pos()));
1059 } 1059 }
1060 myView->mousePressEvent(e); // this doesn't do anything, does it? 1060 myView->mousePressEvent(e); // this doesn't do anything, does it?
1061 // it does :-), we need this for KDevelop, so please don't uncomment it again -Sandy 1061 // it does :-), we need this for KDevelop, so please don't uncomment it again -Sandy
1062} 1062}
1063 1063
1064void KateViewInternal::mouseDoubleClickEvent(QMouseEvent *e) { 1064void KateViewInternal::mouseDoubleClickEvent(QMouseEvent *e) {
1065 1065
1066 if (e->button() == LeftButton) { 1066 if (e->button() == LeftButton) {
1067 VConfig c; 1067 VConfig c;
1068 getVConfig(c); 1068 getVConfig(c);
1069 myDoc->selectWord(c.cursor, c.flags); 1069 myDoc->selectWord(c.cursor, c.flags);
1070 myDoc->updateViews(); 1070 myDoc->updateViews();
1071 } 1071 }
1072} 1072}
1073 1073
1074void KateViewInternal::mouseReleaseEvent(QMouseEvent *e) { 1074void KateViewInternal::mouseReleaseEvent(QMouseEvent *e) {
1075 1075
1076 if (e->button() == LeftButton) { 1076 if (e->button() == LeftButton) {
1077 if (myView->config() & KateView::cfMouseAutoCopy) myView->copy(); 1077 if (myView->config() & KateView::cfMouseAutoCopy) myView->copy();
1078 killTimer(scrollTimer); 1078 killTimer(scrollTimer);
1079 scrollTimer = 0; 1079 scrollTimer = 0;
1080 } 1080 }
1081} 1081}
1082 1082
1083void KateViewInternal::mouseMoveEvent(QMouseEvent *e) { 1083void KateViewInternal::mouseMoveEvent(QMouseEvent *e) {
1084 1084
1085 if (e->state() & LeftButton) { 1085 if (e->state() & LeftButton) {
1086 int flags; 1086 int flags;
1087 int d; 1087 int d;
1088 int x = e->x(), 1088 int x = e->x(),
1089 y = e->y(); 1089 y = e->y();
1090 1090
1091 mouseX = e->x(); 1091 mouseX = e->x();
1092 mouseY = e->y(); 1092 mouseY = e->y();
1093 scrollX = 0; 1093 scrollX = 0;
1094 scrollY = 0; 1094 scrollY = 0;
1095 d = myDoc->fontHeight; 1095 d = myDoc->fontHeight;
1096 if (mouseX < 0) { 1096 if (mouseX < 0) {
1097 mouseX = 0; 1097 mouseX = 0;
1098 scrollX = -d; 1098 scrollX = -d;
1099 } 1099 }
1100 if (mouseX > width()) { 1100 if (mouseX > width()) {
1101 mouseX = width(); 1101 mouseX = width();
1102 scrollX = d; 1102 scrollX = d;
1103 } 1103 }
1104 if (mouseY < 0) { 1104 if (mouseY < 0) {
1105 mouseY = 0; 1105 mouseY = 0;
1106 scrollY = -d; 1106 scrollY = -d;
1107 } 1107 }
1108 if (mouseY > height()) { 1108 if (mouseY > height()) {
1109 mouseY = height(); 1109 mouseY = height();
1110 scrollY = d; 1110 scrollY = d;
1111 } 1111 }
1112//debug("modifiers %d", ((KGuiCmdApp *) kapp)->getModifiers()); 1112//debug("modifiers %d", ((KGuiCmdApp *) kapp)->getModifiers());
1113 flags = KateView::cfMark; 1113 flags = KateView::cfMark;
1114 if (e->state() & ControlButton) flags |= KateView::cfKeepSelection; 1114 if (e->state() & ControlButton) flags |= KateView::cfKeepSelection;
1115 placeCursor(mouseX, mouseY, flags); 1115 placeCursor(mouseX, mouseY, flags);
1116 myDoc->updateViews(/*ufNoScroll*/); 1116 myDoc->updateViews(/*ufNoScroll*/);
1117 } 1117 }
1118} 1118}
1119 1119
1120 1120
1121 1121
1122void KateViewInternal::wheelEvent( QWheelEvent *e ) 1122void KateViewInternal::wheelEvent( QWheelEvent *e )
1123{ 1123{
1124 if( yScroll->isVisible() == true ) 1124 if( yScroll->isVisible() == true )
1125 { 1125 {
1126 QApplication::sendEvent( yScroll, e ); 1126 QApplication::sendEvent( yScroll, e );
1127 } 1127 }
1128} 1128}
1129 1129
1130 1130
1131 1131
1132void KateViewInternal::paintEvent(QPaintEvent *e) { 1132void KateViewInternal::paintEvent(QPaintEvent *e) {
1133 int xStart, xEnd; 1133 int xStart, xEnd;
1134 int h; 1134 int h;
1135 int line, y, yEnd; 1135 int line, y, yEnd;
1136 1136
1137 QRect updateR = e->rect(); 1137 QRect updateR = e->rect();
1138 1138
1139 if (!drawBuffer) return; 1139 if (!drawBuffer) return;
1140 if (drawBuffer->isNull()) return; 1140 if (drawBuffer->isNull()) return;
1141 1141
1142 QPainter paint; 1142 QPainter paint;
1143 paint.begin(drawBuffer); 1143 paint.begin(drawBuffer);
1144 1144
1145 xStart = xPos-2 + updateR.x(); 1145 xStart = xPos-2 + updateR.x();
1146 xEnd = xStart + updateR.width(); 1146 xEnd = xStart + updateR.width();
1147 1147
1148 h = myDoc->fontHeight; 1148 h = myDoc->fontHeight;
1149 line = (yPos + updateR.y()) / h; 1149 line = (yPos + updateR.y()) / h;
1150 y = line*h - yPos; 1150 y = line*h - yPos;
1151 yEnd = updateR.y() + updateR.height(); 1151 yEnd = updateR.y() + updateR.height();
1152 waitForPreHighlight=myDoc->needPreHighlight(waitForPreHighlight=line+((long)(yEnd-y)/h)+5); 1152 waitForPreHighlight=myDoc->needPreHighlight(waitForPreHighlight=line+((long)(yEnd-y)/h)+5);
1153 1153
1154 while (y < yEnd) 1154 while (y < yEnd)
1155 { 1155 {
1156 TextLine *textLine; 1156 TextLine *textLine;
1157 int ctxNum = 0; 1157 int ctxNum = 0;
1158 myDoc->paintTextLine(paint, line, xStart, xEnd, myView->configFlags & KateView::cfShowTabs); 1158 myDoc->paintTextLine(paint, line, xStart, xEnd, myView->configFlags & KateView::cfShowTabs);
1159 bitBlt(this, updateR.x(), y, drawBuffer, 0, 0, updateR.width(), h); 1159 bitBlt(this, updateR.x(), y, drawBuffer, 0, 0, updateR.width(), h);
1160 leftBorder->paintLine(line); 1160 leftBorder->paintLine(line);
1161 line++; 1161 line++;
1162 y += h; 1162 y += h;
1163 } 1163 }
1164 paint.end(); 1164 paint.end();
1165 1165
1166 if (cursorOn) paintCursor(); 1166 if (cursorOn) paintCursor();
1167 if (bm.eXPos > bm.sXPos) paintBracketMark(); 1167 if (bm.eXPos > bm.sXPos) paintBracketMark();
1168} 1168}
1169 1169
1170void KateViewInternal::resizeEvent(QResizeEvent *) 1170void KateViewInternal::resizeEvent(QResizeEvent *)
1171{ 1171{
1172 drawBuffer->resize (width(), myDoc->fontHeight); 1172 drawBuffer->resize (width(), myDoc->fontHeight);
1173 leftBorder->resize(iconBorderWidth, height()); 1173 leftBorder->resize(iconBorderWidth, height());
1174} 1174}
1175 1175
1176void KateViewInternal::timerEvent(QTimerEvent *e) { 1176void KateViewInternal::timerEvent(QTimerEvent *e) {
1177 if (e->timerId() == cursorTimer) { 1177 if (e->timerId() == cursorTimer) {
1178 cursorOn = !cursorOn; 1178 cursorOn = !cursorOn;
1179 paintCursor(); 1179 paintCursor();
1180 } 1180 }
1181 if (e->timerId() == scrollTimer && (scrollX | scrollY)) { 1181 if (e->timerId() == scrollTimer && (scrollX | scrollY)) {
1182 xScroll->setValue(xPos + scrollX); 1182 xScroll->setValue(xPos + scrollX);
1183 yScroll->setValue(yPos + scrollY); 1183 yScroll->setValue(yPos + scrollY);
1184 1184
1185 placeCursor(mouseX, mouseY, KateView::cfMark); 1185 placeCursor(mouseX, mouseY, KateView::cfMark);
1186 myDoc->updateViews(/*ufNoScroll*/); 1186 myDoc->updateViews(/*ufNoScroll*/);
1187 } 1187 }
1188} 1188}
1189 1189
1190uint KateView::uniqueID = 0; 1190uint KateView::uniqueID = 0;
1191 1191
1192KateView::KateView(KateDocument *doc, QWidget *parent, const char * name) : Kate::View (doc, parent, name) 1192KateView::KateView(KateDocument *doc, QWidget *parent, const char * name) : Kate::View (doc, parent, name)
1193{ 1193{
1194 1194
1195 myViewID = uniqueID; 1195 myViewID = uniqueID;
1196 uniqueID++; 1196 uniqueID++;
1197 1197
1198 active = false; 1198 active = false;
1199 myIconBorder = false; 1199 myIconBorder = false;
1200 1200
1201 myDoc = doc; 1201 myDoc = doc;
1202 myViewInternal = new KateViewInternal (this,doc); 1202 myViewInternal = new KateViewInternal (this,doc);
1203 myViewInternal->move(2, 2); 1203 myViewInternal->move(2, 2);
1204 myViewInternal->leftBorder = new KateIconBorder(this, myViewInternal); 1204 myViewInternal->leftBorder = new KateIconBorder(this, myViewInternal);
1205 myViewInternal->leftBorder->setGeometry(2, 2, myViewInternal->iconBorderWidth, myViewInternal->iconBorderHeight); 1205 myViewInternal->leftBorder->setGeometry(2, 2, myViewInternal->iconBorderWidth, myViewInternal->iconBorderHeight);
1206 myViewInternal->leftBorder->hide(); 1206 myViewInternal->leftBorder->hide();
1207 1207
1208 doc->addView( this ); 1208 doc->addView( this );
1209 1209
1210 1210
1211 // some defaults 1211 // some defaults
1212 configFlags = KateView::cfAutoIndent | KateView::cfBackspaceIndents 1212 configFlags = KateView::cfAutoIndent | KateView::cfBackspaceIndents
1213 | KateView::cfTabIndents | KateView::cfKeepIndentProfile 1213 | KateView::cfTabIndents | KateView::cfKeepIndentProfile
1214 | KateView::cfRemoveSpaces 1214 | KateView::cfRemoveSpaces
1215 | KateView::cfDelOnInput | KateView::cfMouseAutoCopy | KateView::cfWrapCursor 1215 | KateView::cfDelOnInput | KateView::cfMouseAutoCopy | KateView::cfWrapCursor
1216 | KateView::cfGroupUndo | KateView::cfShowTabs | KateView::cfSmartHome; 1216 | KateView::cfGroupUndo | KateView::cfShowTabs | KateView::cfSmartHome;
1217 1217
1218 searchFlags = 0; 1218 searchFlags = 0;
1219 replacePrompt = 0L; 1219 replacePrompt = 0L;
1220 rmbMenu = 0L; 1220 rmbMenu = 0L;
1221 1221
1222 1222
1223 setFocusProxy( myViewInternal ); 1223 setFocusProxy( myViewInternal );
1224 myViewInternal->setFocus(); 1224 myViewInternal->setFocus();
1225 resize(parent->width() -4, parent->height() -4); 1225 resize(parent->width() -4, parent->height() -4);
1226 1226
1227 1227
1228 myViewInternal->installEventFilter( this ); 1228 myViewInternal->installEventFilter( this );
1229 1229
1230 //setupActions(); 1230 //setupActions();
1231 1231
1232 connect( this, SIGNAL( newStatus() ), this, SLOT( slotUpdate() ) ); 1232 connect( this, SIGNAL( newStatus() ), this, SLOT( slotUpdate() ) );
1233 connect( this, SIGNAL( newUndo() ), this, SLOT( slotNewUndo() ) ); 1233 connect( this, SIGNAL( newUndo() ), this, SLOT( slotNewUndo() ) );
1234 connect( doc, SIGNAL( fileNameChanged() ), this, SLOT( slotFileStatusChanged() ) ); 1234 connect( doc, SIGNAL( fileNameChanged() ), this, SLOT( slotFileStatusChanged() ) );
1235 connect( doc, SIGNAL( highlightChanged() ), this, SLOT( slotHighlightChanged() ) ); 1235 connect( doc, SIGNAL( highlightChanged() ), this, SLOT( slotHighlightChanged() ) );
1236 1236
1237 readConfig(); 1237 readConfig();
1238// setHighlight->setCurrentItem(getHl()); 1238// setHighlight->setCurrentItem(getHl());
1239 slotUpdate(); 1239 slotUpdate();
1240} 1240}
1241 1241
1242KateView::~KateView() 1242KateView::~KateView()
1243{ 1243{
1244 1244
1245 if (myDoc && !myDoc->m_bSingleViewMode) 1245 if (myDoc && !myDoc->m_bSingleViewMode)
1246 myDoc->removeView( this ); 1246 myDoc->removeView( this );
1247 1247
1248 delete myViewInternal; 1248 delete myViewInternal;
1249 1249
1250} 1250}
1251 1251
1252#if 0 1252#if 0
1253void KateView::setupActions() 1253void KateView::setupActions()
1254{ 1254{
1255#if 0 1255#if 0
1256 KStdAction::close( this, SLOT(flush()), actionCollection(), "file_close" ); 1256 KStdAction::close( this, SLOT(flush()), actionCollection(), "file_close" );
1257 1257
1258 KStdAction::save(this, SLOT(save()), actionCollection()); 1258 KStdAction::save(this, SLOT(save()), actionCollection());
1259 1259
1260 // setup edit menu 1260 // setup edit menu
1261 editUndo = KStdAction::undo(this, SLOT(undo()), actionCollection()); 1261 editUndo = KStdAction::undo(this, SLOT(undo()), actionCollection());
1262 editRedo = KStdAction::redo(this, SLOT(redo()), actionCollection()); 1262 editRedo = KStdAction::redo(this, SLOT(redo()), actionCollection());
1263 editUndoHist = new KAction(i18n("Undo/Redo &History..."), 0, this, SLOT(undoHistory()), 1263 editUndoHist = new KAction(i18n("Undo/Redo &History..."), 0, this, SLOT(undoHistory()),
1264 actionCollection(), "edit_undoHistory"); 1264 actionCollection(), "edit_undoHistory");
1265 KStdAction::cut(this, SLOT(cut()), actionCollection()); 1265 KStdAction::cut(this, SLOT(cut()), actionCollection());
1266 KStdAction::copy(this, SLOT(copy()), actionCollection()); 1266 KStdAction::copy(this, SLOT(copy()), actionCollection());
1267 KStdAction::paste(this, SLOT(paste()), actionCollection()); 1267 KStdAction::paste(this, SLOT(paste()), actionCollection());
1268 1268
1269 if ( myDoc->hasBrowserExtension() ) 1269 if ( myDoc->hasBrowserExtension() )
1270 { 1270 {
1271 KStdAction::saveAs(this, SLOT(saveAs()), myDoc->actionCollection()); 1271 KStdAction::saveAs(this, SLOT(saveAs()), myDoc->actionCollection());
1272 KStdAction::find(this, SLOT(find()), myDoc->actionCollection(), "find"); 1272 KStdAction::find(this, SLOT(find()), myDoc->actionCollection(), "find");
1273 KStdAction::findNext(this, SLOT(findAgain()), myDoc->actionCollection(), "find_again"); 1273 KStdAction::findNext(this, SLOT(findAgain()), myDoc->actionCollection(), "find_again");
1274 KStdAction::findPrev(this, SLOT(findPrev()), myDoc->actionCollection(), "find_prev"); 1274 KStdAction::findPrev(this, SLOT(findPrev()), myDoc->actionCollection(), "find_prev");
1275 KStdAction::gotoLine(this, SLOT(gotoLine()), myDoc->actionCollection(), "goto_line" ); 1275 KStdAction::gotoLine(this, SLOT(gotoLine()), myDoc->actionCollection(), "goto_line" );
1276 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),myDoc->actionCollection(), "set_confdlg"); 1276 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),myDoc->actionCollection(), "set_confdlg");
1277 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, myDoc->actionCollection(), "set_highlight"); 1277 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, myDoc->actionCollection(), "set_highlight");
1278 KStdAction::selectAll(this, SLOT(selectAll()), myDoc->actionCollection(), "select_all"); 1278 KStdAction::selectAll(this, SLOT(selectAll()), myDoc->actionCollection(), "select_all");
1279 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()), 1279 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()),
1280 myDoc->actionCollection(), "unselect_all"); 1280 myDoc->actionCollection(), "unselect_all");
1281 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()), 1281 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()),
1282 myDoc->actionCollection(), "invert_select"); 1282 myDoc->actionCollection(), "invert_select");
1283 1283
1284 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()), 1284 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()),
1285 myDoc->actionCollection(), "incFontSizes"); 1285 myDoc->actionCollection(), "incFontSizes");
1286 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()), 1286 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()),
1287 myDoc->actionCollection(), "decFontSizes"); 1287 myDoc->actionCollection(), "decFontSizes");
1288 } 1288 }
1289 else 1289 else
1290 { 1290 {
1291 KStdAction::saveAs(this, SLOT(saveAs()), actionCollection()); 1291 KStdAction::saveAs(this, SLOT(saveAs()), actionCollection());
1292 KStdAction::find(this, SLOT(find()), actionCollection()); 1292 KStdAction::find(this, SLOT(find()), actionCollection());
1293 KStdAction::findNext(this, SLOT(findAgain()), actionCollection()); 1293 KStdAction::findNext(this, SLOT(findAgain()), actionCollection());
1294 KStdAction::findPrev(this, SLOT(findPrev()), actionCollection(), "edit_find_prev"); 1294 KStdAction::findPrev(this, SLOT(findPrev()), actionCollection(), "edit_find_prev");
1295 KStdAction::gotoLine(this, SLOT(gotoLine()), actionCollection()); 1295 KStdAction::gotoLine(this, SLOT(gotoLine()), actionCollection());
1296 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),actionCollection(), "set_confdlg"); 1296 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),actionCollection(), "set_confdlg");
1297 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, actionCollection(), "set_highlight"); 1297 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, actionCollection(), "set_highlight");
1298 KStdAction::selectAll(this, SLOT(selectAll()), actionCollection()); 1298 KStdAction::selectAll(this, SLOT(selectAll()), actionCollection());
1299 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()), 1299 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()),
1300 actionCollection(), "edit_deselectAll"); 1300 actionCollection(), "edit_deselectAll");
1301 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()), 1301 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()),
1302 actionCollection(), "edit_invertSelection"); 1302 actionCollection(), "edit_invertSelection");
1303 1303
1304 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()), 1304 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()),
1305 actionCollection(), "incFontSizes"); 1305 actionCollection(), "incFontSizes");
1306 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()), 1306 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()),
1307 actionCollection(), "decFontSizes"); 1307 actionCollection(), "decFontSizes");
1308 } 1308 }
1309 1309
1310 new KAction(i18n("Apply Word Wrap"), 0, myDoc, SLOT(applyWordWrap()), actionCollection(), "edit_apply_wordwrap"); 1310 new KAction(i18n("Apply Word Wrap"), 0, myDoc, SLOT(applyWordWrap()), actionCollection(), "edit_apply_wordwrap");
1311 1311
1312 KStdAction::replace(this, SLOT(replace()), actionCollection()); 1312 KStdAction::replace(this, SLOT(replace()), actionCollection());
1313 1313
1314 new KAction(i18n("Editing Co&mmand"), Qt::CTRL+Qt::Key_M, this, SLOT(slotEditCommand()), 1314 new KAction(i18n("Editing Co&mmand"), Qt::CTRL+Qt::Key_M, this, SLOT(slotEditCommand()),
1315 actionCollection(), "edit_cmd"); 1315 actionCollection(), "edit_cmd");
1316 1316
1317 // setup bookmark menu 1317 // setup bookmark menu
1318 bookmarkToggle = new KAction(i18n("Toggle &Bookmark"), Qt::CTRL+Qt::Key_B, this, SLOT(toggleBookmark()), actionCollection(), "edit_bookmarkToggle"); 1318 bookmarkToggle = new KAction(i18n("Toggle &Bookmark"), Qt::CTRL+Qt::Key_B, this, SLOT(toggleBookmark()), actionCollection(), "edit_bookmarkToggle");
1319 bookmarkClear = new KAction(i18n("Clear Bookmarks"), 0, this, SLOT(clearBookmarks()), actionCollection(), "edit_bookmarksClear"); 1319 bookmarkClear = new KAction(i18n("Clear Bookmarks"), 0, this, SLOT(clearBookmarks()), actionCollection(), "edit_bookmarksClear");
1320 1320
1321 // connect settings menu aboutToshow 1321 // connect settings menu aboutToshow
1322 bookmarkMenu = new KActionMenu(i18n("&Bookmarks"), actionCollection(), "bookmarks"); 1322 bookmarkMenu = new KActionMenu(i18n("&Bookmarks"), actionCollection(), "bookmarks");
1323 connect(bookmarkMenu->popupMenu(), SIGNAL(aboutToShow()), this, SLOT(bookmarkMenuAboutToShow())); 1323 connect(bookmarkMenu->popupMenu(), SIGNAL(aboutToShow()), this, SLOT(bookmarkMenuAboutToShow()));
1324 1324
1325 new KToggleAction(i18n("Show &IconBorder"), Key_F6, this, SLOT(toggleIconBorder()), actionCollection(), "view_border"); 1325 new KToggleAction(i18n("Show &IconBorder"), Key_F6, this, SLOT(toggleIconBorder()), actionCollection(), "view_border");
1326 1326
1327 // setup Tools menu 1327 // setup Tools menu
1328 KStdAction::spelling(this, SLOT(spellcheck()), actionCollection()); 1328 KStdAction::spelling(this, SLOT(spellcheck()), actionCollection());
1329 new KAction(i18n("&Indent"), "indent", Qt::CTRL+Qt::Key_I, this, SLOT(indent()), 1329 new KAction(i18n("&Indent"), "indent", Qt::CTRL+Qt::Key_I, this, SLOT(indent()),
1330 actionCollection(), "tools_indent"); 1330 actionCollection(), "tools_indent");
1331 new KAction(i18n("&Unindent"), "unindent", Qt::CTRL+Qt::Key_U, this, SLOT(unIndent()), 1331 new KAction(i18n("&Unindent"), "unindent", Qt::CTRL+Qt::Key_U, this, SLOT(unIndent()),
1332 actionCollection(), "tools_unindent"); 1332 actionCollection(), "tools_unindent");
1333 new KAction(i18n("&Clean Indentation"), 0, this, SLOT(cleanIndent()), 1333 new KAction(i18n("&Clean Indentation"), 0, this, SLOT(cleanIndent()),
1334 actionCollection(), "tools_cleanIndent"); 1334 actionCollection(), "tools_cleanIndent");
1335 new KAction(i18n("C&omment"), CTRL+Qt::Key_NumberSign, this, SLOT(comment()), 1335 new KAction(i18n("C&omment"), CTRL+Qt::Key_NumberSign, this, SLOT(comment()),
1336 actionCollection(), "tools_comment"); 1336 actionCollection(), "tools_comment");
1337 new KAction(i18n("Unco&mment"), CTRL+SHIFT+Qt::Key_NumberSign, this, SLOT(uncomment()), 1337 new KAction(i18n("Unco&mment"), CTRL+SHIFT+Qt::Key_NumberSign, this, SLOT(uncomment()),
1338 actionCollection(), "tools_uncomment"); 1338 actionCollection(), "tools_uncomment");
1339 1339
1340 setVerticalSelection = new KToggleAction(i18n("&Vertical Selection"), Key_F4, this, SLOT(toggleVertical()), 1340 setVerticalSelection = new KToggleAction(i18n("&Vertical Selection"), Key_F4, this, SLOT(toggleVertical()),
1341 actionCollection(), "set_verticalSelect"); 1341 actionCollection(), "set_verticalSelect");
1342 1342
1343 connect(setHighlight, SIGNAL(activated(int)), this, SLOT(setHl(int))); 1343 connect(setHighlight, SIGNAL(activated(int)), this, SLOT(setHl(int)));
1344 QStringList list; 1344 QStringList list;
1345 for (int z = 0; z < HlManager::self()->highlights(); z++) 1345 for (int z = 0; z < HlManager::self()->highlights(); z++)
1346 list.append(HlManager::self()->hlName(z)); 1346 list.append(HlManager::self()->hlName(z));
1347 setHighlight->setItems(list); 1347 setHighlight->setItems(list);
1348 1348
1349 setEndOfLine = new KSelectAction(i18n("&End Of Line"), 0, actionCollection(), "set_eol"); 1349 setEndOfLine = new KSelectAction(i18n("&End Of Line"), 0, actionCollection(), "set_eol");
1350 connect(setEndOfLine, SIGNAL(activated(int)), this, SLOT(setEol(int))); 1350 connect(setEndOfLine, SIGNAL(activated(int)), this, SLOT(setEol(int)));
1351 list.clear(); 1351 list.clear();
1352 list.append("&Unix"); 1352 list.append("&Unix");
1353 list.append("&Windows/Dos"); 1353 list.append("&Windows/Dos");
1354 list.append("&Macintosh"); 1354 list.append("&Macintosh");
1355 setEndOfLine->setItems(list); 1355 setEndOfLine->setItems(list);
1356#endif 1356#endif
1357} 1357}
1358#endif 1358#endif
1359 1359
1360void KateView::slotUpdate() 1360void KateView::slotUpdate()
1361{ 1361{
1362 int cfg = config(); 1362 int cfg = config();
1363 1363
1364#warning fixme setVerticalSelection->setChecked(cfg & KateView::cfVerticalSelect); 1364#warning fixme setVerticalSelection->setChecked(cfg & KateView::cfVerticalSelect);
1365 1365
1366 slotNewUndo(); 1366 slotNewUndo();
1367} 1367}
1368void KateView::slotFileStatusChanged() 1368void KateView::slotFileStatusChanged()
1369{ 1369{
1370 int eol = getEol(); 1370 int eol = getEol();
1371 eol = eol>=1 ? eol : 0; 1371 eol = eol>=1 ? eol : 0;
1372 1372
1373#warning fixme setEndOfLine->setCurrentItem(eol); 1373#warning fixme setEndOfLine->setCurrentItem(eol);
1374} 1374}
1375void KateView::slotNewUndo() 1375void KateView::slotNewUndo()
1376{ 1376{
1377#if 0 1377#if 0
1378 int state = undoState(); 1378 int state = undoState();
1379 1379
1380 editUndoHist->setEnabled(state & 1 || state & 2); 1380 editUndoHist->setEnabled(state & 1 || state & 2);
1381 1381
1382 QString t = i18n("Und&o"); // it would be nicer to fetch the original string 1382 QString t = i18n("Und&o"); // it would be nicer to fetch the original string
1383 if (state & 1) { 1383 if (state & 1) {
1384 editUndo->setEnabled(true); 1384 editUndo->setEnabled(true);
1385 t += ' '; 1385 t += ' ';
1386 t += i18n(undoTypeName(nextUndoType())); 1386 t += i18n(undoTypeName(nextUndoType()));
1387 } else { 1387 } else {
1388 editUndo->setEnabled(false); 1388 editUndo->setEnabled(false);
1389 } 1389 }
1390 editUndo->setText(t); 1390 editUndo->setText(t);
1391 1391
1392 t = i18n("Re&do"); // it would be nicer to fetch the original string 1392 t = i18n("Re&do"); // it would be nicer to fetch the original string
1393 if (state & 2) { 1393 if (state & 2) {
1394 editRedo->setEnabled(true); 1394 editRedo->setEnabled(true);
1395 t += ' '; 1395 t += ' ';
1396 t += i18n(undoTypeName(nextRedoType())); 1396 t += i18n(undoTypeName(nextRedoType()));
1397 } else { 1397 } else {
1398 editRedo->setEnabled(false); 1398 editRedo->setEnabled(false);
1399 } 1399 }
1400 editRedo->setText(t); 1400 editRedo->setText(t);
1401#endif 1401#endif
1402} 1402}
1403 1403
1404void KateView::slotHighlightChanged() 1404void KateView::slotHighlightChanged()
1405{ 1405{
1406// setHighlight->setCurrentItem(getHl()); 1406// setHighlight->setCurrentItem(getHl());
1407} 1407}
1408 1408
1409 1409
1410void KateView::keyPressEvent( QKeyEvent *ev ) 1410void KateView::keyPressEvent( QKeyEvent *ev )
1411{ 1411{
1412 switch ( ev->key() ) 1412 switch ( ev->key() )
1413 { 1413 {
1414 case Key_Left: 1414 case Key_Left:
1415 if ( ev->state() & ShiftButton ) 1415 if ( ev->state() & ShiftButton )
1416 { 1416 {
1417 if ( ev->state() & ControlButton ) 1417 if ( ev->state() & ControlButton )
1418 shiftWordLeft(); 1418 shiftWordLeft();
1419 else 1419 else
1420 shiftCursorLeft(); 1420 shiftCursorLeft();
1421 } 1421 }
1422 else if ( ev->state() & ControlButton ) 1422 else if ( ev->state() & ControlButton )
1423 wordLeft(); 1423 wordLeft();
1424 else 1424 else
1425 cursorLeft(); 1425 cursorLeft();
1426 break; 1426 break;
1427 case Key_Right: 1427 case Key_Right:
1428 if ( ev->state() & ShiftButton ) 1428 if ( ev->state() & ShiftButton )
1429 { 1429 {
1430 if ( ev->state() & ControlButton ) 1430 if ( ev->state() & ControlButton )
1431 shiftWordRight(); 1431 shiftWordRight();
1432 else 1432 else
1433 shiftCursorRight(); 1433 shiftCursorRight();
1434 } 1434 }
1435 else if ( ev->state() & ControlButton ) 1435 else if ( ev->state() & ControlButton )
1436 wordRight(); 1436 wordRight();
1437 else 1437 else
1438 cursorRight(); 1438 cursorRight();
1439 break; 1439 break;
1440 case Key_Home: 1440 case Key_Home:
1441 if ( ev->state() & ShiftButton ) 1441 if ( ev->state() & ShiftButton )
1442 { 1442 {
1443 if ( ev->state() & ControlButton ) 1443 if ( ev->state() & ControlButton )
1444 shiftTop(); 1444 shiftTop();
1445 else 1445 else
1446 shiftHome(); 1446 shiftHome();
1447 } 1447 }
1448 else if ( ev->state() & ControlButton ) 1448 else if ( ev->state() & ControlButton )
1449 top(); 1449 top();
1450 else 1450 else
1451 home(); 1451 home();
1452 break; 1452 break;
1453 case Key_End: 1453 case Key_End:
1454 if ( ev->state() & ShiftButton ) 1454 if ( ev->state() & ShiftButton )
1455 { 1455 {
1456 if ( ev->state() & ControlButton ) 1456 if ( ev->state() & ControlButton )
1457 shiftBottom(); 1457 shiftBottom();
1458 else 1458 else
1459 shiftEnd(); 1459 shiftEnd();
1460 } 1460 }
1461 else if ( ev->state() & ControlButton ) 1461 else if ( ev->state() & ControlButton )
1462 bottom(); 1462 bottom();
1463 else 1463 else
1464 end(); 1464 end();
1465 break; 1465 break;
1466 case Key_Up: 1466 case Key_Up:
1467 if ( ev->state() & ShiftButton ) 1467 if ( ev->state() & ShiftButton )
1468 shiftUp(); 1468 shiftUp();
1469 else if ( ev->state() & ControlButton ) 1469 else if ( ev->state() & ControlButton )
1470 scrollUp(); 1470 scrollUp();
1471 else 1471 else
1472 up(); 1472 up();
1473 break; 1473 break;
1474 case Key_Down: 1474 case Key_Down:
1475 if ( ev->state() & ShiftButton ) 1475 if ( ev->state() & ShiftButton )
1476 shiftDown(); 1476 shiftDown();
1477 else if ( ev->state() & ControlButton ) 1477 else if ( ev->state() & ControlButton )
1478 scrollDown(); 1478 scrollDown();
1479 else 1479 else
1480 down(); 1480 down();
1481 break; 1481 break;
1482 case Key_PageUp: 1482 case Key_PageUp:
1483 if ( ev->state() & ShiftButton ) 1483 if ( ev->state() & ShiftButton )
1484 shiftPageUp(); 1484 shiftPageUp();
1485 else if ( ev->state() & ControlButton ) 1485 else if ( ev->state() & ControlButton )
1486 topOfView(); 1486 topOfView();
1487 else 1487 else
1488 pageUp(); 1488 pageUp();
1489 break; 1489 break;
1490 case Key_PageDown: 1490 case Key_PageDown:
1491 if ( ev->state() & ShiftButton ) 1491 if ( ev->state() & ShiftButton )
1492 shiftPageDown(); 1492 shiftPageDown();
1493 else if ( ev->state() & ControlButton ) 1493 else if ( ev->state() & ControlButton )
1494 bottomOfView(); 1494 bottomOfView();
1495 else 1495 else
1496 pageDown(); 1496 pageDown();
1497 break; 1497 break;
1498 case Key_Return: 1498 case Key_Return:
1499 case Key_Enter: 1499 case Key_Enter:
1500 keyReturn(); 1500 keyReturn();
1501 break; 1501 break;
1502 case Key_Delete: 1502 case Key_Delete:
1503 if ( ev->state() & ControlButton ) 1503 if ( ev->state() & ControlButton )
1504 { 1504 {
1505 VConfig c; 1505 VConfig c;
1506 shiftWordRight(); 1506 shiftWordRight();
1507 myViewInternal->getVConfig(c); 1507 myViewInternal->getVConfig(c);
1508 myDoc->delMarkedText(c); 1508 myDoc->delMarkedText(c);
1509 myViewInternal->update(); 1509 myViewInternal->update();
1510 } 1510 }
1511 else keyDelete(); 1511 else keyDelete();
1512 break; 1512 break;
1513 case Key_Backspace: 1513 case Key_Backspace:
1514 if ( ev->state() & ControlButton ) 1514 if ( ev->state() & ControlButton )
1515 { 1515 {
1516 VConfig c; 1516 VConfig c;
1517 shiftWordLeft(); 1517 shiftWordLeft();
1518 myViewInternal->getVConfig(c); 1518 myViewInternal->getVConfig(c);
1519 myDoc->delMarkedText(c); 1519 myDoc->delMarkedText(c);
1520 myViewInternal->update(); 1520 myViewInternal->update();
1521 } 1521 }
1522 else backspace(); 1522 else backspace();
1523 break; 1523 break;
1524 case Key_Insert: 1524 case Key_Insert:
1525 toggleInsert(); 1525 toggleInsert();
1526 break; 1526 break;
1527 case Key_K: 1527 case Key_K:
1528 if ( ev->state() & ControlButton ) 1528 if ( ev->state() & ControlButton )
1529 { 1529 {
1530 killLine(); 1530 killLine();
1531 break; 1531 break;
1532 } 1532 }
1533 default: 1533 default:
1534 KTextEditor::View::keyPressEvent( ev ); 1534 KTextEditor::View::keyPressEvent( ev );
1535 return; 1535 return;
1536 break; 1536 break;
1537 } 1537 }
1538 ev->accept(); 1538 ev->accept();
1539} 1539}
1540 1540
1541 1541
1542void KateView::setCursorPosition( int line, int col, bool /*mark*/ ) 1542void KateView::setCursorPosition( int line, int col, bool /*mark*/ )
1543{ 1543{
1544 setCursorPositionInternal( line, col ); 1544 setCursorPositionInternal( line, col );
1545} 1545}
1546 1546
1547void KateView::getCursorPosition( int *line, int *col ) 1547void KateView::getCursorPosition( int *line, int *col )
1548{ 1548{
1549 if ( line ) 1549 if ( line )
1550 *line = currentLine(); 1550 *line = currentLine();
1551 1551
1552 if ( col ) 1552 if ( col )
1553 *col = currentColumn(); 1553 *col = currentColumn();
1554} 1554}
1555 1555
1556 1556
1557int KateView::currentLine() { 1557int KateView::currentLine() {
1558 return myViewInternal->cursor.y; 1558 return myViewInternal->cursor.y;
1559} 1559}
1560 1560
1561int KateView::currentColumn() { 1561int KateView::currentColumn() {
1562 return myDoc->currentColumn(myViewInternal->cursor); 1562 return myDoc->currentColumn(myViewInternal->cursor);
1563} 1563}
1564 1564
1565int KateView::currentCharNum() { 1565int KateView::currentCharNum() {
1566 return myViewInternal->cursor.x; 1566 return myViewInternal->cursor.x;
1567} 1567}
1568 1568
1569void KateView::setCursorPositionInternal(int line, int col) { 1569void KateView::setCursorPositionInternal(int line, int col) {
1570 PointStruc cursor; 1570 PointStruc cursor;
1571 1571
1572 cursor.x = col; 1572 cursor.x = col;
1573 cursor.y = line; 1573 cursor.y = line;
1574 myViewInternal->updateCursor(cursor); 1574 myViewInternal->updateCursor(cursor);
1575 myViewInternal->center(); 1575 myViewInternal->center();
1576// myViewInternal->updateView(ufPos, 0, line*myDoc->fontHeight - height()/2); 1576// myViewInternal->updateView(ufPos, 0, line*myDoc->fontHeight - height()/2);
1577// myDoc->updateViews(myViewInternal); //uptade all other views except this one 1577// myDoc->updateViews(myViewInternal); //uptade all other views except this one
1578 myDoc->updateViews(); 1578 myDoc->updateViews();
1579} 1579}
1580 1580
1581int KateView::config() { 1581int KateView::config() {
1582 int flags; 1582 int flags;
1583 1583
1584 flags = configFlags; 1584 flags = configFlags;
1585 if (myDoc->singleSelection()) flags |= KateView::cfSingleSelection; 1585 if (myDoc->singleSelection()) flags |= KateView::cfSingleSelection;
1586 return flags; 1586 return flags;
1587} 1587}
1588 1588
1589void KateView::setConfig(int flags) { 1589void KateView::setConfig(int flags) {
1590 bool updateView; 1590 bool updateView;
1591 1591
1592 // cfSingleSelection is a doc-property 1592 // cfSingleSelection is a doc-property
1593 myDoc->setSingleSelection(flags & KateView::cfSingleSelection); 1593 myDoc->setSingleSelection(flags & KateView::cfSingleSelection);
1594 flags &= ~KateView::cfSingleSelection; 1594 flags &= ~KateView::cfSingleSelection;
1595 1595
1596 if (flags != configFlags) { 1596 if (flags != configFlags) {
1597 // update the view if visibility of tabs has changed 1597 // update the view if visibility of tabs has changed
1598 updateView = (flags ^ configFlags) & KateView::cfShowTabs; 1598 updateView = (flags ^ configFlags) & KateView::cfShowTabs;
1599 configFlags = flags; 1599 configFlags = flags;
1600 emit newStatus(); 1600 emit newStatus();
1601 if (updateView) myViewInternal->update(); 1601 if (updateView) myViewInternal->update();
1602 } 1602 }
1603} 1603}
1604 1604
1605int KateView::tabWidth() { 1605int KateView::tabWidth() {
1606 return myDoc->tabChars; 1606 return myDoc->tabChars;
1607} 1607}
1608 1608
1609void KateView::setTabWidth(int w) { 1609void KateView::setTabWidth(int w) {
1610 myDoc->setTabWidth(w); 1610 myDoc->setTabWidth(w);
1611 myDoc->updateViews(); 1611 myDoc->updateViews();
1612} 1612}
1613 1613
1614void KateView::setEncoding (QString e) { 1614void KateView::setEncoding (QString e) {
1615 myDoc->setEncoding (e); 1615 myDoc->setEncoding (e);
1616 myDoc->updateViews(); 1616 myDoc->updateViews();
1617} 1617}
1618 1618
1619int KateView::undoSteps() { 1619int KateView::undoSteps() {
1620 return myDoc->undoSteps; 1620 return myDoc->undoSteps;
1621} 1621}
1622 1622
1623void KateView::setUndoSteps(int s) { 1623void KateView::setUndoSteps(int s) {
1624 myDoc->setUndoSteps(s); 1624 myDoc->setUndoSteps(s);
1625} 1625}
1626 1626
1627bool KateView::isReadOnly() { 1627bool KateView::isReadOnly() {
1628 return myDoc->readOnly; 1628 return myDoc->readOnly;
1629} 1629}
1630 1630
1631bool KateView::isModified() { 1631bool KateView::isModified() {
1632 return myDoc->modified; 1632 return myDoc->modified;
1633} 1633}
1634 1634
1635void KateView::setReadOnly(bool m) { 1635void KateView::setReadOnly(bool m) {
1636 myDoc->setReadOnly(m); 1636 myDoc->setReadOnly(m);
1637} 1637}
1638 1638
1639void KateView::setModified(bool m) { 1639void KateView::setModified(bool m) {
1640 myDoc->setModified(m); 1640 myDoc->setModified(m);
1641} 1641}
1642 1642
1643bool KateView::isLastView() { 1643bool KateView::isLastView() {
1644 return myDoc->isLastView(1); 1644 return myDoc->isLastView(1);
1645} 1645}
1646 1646
1647KateDocument *KateView::doc() { 1647KateDocument *KateView::doc() {
1648 return myDoc; 1648 return myDoc;
1649} 1649}
1650 1650
1651int KateView::undoState() { 1651int KateView::undoState() {
1652 if (isReadOnly()) 1652 if (isReadOnly())
1653 return 0; 1653 return 0;
1654 else 1654 else
1655 return myDoc->undoState; 1655 return myDoc->undoState;
1656} 1656}
1657 1657
1658int KateView::nextUndoType() { 1658int KateView::nextUndoType() {
1659 return myDoc->nextUndoType(); 1659 return myDoc->nextUndoType();
1660} 1660}
1661 1661
1662int KateView::nextRedoType() { 1662int KateView::nextRedoType() {
1663 return myDoc->nextRedoType(); 1663 return myDoc->nextRedoType();
1664} 1664}
1665 1665
1666void KateView::undoTypeList(QValueList<int> &lst) 1666void KateView::undoTypeList(QValueList<int> &lst)
1667{ 1667{
1668 myDoc->undoTypeList(lst); 1668 myDoc->undoTypeList(lst);
1669} 1669}
1670 1670
1671void KateView::redoTypeList(QValueList<int> &lst) 1671void KateView::redoTypeList(QValueList<int> &lst)
1672{ 1672{
1673 myDoc->redoTypeList(lst); 1673 myDoc->redoTypeList(lst);
1674} 1674}
1675 1675
1676const char * KateView::undoTypeName(int type) { 1676const char * KateView::undoTypeName(int type) {
1677 return KateActionGroup::typeName(type); 1677 return KateActionGroup::typeName(type);
1678} 1678}
1679 1679
1680QColor* KateView::getColors() 1680QColor* KateView::getColors()
1681{ 1681{
1682 return myDoc->colors; 1682 return myDoc->colors;
1683} 1683}
1684 1684
1685void KateView::applyColors() 1685void KateView::applyColors()
1686{ 1686{
1687 myDoc->tagAll(); 1687 myDoc->tagAll();
1688 myDoc->updateViews(); 1688 myDoc->updateViews();
1689} 1689}
1690 1690
1691bool KateView::isOverwriteMode() const 1691bool KateView::isOverwriteMode() const
1692{ 1692{
1693 return ( configFlags & KateView::cfOvr ); 1693 return ( configFlags & KateView::cfOvr );
1694} 1694}
1695 1695
1696void KateView::setOverwriteMode( bool b ) 1696void KateView::setOverwriteMode( bool b )
1697{ 1697{
1698 if ( isOverwriteMode() && !b ) 1698 if ( isOverwriteMode() && !b )
1699 setConfig( configFlags ^ KateView::cfOvr ); 1699 setConfig( configFlags ^ KateView::cfOvr );
1700 else 1700 else
1701 setConfig( configFlags | KateView::cfOvr ); 1701 setConfig( configFlags | KateView::cfOvr );
1702} 1702}
1703 1703
1704void KateView::toggleInsert() { 1704void KateView::toggleInsert() {
1705 setConfig(configFlags ^ KateView::cfOvr); 1705 setConfig(configFlags ^ KateView::cfOvr);
1706} 1706}
1707 1707
1708void KateView::toggleVertical() 1708void KateView::toggleVertical()
1709{ 1709{
1710 setConfig(configFlags ^ KateView::cfVerticalSelect); 1710 setConfig(configFlags ^ KateView::cfVerticalSelect);
1711} 1711}
1712 1712
1713 1713
1714int KateView::numLines() { 1714int KateView::numLines() {
1715 return myDoc->numLines(); 1715 return myDoc->numLines();
1716} 1716}
1717 1717
1718QString KateView::text() { 1718QString KateView::text() {
1719 return myDoc->text(); 1719 return myDoc->text();
1720} 1720}
1721 1721
1722QString KateView::currentTextLine() { 1722QString KateView::currentTextLine() {
1723 TextLine::Ptr textLine = myDoc->getTextLine(myViewInternal->cursor.y); 1723 TextLine::Ptr textLine = myDoc->getTextLine(myViewInternal->cursor.y);
1724 return QString(textLine->getText(), textLine->length()); 1724 return QString(textLine->getText(), textLine->length());
1725} 1725}
1726 1726
1727QString KateView::textLine(int num) { 1727QString KateView::textLine(int num) {
1728 TextLine::Ptr textLine = myDoc->getTextLine(num); 1728 TextLine::Ptr textLine = myDoc->getTextLine(num);
1729 return QString(textLine->getText(), textLine->length()); 1729 return QString(textLine->getText(), textLine->length());
1730} 1730}
1731 1731
1732QString KateView::currentWord() { 1732QString KateView::currentWord() {
1733 return myDoc->getWord(myViewInternal->cursor); 1733 return myDoc->getWord(myViewInternal->cursor);
1734} 1734}
1735 1735
1736QString KateView::word(int x, int y) { 1736QString KateView::word(int x, int y) {
1737 PointStruc cursor; 1737 PointStruc cursor;
1738 cursor.y = (myViewInternal->yPos + y)/myDoc->fontHeight; 1738 cursor.y = (myViewInternal->yPos + y)/myDoc->fontHeight;
1739 if (cursor.y < 0 || cursor.y > myDoc->lastLine()) return QString(); 1739 if (cursor.y < 0 || cursor.y > myDoc->lastLine()) return QString();
1740 cursor.x = myDoc->textPos(myDoc->getTextLine(cursor.y), myViewInternal->xPos-2 + x); 1740 cursor.x = myDoc->textPos(myDoc->getTextLine(cursor.y), myViewInternal->xPos-2 + x);
1741 return myDoc->getWord(cursor); 1741 return myDoc->getWord(cursor);
1742} 1742}
1743 1743
1744void KateView::setText(const QString &s) { 1744void KateView::setText(const QString &s) {
1745 myDoc->setText(s); 1745 myDoc->setText(s);
1746 myDoc->updateViews(); 1746 myDoc->updateViews();
1747} 1747}
1748 1748
1749void KateView::insertText(const QString &s, bool /*mark*/) { 1749void KateView::insertText(const QString &s, bool /*mark*/) {
1750 VConfig c; 1750 VConfig c;
1751 myViewInternal->getVConfig(c); 1751 myViewInternal->getVConfig(c);
1752 myDoc->insert(c, s); 1752 myDoc->insert(c, s);
1753 myDoc->updateViews(); 1753 myDoc->updateViews();
1754} 1754}
1755 1755
1756bool KateView::hasMarkedText() { 1756bool KateView::hasMarkedText() {
1757 return myDoc->hasMarkedText(); 1757 return myDoc->hasMarkedText();
1758} 1758}
1759 1759
1760QString KateView::markedText() { 1760QString KateView::markedText() {
1761 return myDoc->markedText(configFlags); 1761 return myDoc->markedText(configFlags);
1762} 1762}
1763 1763
1764bool KateView::canDiscard() { 1764bool KateView::canDiscard() {
1765 int query; 1765 int query;
1766 1766
1767 if (isModified()) { 1767 if (isModified()) {
1768 query = KMessageBox::warningYesNoCancel(this, 1768 query = KMessageBox::warningYesNoCancel(this,
1769 i18n("The current Document has been modified.\nWould you like to save it?")); 1769 i18n("The current Document has been modified.\nWould you like to save it?"));
1770 switch (query) { 1770 switch (query) {
1771 case KMessageBox::Yes: //yes 1771 case KMessageBox::Yes: //yes
1772 if (save() == CANCEL) return false; 1772 if (save() == CANCEL) return false;
1773 if (isModified()) { 1773 if (isModified()) {
1774 query = KMessageBox::warningContinueCancel(this, 1774 query = KMessageBox::warningContinueCancel(this,
1775 i18n("Could not save the document.\nDiscard it and continue?"), 1775 i18n("Could not save the document.\nDiscard it and continue?"),
1776 QString::null, i18n("&Discard")); 1776 QString::null, i18n("&Discard"));
1777 if (query == KMessageBox::Cancel) return false; 1777 if (query == KMessageBox::Cancel) return false;
1778 } 1778 }
1779 break; 1779 break;
1780 case KMessageBox::Cancel: //cancel 1780 case KMessageBox::Cancel: //cancel
1781 return false; 1781 return false;
1782 } 1782 }
1783 } 1783 }
1784 return true; 1784 return true;
1785} 1785}
1786 1786
1787void KateView::flush() 1787void KateView::flush()
1788{ 1788{
1789 if (canDiscard()) myDoc->flush(); 1789 if (canDiscard()) myDoc->flush();
1790} 1790}
1791 1791
1792KateView::fileResult KateView::save() { 1792KateView::fileResult KateView::save() {
1793 int query = KMessageBox::Yes; 1793 int query = KMessageBox::Yes;
1794 if (isModified()) { 1794 if (isModified()) {
1795 return saveAs(); 1795 return saveAs();
1796 } 1796 }
1797 return OK; 1797 return OK;
1798} 1798}
1799 1799
1800KateView::fileResult KateView::saveAs() { 1800KateView::fileResult KateView::saveAs() {
1801 return OK; 1801 return OK;
1802} 1802}
1803 1803
1804void KateView::doCursorCommand(int cmdNum) { 1804void KateView::doCursorCommand(int cmdNum) {
1805 VConfig c; 1805 VConfig c;
1806 myViewInternal->getVConfig(c); 1806 myViewInternal->getVConfig(c);
1807 if (cmdNum & selectFlag) c.flags |= KateView::cfMark; 1807 if (cmdNum & selectFlag) c.flags |= KateView::cfMark;
1808 if (cmdNum & multiSelectFlag) c.flags |= KateView::cfMark | KateView::cfKeepSelection; 1808 if (cmdNum & multiSelectFlag) c.flags |= KateView::cfMark | KateView::cfKeepSelection;
1809 cmdNum &= ~(selectFlag | multiSelectFlag); 1809 cmdNum &= ~(selectFlag | multiSelectFlag);
1810 myViewInternal->doCursorCommand(c, cmdNum); 1810 myViewInternal->doCursorCommand(c, cmdNum);
1811 myDoc->updateViews(); 1811 myDoc->updateViews();
1812} 1812}
1813 1813
1814void KateView::doEditCommand(int cmdNum) { 1814void KateView::doEditCommand(int cmdNum) {
1815 VConfig c; 1815 VConfig c;
1816 myViewInternal->getVConfig(c); 1816 myViewInternal->getVConfig(c);
1817 myViewInternal->doEditCommand(c, cmdNum); 1817 myViewInternal->doEditCommand(c, cmdNum);
1818 myDoc->updateViews(); 1818 myDoc->updateViews();
1819} 1819}
1820 1820
1821void KateView::undoMultiple(int count) { 1821void KateView::undoMultiple(int count) {
1822 if (isReadOnly()) 1822 if (isReadOnly())
1823 return; 1823 return;
1824 1824
1825 VConfig c; 1825 VConfig c;
1826 myViewInternal->getVConfig(c); 1826 myViewInternal->getVConfig(c);
1827 myDoc->undo(c, count); 1827 myDoc->undo(c, count);
1828 myDoc->updateViews(); 1828 myDoc->updateViews();
1829} 1829}
1830 1830
1831void KateView::redoMultiple(int count) { 1831void KateView::redoMultiple(int count) {
1832 if (isReadOnly()) 1832 if (isReadOnly())
1833 return; 1833 return;
1834 1834
1835 VConfig c; 1835 VConfig c;
1836 myViewInternal->getVConfig(c); 1836 myViewInternal->getVConfig(c);
1837 myDoc->redo(c, count); 1837 myDoc->redo(c, count);
1838 myDoc->updateViews(); 1838 myDoc->updateViews();
1839} 1839}
1840 1840
1841void KateView::undoHistory() 1841void KateView::undoHistory()
1842{ 1842{
1843 UndoHistory *undoH; 1843 UndoHistory *undoH;
1844 1844
1845 undoH = new UndoHistory(this, this, "UndoHistory", true); 1845 undoH = new UndoHistory(this, this, "UndoHistory", true);
1846 1846
1847 undoH->setCaption(i18n("Undo/Redo History")); 1847 undoH->setCaption(i18n("Undo/Redo History"));
1848 1848
1849 connect(this,SIGNAL(newUndo()),undoH,SLOT(newUndo())); 1849 connect(this,SIGNAL(newUndo()),undoH,SLOT(newUndo()));
1850 connect(undoH,SIGNAL(undo(int)),this,SLOT(undoMultiple(int))); 1850 connect(undoH,SIGNAL(undo(int)),this,SLOT(undoMultiple(int)));
1851 connect(undoH,SIGNAL(redo(int)),this,SLOT(redoMultiple(int))); 1851 connect(undoH,SIGNAL(redo(int)),this,SLOT(redoMultiple(int)));
1852 1852
1853 undoH->exec(); 1853 undoH->exec();
1854 1854
1855 delete undoH; 1855 delete undoH;
1856} 1856}
1857 1857
1858static void kwview_addToStrList(QStringList &list, const QString &str) { 1858static void kwview_addToStrList(QStringList &list, const QString &str) {
1859 if (list.count() > 0) { 1859 if (list.count() > 0) {
1860 if (list.first() == str) return; 1860 if (list.first() == str) return;
1861 QStringList::Iterator it; 1861 QStringList::Iterator it;
1862 it = list.find(str); 1862 it = list.find(str);
1863 if (*it != 0L) list.remove(it); 1863 if (*it != 0L) list.remove(it);
1864 if (list.count() >= 16) list.remove(list.fromLast()); 1864 if (list.count() >= 16) list.remove(list.fromLast());
1865 } 1865 }
1866 list.prepend(str); 1866 list.prepend(str);
1867} 1867}
1868 1868
1869void KateView::find() { 1869void KateView::find() {
1870 SearchDialog *searchDialog; 1870 SearchDialog *searchDialog;
1871 1871
1872 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected; 1872 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected;
1873 1873
1874 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList, 1874 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList,
1875 searchFlags & ~KateView::sfReplace); 1875 searchFlags & ~KateView::sfReplace);
1876 1876
1877 // If the user has marked some text we use that otherwise 1877 // If the user has marked some text we use that otherwise
1878 // use the word under the cursor. 1878 // use the word under the cursor.
1879 QString str; 1879 QString str;
1880 if (myDoc->hasMarkedText()) 1880 if (myDoc->hasMarkedText())
1881 str = markedText(); 1881 str = markedText();
1882 1882
1883 if (str.isEmpty()) 1883 if (str.isEmpty())
1884 str = currentWord(); 1884 str = currentWord();
1885 1885
1886 if (!str.isEmpty()) 1886 if (!str.isEmpty())
1887 { 1887 {
1888 str.replace(QRegExp("^\n"), ""); 1888 str.replace(QRegExp("^\n"), "");
1889 int pos=str.find("\n"); 1889 int pos=str.find("\n");
1890 if (pos>-1) 1890 if (pos>-1)
1891 str=str.left(pos); 1891 str=str.left(pos);
1892 searchDialog->setSearchText( str ); 1892 searchDialog->setSearchText( str );
1893 } 1893 }
1894 1894
1895 myViewInternal->focusOutEvent(0L);// QT bug ? 1895 myViewInternal->focusOutEvent(0L);// QT bug ?
1896 if (searchDialog->exec() == QDialog::Accepted) { 1896 if (searchDialog->exec() == QDialog::Accepted) {
1897 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor()); 1897 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor());
1898 searchFlags = searchDialog->getFlags() | (searchFlags & KateView::sfPrompt); 1898 searchFlags = searchDialog->getFlags() | (searchFlags & KateView::sfPrompt);
1899 initSearch(s, searchFlags); 1899 initSearch(s, searchFlags);
1900 findAgain(s); 1900 findAgain(s);
1901 } 1901 }
1902 delete searchDialog; 1902 delete searchDialog;
1903} 1903}
1904 1904
1905void KateView::replace() { 1905void KateView::replace() {
1906 SearchDialog *searchDialog; 1906 SearchDialog *searchDialog;
1907 1907
1908 if (isReadOnly()) return; 1908 if (isReadOnly()) return;
1909 1909
1910 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected; 1910 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected;
1911 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList, 1911 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList,
1912 searchFlags | KateView::sfReplace); 1912 searchFlags | KateView::sfReplace);
1913 1913
1914 // If the user has marked some text we use that otherwise 1914 // If the user has marked some text we use that otherwise
1915 // use the word under the cursor. 1915 // use the word under the cursor.
1916 QString str; 1916 QString str;
1917 if (myDoc->hasMarkedText()) 1917 if (myDoc->hasMarkedText())
1918 str = markedText(); 1918 str = markedText();
1919 1919
1920 if (str.isEmpty()) 1920 if (str.isEmpty())
1921 str = currentWord(); 1921 str = currentWord();
1922 1922
1923 if (!str.isEmpty()) 1923 if (!str.isEmpty())
1924 { 1924 {
1925 str.replace(QRegExp("^\n"), ""); 1925 str.replace(QRegExp("^\n"), "");
1926 int pos=str.find("\n"); 1926 int pos=str.find("\n");
1927 if (pos>-1) 1927 if (pos>-1)
1928 str=str.left(pos); 1928 str=str.left(pos);
1929 searchDialog->setSearchText( str ); 1929 searchDialog->setSearchText( str );
1930 } 1930 }
1931 1931
1932 myViewInternal->focusOutEvent(0L);// QT bug ? 1932 myViewInternal->focusOutEvent(0L);// QT bug ?
1933 if (searchDialog->exec() == QDialog::Accepted) { 1933 if (searchDialog->exec() == QDialog::Accepted) {
1934// myDoc->recordReset(); 1934// myDoc->recordReset();
1935 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor()); 1935 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor());
1936 kwview_addToStrList(myDoc->replaceWithList, searchDialog->getReplaceWith()); 1936 kwview_addToStrList(myDoc->replaceWithList, searchDialog->getReplaceWith());
1937 searchFlags = searchDialog->getFlags(); 1937 searchFlags = searchDialog->getFlags();
1938 initSearch(s, searchFlags); 1938 initSearch(s, searchFlags);
1939 replaceAgain(); 1939 replaceAgain();
1940 } 1940 }
1941 delete searchDialog; 1941 delete searchDialog;
1942} 1942}
1943 1943
1944void KateView::gotoLine() { 1944void KateView::gotoLine() {
1945 GotoLineDialog *dlg; 1945 GotoLineDialog *dlg;
1946 PointStruc cursor; 1946 PointStruc cursor;
1947 1947
1948 dlg = new GotoLineDialog(this, myViewInternal->cursor.y + 1, myDoc->numLines()); 1948 dlg = new GotoLineDialog(this, myViewInternal->cursor.y + 1, myDoc->numLines());
1949// dlg = new GotoLineDialog(myViewInternal->cursor.y + 1, this); 1949// dlg = new GotoLineDialog(myViewInternal->cursor.y + 1, this);
1950 1950
1951 if (dlg->exec() == QDialog::Accepted) { 1951 if (dlg->exec() == QDialog::Accepted) {
1952// myDoc->recordReset(); 1952// myDoc->recordReset();
1953 cursor.x = 0; 1953 cursor.x = 0;
1954 cursor.y = dlg->getLine() - 1; 1954 cursor.y = dlg->getLine() - 1;
1955 myDoc->needPreHighlight(cursor.y); 1955 myDoc->needPreHighlight(cursor.y);
1956 myViewInternal->updateCursor(cursor); 1956 myViewInternal->updateCursor(cursor);
1957 myViewInternal->center(); 1957 myViewInternal->center();
1958 myViewInternal->updateView(KateView::ufUpdateOnScroll); 1958 myViewInternal->updateView(KateView::ufUpdateOnScroll);
1959 myDoc->updateViews(this); //uptade all other views except this one 1959 myDoc->updateViews(this); //uptade all other views except this one
1960 } 1960 }
1961 delete dlg; 1961 delete dlg;
1962} 1962}
1963 1963
1964 1964
1965void KateView::initSearch(SConfig &s, int flags) { 1965void KateView::initSearch(SConfig &s, int flags) {
1966 1966
1967 s.flags = flags; 1967 s.flags = flags;
1968 s.setPattern(myDoc->searchForList.first()); 1968 s.setPattern(myDoc->searchForList.first());
1969 1969
1970 if (!(s.flags & KateView::sfFromBeginning)) { 1970 if (!(s.flags & KateView::sfFromBeginning)) {
1971 // If we are continuing a backward search, make sure we do not get stuck 1971 // If we are continuing a backward search, make sure we do not get stuck
1972 // at an existing match. 1972 // at an existing match.
1973 s.cursor = myViewInternal->cursor; 1973 s.cursor = myViewInternal->cursor;
1974 TextLine::Ptr textLine = myDoc->getTextLine(s.cursor.y); 1974 TextLine::Ptr textLine = myDoc->getTextLine(s.cursor.y);
1975 QString const txt(textLine->getText(),textLine->length()); 1975 QString const txt(textLine->getText(),textLine->length());
1976 const QString searchFor= myDoc->searchForList.first(); 1976 const QString searchFor= myDoc->searchForList.first();
1977 int pos = s.cursor.x-searchFor.length()-1; 1977 int pos = s.cursor.x-searchFor.length()-1;
1978 if ( pos < 0 ) pos = 0; 1978 if ( pos < 0 ) pos = 0;
1979 pos= txt.find(searchFor, pos, s.flags & KateView::sfCaseSensitive); 1979 pos= txt.find(searchFor, pos, s.flags & KateView::sfCaseSensitive);
1980 if ( s.flags & KateView::sfBackward ) 1980 if ( s.flags & KateView::sfBackward )
1981 { 1981 {
1982 if ( pos <= s.cursor.x ) s.cursor.x= pos-1; 1982 if ( pos <= s.cursor.x ) s.cursor.x= pos-1;
1983 } 1983 }
1984 else 1984 else
1985 if ( pos == s.cursor.x ) s.cursor.x++; 1985 if ( pos == s.cursor.x ) s.cursor.x++;
1986 } else { 1986 } else {
1987 if (!(s.flags & KateView::sfBackward)) { 1987 if (!(s.flags & KateView::sfBackward)) {
1988 s.cursor.x = 0; 1988 s.cursor.x = 0;
1989 s.cursor.y = 0; 1989 s.cursor.y = 0;
1990 } else { 1990 } else {
1991 s.cursor.x = -1; 1991 s.cursor.x = -1;
1992 s.cursor.y = myDoc->lastLine(); 1992 s.cursor.y = myDoc->lastLine();
1993 } 1993 }
1994 s.flags |= KateView::sfFinished; 1994 s.flags |= KateView::sfFinished;
1995 } 1995 }
1996 if (!(s.flags & KateView::sfBackward)) { 1996 if (!(s.flags & KateView::sfBackward)) {
1997 if (!(s.cursor.x || s.cursor.y)) 1997 if (!(s.cursor.x || s.cursor.y))
1998 s.flags |= KateView::sfFinished; 1998 s.flags |= KateView::sfFinished;
1999 } 1999 }
2000 s.startCursor = s.cursor; 2000 s.startCursor = s.cursor;
2001} 2001}
2002 2002
2003void KateView::continueSearch(SConfig &s) { 2003void KateView::continueSearch(SConfig &s) {
2004 2004
2005 if (!(s.flags & KateView::sfBackward)) { 2005 if (!(s.flags & KateView::sfBackward)) {
2006 s.cursor.x = 0; 2006 s.cursor.x = 0;
2007 s.cursor.y = 0; 2007 s.cursor.y = 0;
2008 } else { 2008 } else {
2009 s.cursor.x = -1; 2009 s.cursor.x = -1;
2010 s.cursor.y = myDoc->lastLine(); 2010 s.cursor.y = myDoc->lastLine();
2011 } 2011 }
2012 s.flags |= KateView::sfFinished; 2012 s.flags |= KateView::sfFinished;
2013 s.flags &= ~KateView::sfAgain; 2013 s.flags &= ~KateView::sfAgain;
2014} 2014}
2015 2015
2016void KateView::findAgain(SConfig &s) { 2016void KateView::findAgain(SConfig &s) {
2017 int query; 2017 int query;
2018 PointStruc cursor; 2018 PointStruc cursor;
2019 QString str; 2019 QString str;
2020 2020
2021 QString searchFor = myDoc->searchForList.first(); 2021 QString searchFor = myDoc->searchForList.first();
2022 2022
2023 if( searchFor.isEmpty() ) { 2023 if( searchFor.isEmpty() ) {
2024 find(); 2024 find();
2025 return; 2025 return;
2026 } 2026 }
2027 2027
2028 do { 2028 do {
2029 query = KMessageBox::Cancel; 2029 query = KMessageBox::Cancel;
2030 if (myDoc->doSearch(s,searchFor)) { 2030 if (myDoc->doSearch(s,searchFor)) {
2031 cursor = s.cursor; 2031 cursor = s.cursor;
2032 if (!(s.flags & KateView::sfBackward)) 2032 if (!(s.flags & KateView::sfBackward))
2033 s.cursor.x += s.matchedLength; 2033 s.cursor.x += s.matchedLength;
2034 myViewInternal->updateCursor(s.cursor); //does deselectAll() 2034 myViewInternal->updateCursor(s.cursor); //does deselectAll()
2035 exposeFound(cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,false); 2035 exposeFound(cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,false);
2036 } else { 2036 } else {
2037 if (!(s.flags & KateView::sfFinished)) { 2037 if (!(s.flags & KateView::sfFinished)) {
2038 // ask for continue 2038 // ask for continue
2039 if (!(s.flags & KateView::sfBackward)) { 2039 if (!(s.flags & KateView::sfBackward)) {
2040 // forward search 2040 // forward search
2041 str = i18n("End of document reached.\n" 2041 str = i18n("End of document reached.\n"
2042 "Continue from the beginning?"); 2042 "Continue from the beginning?");
2043 query = KMessageBox::warningContinueCancel(this, 2043 query = KMessageBox::warningContinueCancel(this,
2044 str, i18n("Find"), i18n("Continue")); 2044 str, i18n("Find"), i18n("Continue"));
2045 } else { 2045 } else {
2046 // backward search 2046 // backward search
2047 str = i18n("Beginning of document reached.\n" 2047 str = i18n("Beginning of document reached.\n"
2048 "Continue from the end?"); 2048 "Continue from the end?");
2049 query = KMessageBox::warningContinueCancel(this, 2049 query = KMessageBox::warningContinueCancel(this,
2050 str, i18n("Find"), i18n("Continue")); 2050 str, i18n("Find"), i18n("Continue"));
2051 } 2051 }
2052 continueSearch(s); 2052 continueSearch(s);
2053 } else { 2053 } else {
2054 // wrapped 2054 // wrapped
2055 KMessageBox::sorry(this, 2055 KMessageBox::sorry(this,
2056 i18n("Search string '%1' not found!").arg(searchFor), 2056 i18n("Search string '%1' not found!").arg(searchFor),
2057 i18n("Find")); 2057 i18n("Find"));
2058 } 2058 }
2059 } 2059 }
2060 } while (query == KMessageBox::Continue); 2060 } while (query == KMessageBox::Continue);
2061} 2061}
2062 2062
2063void KateView::replaceAgain() { 2063void KateView::replaceAgain() {
2064 if (isReadOnly()) 2064 if (isReadOnly())
2065 return; 2065 return;
2066 2066
2067 replaces = 0; 2067 replaces = 0;
2068 if (s.flags & KateView::sfPrompt) { 2068 if (s.flags & KateView::sfPrompt) {
2069 doReplaceAction(-1); 2069 doReplaceAction(-1);
2070 } else { 2070 } else {
2071 doReplaceAction(KateView::srAll); 2071 doReplaceAction(KateView::srAll);
2072 } 2072 }
2073} 2073}
2074 2074
2075void KateView::doReplaceAction(int result, bool found) { 2075void KateView::doReplaceAction(int result, bool found) {
2076 int rlen; 2076 int rlen;
2077 PointStruc cursor; 2077 PointStruc cursor;
2078 bool started; 2078 bool started;
2079 2079
2080 QString searchFor = myDoc->searchForList.first(); 2080 QString searchFor = myDoc->searchForList.first();
2081 QString replaceWith = myDoc->replaceWithList.first(); 2081 QString replaceWith = myDoc->replaceWithList.first();
2082 rlen = replaceWith.length(); 2082 rlen = replaceWith.length();
2083 2083
2084 switch (result) { 2084 switch (result) {
2085 case KateView::srYes: //yes 2085 case KateView::srYes: //yes
2086 myDoc->recordStart(this, s.cursor, configFlags, 2086 myDoc->recordStart(this, s.cursor, configFlags,
2087 KateActionGroup::ugReplace, true); 2087 KateActionGroup::ugReplace, true);
2088 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith); 2088 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith);
2089 replaces++; 2089 replaces++;
2090 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x) 2090 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x)
2091 s.startCursor.x += rlen - s.matchedLength; 2091 s.startCursor.x += rlen - s.matchedLength;
2092 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen; 2092 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen;
2093 myDoc->recordEnd(this, s.cursor, configFlags | KateView::cfPersistent); 2093 myDoc->recordEnd(this, s.cursor, configFlags | KateView::cfPersistent);
2094 break; 2094 break;
2095 case KateView::srNo: //no 2095 case KateView::srNo: //no
2096 if (!(s.flags & KateView::sfBackward)) s.cursor.x += s.matchedLength; 2096 if (!(s.flags & KateView::sfBackward)) s.cursor.x += s.matchedLength;
2097 break; 2097 break;
2098 case KateView::srAll: //replace all 2098 case KateView::srAll: //replace all
2099 deleteReplacePrompt(); 2099 deleteReplacePrompt();
2100 do { 2100 do {
2101 started = false; 2101 started = false;
2102 while (found || myDoc->doSearch(s,searchFor)) { 2102 while (found || myDoc->doSearch(s,searchFor)) {
2103 if (!started) { 2103 if (!started) {
2104 found = false; 2104 found = false;
2105 myDoc->recordStart(this, s.cursor, configFlags, 2105 myDoc->recordStart(this, s.cursor, configFlags,
2106 KateActionGroup::ugReplace); 2106 KateActionGroup::ugReplace);
2107 started = true; 2107 started = true;
2108 } 2108 }
2109 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith); 2109 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith);
2110 replaces++; 2110 replaces++;
2111 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x) 2111 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x)
2112 s.startCursor.x += rlen - s.matchedLength; 2112 s.startCursor.x += rlen - s.matchedLength;
2113 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen; 2113 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen;
2114 } 2114 }
2115 if (started) myDoc->recordEnd(this, s.cursor, 2115 if (started) myDoc->recordEnd(this, s.cursor,
2116 configFlags | KateView::cfPersistent); 2116 configFlags | KateView::cfPersistent);
2117 } while (!askReplaceEnd()); 2117 } while (!askReplaceEnd());
2118 return; 2118 return;
2119 case KateView::srCancel: //cancel 2119 case KateView::srCancel: //cancel
2120 deleteReplacePrompt(); 2120 deleteReplacePrompt();
2121 return; 2121 return;
2122 default: 2122 default:
2123 replacePrompt = 0L; 2123 replacePrompt = 0L;
2124 } 2124 }
2125 2125
2126 do { 2126 do {
2127 if (myDoc->doSearch(s,searchFor)) { 2127 if (myDoc->doSearch(s,searchFor)) {
2128 //text found: highlight it, show replace prompt if needed and exit 2128 //text found: highlight it, show replace prompt if needed and exit
2129 cursor = s.cursor; 2129 cursor = s.cursor;
2130 if (!(s.flags & KateView::sfBackward)) cursor.x += s.matchedLength; 2130 if (!(s.flags & KateView::sfBackward)) cursor.x += s.matchedLength;
2131 myViewInternal->updateCursor(cursor); //does deselectAll() 2131 myViewInternal->updateCursor(cursor); //does deselectAll()
2132 exposeFound(s.cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,true); 2132 exposeFound(s.cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,true);
2133 if (replacePrompt == 0L) { 2133 if (replacePrompt == 0L) {
2134 replacePrompt = new ReplacePrompt(this); 2134 replacePrompt = new ReplacePrompt(this);
2135 myDoc->setPseudoModal(replacePrompt);//disable(); 2135 myDoc->setPseudoModal(replacePrompt);//disable();
2136 connect(replacePrompt,SIGNAL(clicked()),this,SLOT(replaceSlot())); 2136 connect(replacePrompt,SIGNAL(clicked()),this,SLOT(replaceSlot()));
2137 replacePrompt->show(); //this is not modal 2137 replacePrompt->show(); //this is not modal
2138 } 2138 }
2139 return; //exit if text found 2139 return; //exit if text found
2140 } 2140 }
2141 //nothing found: repeat until user cancels "repeat from beginning" dialog 2141 //nothing found: repeat until user cancels "repeat from beginning" dialog
2142 } while (!askReplaceEnd()); 2142 } while (!askReplaceEnd());
2143 deleteReplacePrompt(); 2143 deleteReplacePrompt();
2144} 2144}
2145 2145
2146void KateView::exposeFound(PointStruc &cursor, int slen, int flags, bool replace) { 2146void KateView::exposeFound(PointStruc &cursor, int slen, int flags, bool replace) {
2147 int x1, x2, y1, y2, xPos, yPos; 2147 int x1, x2, y1, y2, xPos, yPos;
2148 2148
2149 VConfig c; 2149 VConfig c;
2150 myViewInternal->getVConfig(c); 2150 myViewInternal->getVConfig(c);
2151 myDoc->selectLength(cursor,slen,c.flags); 2151 myDoc->selectLength(cursor,slen,c.flags);
2152 2152
2153 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 2153 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
2154 x1 = myDoc->textWidth(textLine,cursor.x) -10; 2154 x1 = myDoc->textWidth(textLine,cursor.x) -10;
2155 x2 = myDoc->textWidth(textLine,cursor.x + slen) +20; 2155 x2 = myDoc->textWidth(textLine,cursor.x + slen) +20;
2156 y1 = myDoc->fontHeight*cursor.y -10; 2156 y1 = myDoc->fontHeight*cursor.y -10;
2157 y2 = y1 + myDoc->fontHeight +30; 2157 y2 = y1 + myDoc->fontHeight +30;
2158 2158
2159 xPos = myViewInternal->xPos; 2159 xPos = myViewInternal->xPos;
2160 yPos = myViewInternal->yPos; 2160 yPos = myViewInternal->yPos;
2161 2161
2162 if (x1 < 0) x1 = 0; 2162 if (x1 < 0) x1 = 0;
2163 if (replace) y2 += 90; 2163 if (replace) y2 += 90;
2164 2164
2165 if (x1 < xPos || x2 > xPos + myViewInternal->width()) { 2165 if (x1 < xPos || x2 > xPos + myViewInternal->width()) {
2166 xPos = x2 - myViewInternal->width(); 2166 xPos = x2 - myViewInternal->width();
2167 } 2167 }
2168 if (y1 < yPos || y2 > yPos + myViewInternal->height()) { 2168 if (y1 < yPos || y2 > yPos + myViewInternal->height()) {
2169 xPos = x2 - myViewInternal->width(); 2169 xPos = x2 - myViewInternal->width();
2170 yPos = myDoc->fontHeight*cursor.y - height()/3; 2170 yPos = myDoc->fontHeight*cursor.y - height()/3;
2171 } 2171 }
2172 myViewInternal->setPos(xPos, yPos); 2172 myViewInternal->setPos(xPos, yPos);
2173 myViewInternal->updateView(flags);// | ufPos,xPos,yPos); 2173 myViewInternal->updateView(flags);// | ufPos,xPos,yPos);
2174 myDoc->updateViews(this); 2174 myDoc->updateViews(this);
2175} 2175}
2176 2176
2177void KateView::deleteReplacePrompt() { 2177void KateView::deleteReplacePrompt() {
2178 myDoc->setPseudoModal(0L); 2178 myDoc->setPseudoModal(0L);
2179} 2179}
2180 2180
2181bool KateView::askReplaceEnd() { 2181bool KateView::askReplaceEnd() {
2182 QString str; 2182 QString str;
2183 int query; 2183 int query;
2184 2184
2185 myDoc->updateViews(); 2185 myDoc->updateViews();
2186 if (s.flags & KateView::sfFinished) { 2186 if (s.flags & KateView::sfFinished) {
2187 // replace finished 2187 // replace finished
2188 str = i18n("%1 replacement(s) made").arg(replaces); 2188 str = i18n("%1 replacement(s) made").arg(replaces);
2189 KMessageBox::information(this, str, i18n("Replace")); 2189 KMessageBox::information(this, str, i18n("Replace"));
2190 return true; 2190 return true;
2191 } 2191 }
2192 2192
2193 // ask for continue 2193 // ask for continue
2194 if (!(s.flags & KateView::sfBackward)) { 2194 if (!(s.flags & KateView::sfBackward)) {
2195 // forward search 2195 // forward search
2196 str = i18n("%1 replacement(s) made.\n" 2196 str = i18n("%1 replacement(s) made.\n"
2197 "End of document reached.\n" 2197 "End of document reached.\n"
2198 "Continue from the beginning?").arg(replaces); 2198 "Continue from the beginning?").arg(replaces);
2199 query = KMessageBox::questionYesNo(this, str, i18n("Replace"), 2199 query = KMessageBox::questionYesNo(this, str, i18n("Replace"),
2200 i18n("Continue"), i18n("Stop")); 2200 i18n("Continue"), i18n("Stop"));
2201 } else { 2201 } else {
2202 // backward search 2202 // backward search
2203 str = i18n("%1 replacement(s) made.\n" 2203 str = i18n("%1 replacement(s) made.\n"
2204 "Beginning of document reached.\n" 2204 "Beginning of document reached.\n"
2205 "Continue from the end?").arg(replaces); 2205 "Continue from the end?").arg(replaces);
2206 query = KMessageBox::questionYesNo(this, str, i18n("Replace"), 2206 query = KMessageBox::questionYesNo(this, str, i18n("Replace"),
2207 i18n("Continue"), i18n("Stop")); 2207 i18n("Continue"), i18n("Stop"));
2208 } 2208 }
2209 replaces = 0; 2209 replaces = 0;
2210 continueSearch(s); 2210 continueSearch(s);
2211 return (query == KMessageBox::No); 2211 return (query == KMessageBox::No);
2212} 2212}
2213 2213
2214void KateView::replaceSlot() { 2214void KateView::replaceSlot() {
2215 doReplaceAction(replacePrompt->result(),true); 2215 doReplaceAction(replacePrompt->result(),true);
2216} 2216}
2217 2217
2218void KateView::installPopup(QPopupMenu *rmb_Menu) 2218void KateView::installPopup(QPopupMenu *rmb_Menu)
2219{ 2219{
2220 rmbMenu = rmb_Menu; 2220 rmbMenu = rmb_Menu;
2221} 2221}
2222 2222
2223void KateView::readConfig() 2223void KateView::readConfig()
2224{ 2224{
2225 KConfig *config = KGlobal::config(); 2225 KConfig *config = KGlobal::config();
2226 config->setGroup("Kate View"); 2226 config->setGroup("Kate View");
2227 2227
2228 searchFlags = config->readNumEntry("SearchFlags", KateView::sfPrompt); 2228 searchFlags = config->readNumEntry("SearchFlags", KateView::sfPrompt);
2229 configFlags = config->readNumEntry("ConfigFlags", configFlags) & ~KateView::cfMark; 2229 configFlags = config->readNumEntry("ConfigFlags", configFlags) & ~KateView::cfMark;
2230 2230
2231 config->sync(); 2231 config->sync();
2232} 2232}
2233 2233
2234void KateView::writeConfig() 2234void KateView::writeConfig()
2235{ 2235{
2236 KConfig *config = KGlobal::config(); 2236 KConfig *config = KGlobal::config();
2237 config->setGroup("Kate View"); 2237 config->setGroup("Kate View");
2238 2238
2239 config->writeEntry("SearchFlags",searchFlags); 2239 config->writeEntry("SearchFlags",searchFlags);
2240 config->writeEntry("ConfigFlags",configFlags); 2240 config->writeEntry("ConfigFlags",configFlags);
2241 2241
2242 config->sync(); 2242 config->sync();
2243} 2243}
2244 2244
2245void KateView::readSessionConfig(KConfig *config) 2245void KateView::readSessionConfig(KConfig *config)
2246{ 2246{
2247 PointStruc cursor; 2247 PointStruc cursor;
2248 2248
2249 myViewInternal->xPos = config->readNumEntry("XPos"); 2249 myViewInternal->xPos = config->readNumEntry("XPos");
2250 myViewInternal->yPos = config->readNumEntry("YPos"); 2250 myViewInternal->yPos = config->readNumEntry("YPos");
2251 cursor.x = config->readNumEntry("CursorX"); 2251 cursor.x = config->readNumEntry("CursorX");
2252 cursor.y = config->readNumEntry("CursorY"); 2252 cursor.y = config->readNumEntry("CursorY");
2253 myViewInternal->updateCursor(cursor); 2253 myViewInternal->updateCursor(cursor);
2254 myIconBorder = config->readBoolEntry("IconBorder on"); 2254 myIconBorder = config->readBoolEntry("IconBorder on");
2255 setIconBorder(myIconBorder); 2255 setIconBorder(myIconBorder);
2256} 2256}
2257 2257
2258void KateView::writeSessionConfig(KConfig *config) 2258void KateView::writeSessionConfig(KConfig *config)
2259{ 2259{
2260 config->writeEntry("XPos",myViewInternal->xPos); 2260 config->writeEntry("XPos",myViewInternal->xPos);
2261 config->writeEntry("YPos",myViewInternal->yPos); 2261 config->writeEntry("YPos",myViewInternal->yPos);
2262 config->writeEntry("CursorX",myViewInternal->cursor.x); 2262 config->writeEntry("CursorX",myViewInternal->cursor.x);
2263 config->writeEntry("CursorY",myViewInternal->cursor.y); 2263 config->writeEntry("CursorY",myViewInternal->cursor.y);
2264 config->writeEntry("IconBorder on", myIconBorder); 2264 config->writeEntry("IconBorder on", myIconBorder);
2265} 2265}
2266 2266
2267void KateView::configDialog() 2267void KateView::configDialog()
2268{ 2268{
2269 2269
2270#warning fixme 2270#warning fixme
2271 2271
2272#if 1 2272#if 1
2273 KDialogBase *kd = new KDialogBase(KDialogBase::IconList, 2273 KDialogBase *kd = new KDialogBase(KDialogBase::IconList,
2274 i18n("Configure Editor"), 2274 i18n("Configure Editor"),
2275 KDialogBase::Ok | KDialogBase::Cancel | 2275 KDialogBase::Ok | KDialogBase::Cancel |
2276 KDialogBase::Help , 2276 KDialogBase::Help ,
2277 KDialogBase::Ok, this, "tabdialog"); 2277 KDialogBase::Ok, this, "tabdialog");
2278 2278
2279 // color options 2279 // color options
2280 QFrame *page=kd->addPage(i18n("Colors")); 2280 QFrame *page=kd->addPage(i18n("Colors"));
2281 (new QVBoxLayout(page))->setAutoAdd(true); 2281 (new QVBoxLayout(page))->setAutoAdd(true);
2282 ColorConfig *colorConfig = new ColorConfig(page); 2282 ColorConfig *colorConfig = new ColorConfig(page);
2283 QColor* colors = getColors(); 2283 QColor* colors = getColors();
2284 colorConfig->setColors(colors); 2284 colorConfig->setColors(colors);
2285 2285
2286 page = kd->addPage(i18n("Fonts")); 2286 page = kd->addPage(i18n("Fonts"));
2287 (new QVBoxLayout(page))->setAutoAdd(true); 2287 (new QVBoxLayout(page))->setAutoAdd(true);
2288 2288
2289 FontConfig *fontConfig = new FontConfig(page); 2289 FontConfig *fontConfig = new FontConfig(page);
2290 fontConfig->setFont (myDoc->getFont()); 2290 fontConfig->setFont (myDoc->getFont());
2291 2291
2292 // indent options 2292 // indent options
2293 page=kd->addPage(i18n("Indent")); 2293 page=kd->addPage(i18n("Indent"));
2294 (new QVBoxLayout(page))->setAutoAdd(true); 2294 (new QVBoxLayout(page))->setAutoAdd(true);
2295 2295
2296 IndentConfigTab *indentConfig = new IndentConfigTab(page, this); 2296 IndentConfigTab *indentConfig = new IndentConfigTab(page, this);
2297 2297
2298 // select options 2298 // select options
2299 page=kd->addPage(i18n("Select")); 2299 page=kd->addPage(i18n("Select"));
2300 (new QVBoxLayout(page))->setAutoAdd(true); 2300 (new QVBoxLayout(page))->setAutoAdd(true);
2301 2301
2302 SelectConfigTab *selectConfig = new SelectConfigTab(page, this); 2302 SelectConfigTab *selectConfig = new SelectConfigTab(page, this);
2303 2303
2304 // edit options 2304 // edit options
2305 page=kd->addPage(i18n("Edit")); 2305 page=kd->addPage(i18n("Edit"));
2306 (new QVBoxLayout(page))->setAutoAdd(true); 2306 (new QVBoxLayout(page))->setAutoAdd(true);
2307 2307
2308 EditConfigTab *editConfig = new EditConfigTab(page, this); 2308 EditConfigTab *editConfig = new EditConfigTab(page, this);
2309 2309
2310 2310
2311 2311
2312 HighlightDialogPage *hlPage; 2312 HighlightDialogPage *hlPage;
2313 HlManager *hlManager; 2313 HlManager *hlManager;
2314 HlDataList hlDataList; 2314 HlDataList hlDataList;
2315 ItemStyleList defaultStyleList; 2315 ItemStyleList defaultStyleList;
2316 2316
2317 hlManager = HlManager::self(); 2317 hlManager = HlManager::self();
2318 2318
2319 defaultStyleList.setAutoDelete(true); 2319 defaultStyleList.setAutoDelete(true);
2320 hlManager->getDefaults(defaultStyleList); 2320 hlManager->getDefaults(defaultStyleList);
2321 2321
2322 hlDataList.setAutoDelete(true); 2322 hlDataList.setAutoDelete(true);
2323 //this gets the data from the KConfig object 2323 //this gets the data from the KConfig object
2324 hlManager->getHlDataList(hlDataList); 2324 hlManager->getHlDataList(hlDataList);
2325 2325
2326 page=kd->addPage(i18n("Highlighting")); 2326 page=kd->addPage(i18n("Highlighting"));
2327 (new QVBoxLayout(page))->setAutoAdd(true); 2327 (new QVBoxLayout(page))->setAutoAdd(true);
2328 2328
2329 hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page); 2329 hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page);
2330 kd->showMaximized(); 2330 kd->showMaximized();
2331 if (kd->exec()) { 2331 if (kd->exec()) {
2332 // color options 2332 // color options
2333 colorConfig->getColors(colors); 2333 colorConfig->getColors(colors);
2334 myDoc->setFont (fontConfig->getFont()); 2334 myDoc->setFont (fontConfig->getFont());
2335 2335
2336 applyColors(); 2336 applyColors();
2337 // indent options 2337 // indent options
2338 indentConfig->getData(this); 2338 indentConfig->getData(this);
2339 // select options 2339 // select options
2340 selectConfig->getData(this); 2340 selectConfig->getData(this);
2341 // edit options 2341 // edit options
2342 editConfig->getData(this); 2342 editConfig->getData(this);
2343 // spell checker 2343 // spell checker
2344 hlManager->setHlDataList(hlDataList); 2344 hlManager->setHlDataList(hlDataList);
2345 hlManager->setDefaults(defaultStyleList); 2345 hlManager->setDefaults(defaultStyleList);
2346 hlPage->saveData(); 2346 hlPage->saveData();
2347 } 2347 }
2348 2348
2349 delete kd; 2349// delete kd;
2350 2350
2351#endif 2351#endif
2352} 2352}
2353 2353
2354int KateView::getHl() { 2354int KateView::getHl() {
2355 return myDoc->highlightNum(); 2355 return myDoc->highlightNum();
2356} 2356}
2357 2357
2358void KateView::setDontChangeHlOnSave() 2358void KateView::setDontChangeHlOnSave()
2359{ 2359{
2360 myDoc->setDontChangeHlOnSave(); 2360 myDoc->setDontChangeHlOnSave();
2361} 2361}
2362 2362
2363void KateView::setHl(int n) { 2363void KateView::setHl(int n) {
2364 myDoc->setHighlight(n); 2364 myDoc->setHighlight(n);
2365 myDoc->setDontChangeHlOnSave(); 2365 myDoc->setDontChangeHlOnSave();
2366 myDoc->updateViews(); 2366 myDoc->updateViews();
2367} 2367}
2368 2368
2369int KateView::getEol() { 2369int KateView::getEol() {
2370 return myDoc->eolMode; 2370 return myDoc->eolMode;
2371} 2371}
2372 2372
2373void KateView::setEol(int eol) { 2373void KateView::setEol(int eol) {
2374 if (isReadOnly()) 2374 if (isReadOnly())
2375 return; 2375 return;
2376 2376
2377 myDoc->eolMode = eol; 2377 myDoc->eolMode = eol;
2378 myDoc->setModified(true); 2378 myDoc->setModified(true);
2379} 2379}
2380 2380
2381 2381
2382 2382
2383void KateView::paintEvent(QPaintEvent *e) { 2383void KateView::paintEvent(QPaintEvent *e) {
2384 int x, y; 2384 int x, y;
2385 2385
2386 QRect updateR = e->rect(); // update rectangle 2386 QRect updateR = e->rect(); // update rectangle
2387// debug("Update rect = ( %i, %i, %i, %i )", 2387// debug("Update rect = ( %i, %i, %i, %i )",
2388// updateR.x(),updateR.y(), updateR.width(), updateR.height() ); 2388// updateR.x(),updateR.y(), updateR.width(), updateR.height() );
2389 2389
2390 int ux1 = updateR.x(); 2390 int ux1 = updateR.x();
2391 int uy1 = updateR.y(); 2391 int uy1 = updateR.y();
2392 int ux2 = ux1 + updateR.width(); 2392 int ux2 = ux1 + updateR.width();
2393 int uy2 = uy1 + updateR.height(); 2393 int uy2 = uy1 + updateR.height();
2394 2394
2395 QPainter paint; 2395 QPainter paint;
2396 paint.begin(this); 2396 paint.begin(this);
2397 2397
2398 QColorGroup g = colorGroup(); 2398 QColorGroup g = colorGroup();
2399 x = width(); 2399 x = width();
2400 y = height(); 2400 y = height();
2401 2401
2402 paint.setPen(g.dark()); 2402 paint.setPen(g.dark());
2403 if (uy1 <= 0) paint.drawLine(0,0,x-2,0); 2403 if (uy1 <= 0) paint.drawLine(0,0,x-2,0);
2404 if (ux1 <= 0) paint.drawLine(0,1,0,y-2); 2404 if (ux1 <= 0) paint.drawLine(0,1,0,y-2);
2405 2405
2406 paint.setPen(black); 2406 paint.setPen(black);
2407 if (uy1 <= 1) paint.drawLine(1,1,x-3,1); 2407 if (uy1 <= 1) paint.drawLine(1,1,x-3,1);
2408 if (ux1 <= 1) paint.drawLine(1,2,1,y-3); 2408 if (ux1 <= 1) paint.drawLine(1,2,1,y-3);
2409 2409
2410 paint.setPen(g.midlight()); 2410 paint.setPen(g.midlight());
2411 if (uy2 >= y-1) paint.drawLine(1,y-2,x-3,y-2); 2411 if (uy2 >= y-1) paint.drawLine(1,y-2,x-3,y-2);
2412 if (ux2 >= x-1) paint.drawLine(x-2,1,x-2,y-2); 2412 if (ux2 >= x-1) paint.drawLine(x-2,1,x-2,y-2);
2413 2413
2414 paint.setPen(g.light()); 2414 paint.setPen(g.light());
2415 if (uy2 >= y) paint.drawLine(0,y-1,x-2,y-1); 2415 if (uy2 >= y) paint.drawLine(0,y-1,x-2,y-1);
2416 if (ux2 >= x) paint.drawLine(x-1,0,x-1,y-1); 2416 if (ux2 >= x) paint.drawLine(x-1,0,x-1,y-1);
2417 2417
2418 x -= 2 + 16; 2418 x -= 2 + 16;
2419 y -= 2 + 16; 2419 y -= 2 + 16;
2420 if (ux2 > x && uy2 > y) { 2420 if (ux2 > x && uy2 > y) {
2421 paint.fillRect(x,y,16,16,g.background()); 2421 paint.fillRect(x,y,16,16,g.background());
2422 } 2422 }
2423 paint.end(); 2423 paint.end();
2424} 2424}
2425 2425
2426void KateView::resizeEvent(QResizeEvent *) { 2426void KateView::resizeEvent(QResizeEvent *) {
2427 2427
2428// debug("Resize %d, %d",e->size().width(),e->size().height()); 2428// debug("Resize %d, %d",e->size().width(),e->size().height());
2429 2429
2430//myViewInternal->resize(width() -20, height() -20); 2430//myViewInternal->resize(width() -20, height() -20);
2431 myViewInternal->tagAll(); 2431 myViewInternal->tagAll();
2432 myViewInternal->updateView(0/*ufNoScroll*/); 2432 myViewInternal->updateView(0/*ufNoScroll*/);
2433} 2433}
2434 2434
2435 2435
2436// Applies a new pattern to the search context. 2436// Applies a new pattern to the search context.
2437void SConfig::setPattern(QString &newPattern) { 2437void SConfig::setPattern(QString &newPattern) {
2438 bool regExp = (flags & KateView::sfRegularExpression); 2438 bool regExp = (flags & KateView::sfRegularExpression);
2439 2439
2440 m_pattern = newPattern; 2440 m_pattern = newPattern;
2441 if (regExp) { 2441 if (regExp) {
2442 m_regExp.setCaseSensitive(flags & KateView::sfCaseSensitive); 2442 m_regExp.setCaseSensitive(flags & KateView::sfCaseSensitive);
2443 m_regExp.setPattern(m_pattern); 2443 m_regExp.setPattern(m_pattern);
2444 } 2444 }
2445} 2445}
2446 2446
2447// Applies the search context to the given string, and returns whether a match was found. If one is, 2447// Applies the search context to the given string, and returns whether a match was found. If one is,
2448// the length of the string matched is also returned. 2448// the length of the string matched is also returned.
2449int SConfig::search(QString &text, int index) { 2449int SConfig::search(QString &text, int index) {
2450 bool regExp = (flags & KateView::sfRegularExpression); 2450 bool regExp = (flags & KateView::sfRegularExpression);
2451 bool caseSensitive = (flags & KateView::sfCaseSensitive); 2451 bool caseSensitive = (flags & KateView::sfCaseSensitive);
2452 2452
2453 if (flags & KateView::sfBackward) { 2453 if (flags & KateView::sfBackward) {
2454 if (regExp) { 2454 if (regExp) {
2455 index = text.findRev(m_regExp, index); 2455 index = text.findRev(m_regExp, index);
2456 } 2456 }
2457 else { 2457 else {
2458 index = text.findRev(m_pattern, index, caseSensitive); 2458 index = text.findRev(m_pattern, index, caseSensitive);
2459 } 2459 }
2460 } 2460 }
2461 else { 2461 else {
2462 if (regExp) { 2462 if (regExp) {
2463 index = text.find(m_regExp, index); 2463 index = text.find(m_regExp, index);
2464 } 2464 }
2465 else { 2465 else {
2466 index = text.find(m_pattern, index, caseSensitive); 2466 index = text.find(m_pattern, index, caseSensitive);
2467 } 2467 }
2468 } 2468 }
2469 2469
2470 // Work out the matched length. 2470 // Work out the matched length.
2471 if (index != -1) 2471 if (index != -1)
2472 { 2472 {
2473 if (regExp) { 2473 if (regExp) {
2474 m_regExp.match(text, index, &matchedLength, false); 2474 m_regExp.match(text, index, &matchedLength, false);
2475 } 2475 }
2476 else { 2476 else {
2477 matchedLength = m_pattern.length(); 2477 matchedLength = m_pattern.length();
2478 } 2478 }
2479 } 2479 }
2480 return index; 2480 return index;
2481} 2481}
2482 2482
2483void KateView::setActive (bool b) 2483void KateView::setActive (bool b)
2484{ 2484{
2485 active = b; 2485 active = b;
2486} 2486}
2487 2487
2488bool KateView::isActive () 2488bool KateView::isActive ()
2489{ 2489{
2490 return active; 2490 return active;
2491} 2491}
2492 2492
2493void KateView::setFocus () 2493void KateView::setFocus ()
2494{ 2494{
2495 QWidget::setFocus (); 2495 QWidget::setFocus ();
2496 2496
2497 emit gotFocus (this); 2497 emit gotFocus (this);
2498} 2498}
2499 2499
2500bool KateView::eventFilter (QObject *object, QEvent *event) 2500bool KateView::eventFilter (QObject *object, QEvent *event)
2501{ 2501{
2502 2502
2503 if ( (event->type() == QEvent::FocusIn) ) 2503 if ( (event->type() == QEvent::FocusIn) )
2504 emit gotFocus (this); 2504 emit gotFocus (this);
2505 2505
2506 if ( (event->type() == QEvent::KeyPress) ) 2506 if ( (event->type() == QEvent::KeyPress) )
2507 { 2507 {
2508 QKeyEvent * ke=(QKeyEvent *)event; 2508 QKeyEvent * ke=(QKeyEvent *)event;
2509 2509
2510 if ((ke->key()==Qt::Key_Tab) || (ke->key()==Qt::Key_BackTab)) 2510 if ((ke->key()==Qt::Key_Tab) || (ke->key()==Qt::Key_BackTab))
2511 { 2511 {
2512 myViewInternal->keyPressEvent(ke); 2512 myViewInternal->keyPressEvent(ke);
2513 return true; 2513 return true;
2514 } 2514 }
2515 } 2515 }
2516 return QWidget::eventFilter (object, event); 2516 return QWidget::eventFilter (object, event);
2517} 2517}
2518 2518
2519void KateView::findAgain (bool back) 2519void KateView::findAgain (bool back)
2520{ 2520{
2521 bool b= (searchFlags & sfBackward) > 0; 2521 bool b= (searchFlags & sfBackward) > 0;
2522 initSearch(s, (searchFlags & ((b==back)?~sfBackward:~0) & ~sfFromBeginning) // clear flag for forward searching 2522 initSearch(s, (searchFlags & ((b==back)?~sfBackward:~0) & ~sfFromBeginning) // clear flag for forward searching
2523 | sfPrompt | sfAgain | ((b!=back)?sfBackward:0) ); 2523 | sfPrompt | sfAgain | ((b!=back)?sfBackward:0) );
2524 if (s.flags & sfReplace) 2524 if (s.flags & sfReplace)
2525 replaceAgain(); 2525 replaceAgain();
2526 else 2526 else
2527 KateView::findAgain(s); 2527 KateView::findAgain(s);
2528} 2528}
2529 2529
2530void KateView::slotEditCommand () 2530void KateView::slotEditCommand ()
2531{ 2531{
2532#warning fixme 2532#warning fixme
2533/* 2533/*
2534 bool ok; 2534 bool ok;
2535 QString cmd = KLineEditDlg::getText("Editing Command", "", &ok, this); 2535 QString cmd = KLineEditDlg::getText("Editing Command", "", &ok, this);
2536 2536
2537 if (ok) 2537 if (ok)
2538 myDoc->cmd()->execCmd (cmd, this);*/ 2538 myDoc->cmd()->execCmd (cmd, this);*/
2539} 2539}
2540 2540
2541void KateView::setIconBorder (bool enable) 2541void KateView::setIconBorder (bool enable)
2542{ 2542{
2543 myIconBorder = enable; 2543 myIconBorder = enable;
2544 2544
2545 if (myIconBorder) 2545 if (myIconBorder)
2546 { 2546 {
2547 myViewInternal->move(myViewInternal->iconBorderWidth+2, 2); 2547 myViewInternal->move(myViewInternal->iconBorderWidth+2, 2);
2548 myViewInternal->leftBorder->show(); 2548 myViewInternal->leftBorder->show();
2549 } 2549 }
2550 else 2550 else
2551 { 2551 {
2552 myViewInternal->leftBorder->hide(); 2552 myViewInternal->leftBorder->hide();
2553 myViewInternal->move(2, 2); 2553 myViewInternal->move(2, 2);
2554 } 2554 }
2555} 2555}
2556 2556
2557void KateView::toggleIconBorder () 2557void KateView::toggleIconBorder ()
2558{ 2558{
2559 setIconBorder (!myIconBorder); 2559 setIconBorder (!myIconBorder);
2560} 2560}
2561 2561
2562void KateView::gotoMark (Kate::Mark *mark) 2562void KateView::gotoMark (Kate::Mark *mark)
2563{ 2563{
2564 PointStruc cursor; 2564 PointStruc cursor;
2565 2565
2566 cursor.x = 0; 2566 cursor.x = 0;
2567 cursor.y = mark->line; 2567 cursor.y = mark->line;
2568 myDoc->needPreHighlight(cursor.y); 2568 myDoc->needPreHighlight(cursor.y);
2569 myViewInternal->updateCursor(cursor); 2569 myViewInternal->updateCursor(cursor);
2570 myViewInternal->center(); 2570 myViewInternal->center();
2571 myViewInternal->updateView(KateView::ufUpdateOnScroll); 2571 myViewInternal->updateView(KateView::ufUpdateOnScroll);
2572 myDoc->updateViews(this); 2572 myDoc->updateViews(this);
2573} 2573}
2574 2574
2575void KateView::toggleBookmark () 2575void KateView::toggleBookmark ()
2576{ 2576{
2577 TextLine::Ptr line = myDoc->getTextLine (currentLine()); 2577 TextLine::Ptr line = myDoc->getTextLine (currentLine());
2578 2578
2579 if (line->mark()&KateDocument::Bookmark) 2579 if (line->mark()&KateDocument::Bookmark)
2580 line->delMark(KateDocument::Bookmark); 2580 line->delMark(KateDocument::Bookmark);
2581 else 2581 else
2582 line->addMark(KateDocument::Bookmark); 2582 line->addMark(KateDocument::Bookmark);
2583 2583
2584 myDoc->tagLines (currentLine(), currentLine()); 2584 myDoc->tagLines (currentLine(), currentLine());
2585 myDoc->updateViews(); 2585 myDoc->updateViews();
2586} 2586}
2587 2587
2588void KateView::clearBookmarks() 2588void KateView::clearBookmarks()
2589{ 2589{
2590 QList<Kate::Mark> list = myDoc->marks(); 2590 QList<Kate::Mark> list = myDoc->marks();
2591 for (int i=0; (uint) i < list.count(); i++) 2591 for (int i=0; (uint) i < list.count(); i++)
2592 { 2592 {
2593 if (list.at(i)->type&KateDocument::Bookmark) 2593 if (list.at(i)->type&KateDocument::Bookmark)
2594 { 2594 {
2595 myDoc->getTextLine(list.at(i)->line)->delMark(KateDocument::Bookmark); 2595 myDoc->getTextLine(list.at(i)->line)->delMark(KateDocument::Bookmark);
2596 myDoc->tagLines(list.at(i)->line, list.at(i)->line); 2596 myDoc->tagLines(list.at(i)->line, list.at(i)->line);
2597 } 2597 }
2598 } 2598 }
2599 2599
2600 myDoc->updateViews(); 2600 myDoc->updateViews();
2601} 2601}
2602 2602
2603void KateView::bookmarkMenuAboutToShow() 2603void KateView::bookmarkMenuAboutToShow()
2604{ 2604{
2605#warning fixme 2605#warning fixme
2606#if 0 2606#if 0
2607 bookmarkMenu->popupMenu()->clear (); 2607 bookmarkMenu->popupMenu()->clear ();
2608 bookmarkToggle->plug (bookmarkMenu->popupMenu()); 2608 bookmarkToggle->plug (bookmarkMenu->popupMenu());
2609 bookmarkClear->plug (bookmarkMenu->popupMenu()); 2609 bookmarkClear->plug (bookmarkMenu->popupMenu());
2610 bookmarkMenu->popupMenu()->insertSeparator (); 2610 bookmarkMenu->popupMenu()->insertSeparator ();
2611 2611
2612 list = myDoc->marks(); 2612 list = myDoc->marks();
2613 for (int i=0; (uint) i < list.count(); i++) 2613 for (int i=0; (uint) i < list.count(); i++)
2614 { 2614 {
2615 if (list.at(i)->type&KateDocument::Bookmark) 2615 if (list.at(i)->type&KateDocument::Bookmark)
2616 { 2616 {
2617 QString bText = textLine(list.at(i)->line); 2617 QString bText = textLine(list.at(i)->line);
2618 bText.truncate(32); 2618 bText.truncate(32);
2619 bText.append ("..."); 2619 bText.append ("...");
2620 bookmarkMenu->popupMenu()->insertItem ( QString("%1 - \"%2\"").arg(list.at(i)->line).arg(bText), this, SLOT (gotoBookmark(int)), 0, i ); 2620 bookmarkMenu->popupMenu()->insertItem ( QString("%1 - \"%2\"").arg(list.at(i)->line).arg(bText), this, SLOT (gotoBookmark(int)), 0, i );
2621 } 2621 }
2622 } 2622 }
2623#endif 2623#endif
2624} 2624}
2625 2625
2626void KateView::gotoBookmark (int n) 2626void KateView::gotoBookmark (int n)
2627{ 2627{
2628 gotoMark (list.at(n)); 2628 gotoMark (list.at(n));
2629} 2629}
2630 2630
2631int KateView::getHlCount () 2631int KateView::getHlCount ()
2632{ 2632{
2633 return HlManager::self()->highlights(); 2633 return HlManager::self()->highlights();
2634} 2634}
2635 2635
2636QString KateView::getHlName (int z) 2636QString KateView::getHlName (int z)
2637{ 2637{
2638 return HlManager::self()->hlName(z); 2638 return HlManager::self()->hlName(z);
2639} 2639}
2640 2640
2641QString KateView::getHlSection (int z) 2641QString KateView::getHlSection (int z)
2642{ 2642{
2643 return HlManager::self()->hlSection (z); 2643 return HlManager::self()->hlSection (z);
2644} 2644}
2645 2645
2646void KateView::slotIncFontSizes () 2646void KateView::slotIncFontSizes ()
2647{ 2647{
2648 QFont font = myDoc->getFont(); 2648 QFont font = myDoc->getFont();
2649 font.setPointSize (font.pointSize()+2); 2649 font.setPointSize (font.pointSize()+2);
2650 myDoc->setFont (font); 2650 myDoc->setFont (font);
2651} 2651}
2652 2652
2653void KateView::slotDecFontSizes () 2653void KateView::slotDecFontSizes ()
2654{ 2654{
2655 QFont font = myDoc->getFont(); 2655 QFont font = myDoc->getFont();
2656 font.setPointSize (font.pointSize()-2); 2656 font.setPointSize (font.pointSize()-2);
2657 myDoc->setFont (font); 2657 myDoc->setFont (font);
2658} 2658}
2659 2659
2660const char*bookmark_xpm[]={ 2660const char*bookmark_xpm[]={
2661"12 16 4 1", 2661"12 16 4 1",
2662"b c #808080", 2662"b c #808080",
2663"a c #000080", 2663"a c #000080",
2664"# c #0000ff", 2664"# c #0000ff",
2665". c None", 2665". c None",
2666"............", 2666"............",
2667"............", 2667"............",
2668"........###.", 2668"........###.",
2669".......#...a", 2669".......#...a",
2670"......#.##.a", 2670"......#.##.a",
2671".....#.#..aa", 2671".....#.#..aa",
2672"....#.#...a.", 2672"....#.#...a.",
2673"...#.#.a.a..", 2673"...#.#.a.a..",
2674"..#.#.a.a...", 2674"..#.#.a.a...",
2675".#.#.a.a....", 2675".#.#.a.a....",
2676"#.#.a.a.....", 2676"#.#.a.a.....",
2677"#.#a.a...bbb", 2677"#.#a.a...bbb",
2678"#...a..bbb..", 2678"#...a..bbb..",
2679".aaa.bbb....", 2679".aaa.bbb....",
2680"............", 2680"............",
2681"............"}; 2681"............"};
2682 2682
2683const char* breakpoint_xpm[]={ 2683const char* breakpoint_xpm[]={
2684"11 16 6 1", 2684"11 16 6 1",
2685"c c #c6c6c6", 2685"c c #c6c6c6",
2686". c None", 2686". c None",
2687"# c #000000", 2687"# c #000000",
2688"d c #840000", 2688"d c #840000",
2689"a c #ffffff", 2689"a c #ffffff",
2690"b c #ff0000", 2690"b c #ff0000",
2691"...........", 2691"...........",
2692"...........", 2692"...........",
2693"...#####...", 2693"...#####...",
2694"..#aaaaa#..", 2694"..#aaaaa#..",
2695".#abbbbbb#.", 2695".#abbbbbb#.",
2696"#abbbbbbbb#", 2696"#abbbbbbbb#",
2697"#abcacacbd#", 2697"#abcacacbd#",
2698"#abbbbbbbb#", 2698"#abbbbbbbb#",
2699"#abcacacbd#", 2699"#abcacacbd#",
2700"#abbbbbbbb#", 2700"#abbbbbbbb#",
2701".#bbbbbbb#.", 2701".#bbbbbbb#.",
2702"..#bdbdb#..", 2702"..#bdbdb#..",
2703"...#####...", 2703"...#####...",
2704"...........", 2704"...........",
2705"...........", 2705"...........",
2706"..........."}; 2706"..........."};
2707 2707
2708const char*breakpoint_bl_xpm[]={ 2708const char*breakpoint_bl_xpm[]={
2709"11 16 7 1", 2709"11 16 7 1",
2710"a c #c0c0ff", 2710"a c #c0c0ff",
2711"# c #000000", 2711"# c #000000",
2712"c c #0000c0", 2712"c c #0000c0",
2713"e c #0000ff", 2713"e c #0000ff",
2714"b c #dcdcdc", 2714"b c #dcdcdc",
2715"d c #ffffff", 2715"d c #ffffff",
2716". c None", 2716". c None",
2717"...........", 2717"...........",
2718"...........", 2718"...........",
2719"...#####...", 2719"...#####...",
2720"..#ababa#..", 2720"..#ababa#..",
2721".#bcccccc#.", 2721".#bcccccc#.",
2722"#acccccccc#", 2722"#acccccccc#",
2723"#bcadadace#", 2723"#bcadadace#",
2724"#acccccccc#", 2724"#acccccccc#",
2725"#bcadadace#", 2725"#bcadadace#",
2726"#acccccccc#", 2726"#acccccccc#",
2727".#ccccccc#.", 2727".#ccccccc#.",
2728"..#cecec#..", 2728"..#cecec#..",
2729"...#####...", 2729"...#####...",
2730"...........", 2730"...........",
2731"...........", 2731"...........",
2732"..........."}; 2732"..........."};
2733 2733
2734const char*breakpoint_gr_xpm[]={ 2734const char*breakpoint_gr_xpm[]={
2735"11 16 6 1", 2735"11 16 6 1",
2736"c c #c6c6c6", 2736"c c #c6c6c6",
2737"d c #2c2c2c", 2737"d c #2c2c2c",
2738"# c #000000", 2738"# c #000000",
2739". c None", 2739". c None",
2740"a c #ffffff", 2740"a c #ffffff",
2741"b c #555555", 2741"b c #555555",
2742"...........", 2742"...........",
2743"...........", 2743"...........",
2744"...#####...", 2744"...#####...",
2745"..#aaaaa#..", 2745"..#aaaaa#..",
2746".#abbbbbb#.", 2746".#abbbbbb#.",
2747"#abbbbbbbb#", 2747"#abbbbbbbb#",
2748"#abcacacbd#", 2748"#abcacacbd#",
2749"#abbbbbbbb#", 2749"#abbbbbbbb#",
2750"#abcacacbd#", 2750"#abcacacbd#",
2751"#abbbbbbbb#", 2751"#abbbbbbbb#",
2752".#bbbbbbb#.", 2752".#bbbbbbb#.",
2753"..#bdbdb#..", 2753"..#bdbdb#..",
2754"...#####...", 2754"...#####...",
2755"...........", 2755"...........",
2756"...........", 2756"...........",
2757"..........."}; 2757"..........."};
2758 2758
2759const char*ddd_xpm[]={ 2759const char*ddd_xpm[]={
2760"11 16 4 1", 2760"11 16 4 1",
2761"a c #00ff00", 2761"a c #00ff00",
2762"b c #000000", 2762"b c #000000",
2763". c None", 2763". c None",
2764"# c #00c000", 2764"# c #00c000",
2765"...........", 2765"...........",
2766"...........", 2766"...........",
2767"...........", 2767"...........",
2768"#a.........", 2768"#a.........",
2769"#aaa.......", 2769"#aaa.......",
2770"#aaaaa.....", 2770"#aaaaa.....",
2771"#aaaaaaa...", 2771"#aaaaaaa...",
2772"#aaaaaaaaa.", 2772"#aaaaaaaaa.",
2773"#aaaaaaa#b.", 2773"#aaaaaaa#b.",
2774"#aaaaa#b...", 2774"#aaaaa#b...",
2775"#aaa#b.....", 2775"#aaa#b.....",
2776"#a#b.......", 2776"#a#b.......",
2777"#b.........", 2777"#b.........",
2778"...........", 2778"...........",
2779"...........", 2779"...........",
2780"..........."}; 2780"..........."};
2781 2781
2782 2782
2783 2783
2784KateIconBorder::KateIconBorder(KateView *view, KateViewInternal *internalView) 2784KateIconBorder::KateIconBorder(KateView *view, KateViewInternal *internalView)
2785 : QWidget(view), myView(view), myInternalView(internalView) 2785 : QWidget(view), myView(view), myInternalView(internalView)
2786{ 2786{
2787 lmbSetsBreakpoints = true; 2787 lmbSetsBreakpoints = true;
2788} 2788}
2789 2789
2790KateIconBorder::~KateIconBorder() 2790KateIconBorder::~KateIconBorder()
2791{ 2791{
2792} 2792}
2793 2793
2794void KateIconBorder::paintLine(int i) 2794void KateIconBorder::paintLine(int i)
2795{ 2795{
2796 if (!myView->myIconBorder) return; 2796 if (!myView->myIconBorder) return;
2797 2797
2798 QPainter p(this); 2798 QPainter p(this);
2799 2799
2800 int fontHeight = myView->doc()->fontHeight; 2800 int fontHeight = myView->doc()->fontHeight;
2801 int y = i*fontHeight - myInternalView->yPos; 2801 int y = i*fontHeight - myInternalView->yPos;
2802 p.fillRect(0, y, myInternalView->iconBorderWidth-2, fontHeight, colorGroup().background()); 2802 p.fillRect(0, y, myInternalView->iconBorderWidth-2, fontHeight, colorGroup().background());
2803 p.setPen(white); 2803 p.setPen(white);
2804 p.drawLine(myInternalView->iconBorderWidth-2, y, myInternalView->iconBorderWidth-2, y + fontHeight); 2804 p.drawLine(myInternalView->iconBorderWidth-2, y, myInternalView->iconBorderWidth-2, y + fontHeight);
2805 p.setPen(QColor(colorGroup().background()).dark()); 2805 p.setPen(QColor(colorGroup().background()).dark());
2806 p.drawLine(myInternalView->iconBorderWidth-1, y, myInternalView->iconBorderWidth-1, y + fontHeight); 2806 p.drawLine(myInternalView->iconBorderWidth-1, y, myInternalView->iconBorderWidth-1, y + fontHeight);
2807 2807
2808 TextLine *line = myView->doc()->getTextLine(i); 2808 TextLine *line = myView->doc()->getTextLine(i);
2809 if (!line) 2809 if (!line)
2810 return; 2810 return;
2811 2811
2812 if (line->mark()&KateDocument::Bookmark) 2812 if (line->mark()&KateDocument::Bookmark)
2813 p.drawPixmap(2, y, QPixmap(bookmark_xpm)); /* 2813 p.drawPixmap(2, y, QPixmap(bookmark_xpm)); /*
2814 if (line && (line->breakpointId() != -1)) { 2814 if (line && (line->breakpointId() != -1)) {
2815 if (!line->breakpointEnabled()) 2815 if (!line->breakpointEnabled())
2816 p.drawPixmap(2, y, QPixmap(breakpoint_gr_xpm)); 2816 p.drawPixmap(2, y, QPixmap(breakpoint_gr_xpm));
2817 else if (line->breakpointPending()) 2817 else if (line->breakpointPending())
2818 p.drawPixmap(2, y, QPixmap(breakpoint_bl_xpm)); 2818 p.drawPixmap(2, y, QPixmap(breakpoint_bl_xpm));
2819 else 2819 else
2820 p.drawPixmap(2, y, QPixmap(breakpoint_xpm)); 2820 p.drawPixmap(2, y, QPixmap(breakpoint_xpm));
2821 } 2821 }
2822 if (line->isExecutionPoint()) 2822 if (line->isExecutionPoint())
2823 p.drawPixmap(2, y, QPixmap(ddd_xpm)); */ 2823 p.drawPixmap(2, y, QPixmap(ddd_xpm)); */
2824} 2824}
2825 2825
2826 2826
2827void KateIconBorder::paintEvent(QPaintEvent* e) 2827void KateIconBorder::paintEvent(QPaintEvent* e)
2828{ 2828{
2829 if (!myView->myIconBorder) return; 2829 if (!myView->myIconBorder) return;
2830 2830
2831 int lineStart = 0; 2831 int lineStart = 0;
2832 int lineEnd = 0; 2832 int lineEnd = 0;
2833 2833
2834 QRect updateR = e->rect(); 2834 QRect updateR = e->rect();
2835 2835
2836 KateDocument *doc = myView->doc(); 2836 KateDocument *doc = myView->doc();
2837 int h = doc->fontHeight; 2837 int h = doc->fontHeight;
2838 int yPos = myInternalView->yPos; 2838 int yPos = myInternalView->yPos;
2839 if (h) { 2839 if (h) {
2840 lineStart = (yPos + updateR.y()) / h; 2840 lineStart = (yPos + updateR.y()) / h;
2841 lineEnd = QMAX((yPos + updateR.y() + updateR.height()) / h, (int)doc->numLines()); 2841 lineEnd = QMAX((yPos + updateR.y() + updateR.height()) / h, (int)doc->numLines());
2842 } 2842 }
2843 2843
2844 for(int i = lineStart; i <= lineEnd; ++i) 2844 for(int i = lineStart; i <= lineEnd; ++i)
2845 paintLine(i); 2845 paintLine(i);
2846} 2846}
2847 2847
2848 2848
2849void KateIconBorder::mousePressEvent(QMouseEvent* e) 2849void KateIconBorder::mousePressEvent(QMouseEvent* e)
2850{ 2850{
2851 myInternalView->placeCursor( 0, e->y(), 0 ); 2851 myInternalView->placeCursor( 0, e->y(), 0 );
2852 2852
2853 KateDocument *doc = myView->doc(); 2853 KateDocument *doc = myView->doc();
2854 int cursorOnLine = (e->y() + myInternalView->yPos) / doc->fontHeight; 2854 int cursorOnLine = (e->y() + myInternalView->yPos) / doc->fontHeight;
2855 TextLine *line = doc->getTextLine(cursorOnLine); 2855 TextLine *line = doc->getTextLine(cursorOnLine);
2856 2856
2857 switch (e->button()) { 2857 switch (e->button()) {
2858 case LeftButton: 2858 case LeftButton:
2859 if (!line) 2859 if (!line)
2860 break; 2860 break;
2861 else 2861 else
2862 { 2862 {
2863 if (line->mark()&KateDocument::Bookmark) 2863 if (line->mark()&KateDocument::Bookmark)
2864 line->delMark (KateDocument::Bookmark); 2864 line->delMark (KateDocument::Bookmark);
2865 else 2865 else
2866 line->addMark (KateDocument::Bookmark); 2866 line->addMark (KateDocument::Bookmark);
2867 2867
2868 doc->tagLines(cursorOnLine, cursorOnLine); 2868 doc->tagLines(cursorOnLine, cursorOnLine);
2869 doc->updateViews(); 2869 doc->updateViews();
2870 } 2870 }
2871 break; 2871 break;
2872 /* case RightButton: 2872 /* case RightButton:
2873 { 2873 {
2874 if (!line) 2874 if (!line)
2875 break; 2875 break;
2876 KPopupMenu popup; 2876 KPopupMenu popup;
2877 popup.setCheckable(true); 2877 popup.setCheckable(true);
2878 popup.insertTitle(i18n("Breakpoints/Bookmarks")); 2878 popup.insertTitle(i18n("Breakpoints/Bookmarks"));
2879 int idToggleBookmark = popup.insertItem(i18n("Toggle bookmark")); 2879 int idToggleBookmark = popup.insertItem(i18n("Toggle bookmark"));
2880 popup.insertSeparator(); 2880 popup.insertSeparator();
2881 int idToggleBreakpoint = popup.insertItem(i18n("Toggle breakpoint")); 2881 int idToggleBreakpoint = popup.insertItem(i18n("Toggle breakpoint"));
2882 int idEditBreakpoint = popup.insertItem(i18n("Edit breakpoint")); 2882 int idEditBreakpoint = popup.insertItem(i18n("Edit breakpoint"));
2883 int idEnableBreakpoint = popup.insertItem(i18n("Disable breakpoint")); 2883 int idEnableBreakpoint = popup.insertItem(i18n("Disable breakpoint"));
2884 popup.insertSeparator(); 2884 popup.insertSeparator();
2885 popup.insertSeparator(); 2885 popup.insertSeparator();
2886 int idLmbSetsBreakpoints = popup.insertItem(i18n("LMB sets breakpoints")); 2886 int idLmbSetsBreakpoints = popup.insertItem(i18n("LMB sets breakpoints"));
2887 int idLmbSetsBookmarks = popup.insertItem(i18n("LMB sets bookmarks")); 2887 int idLmbSetsBookmarks = popup.insertItem(i18n("LMB sets bookmarks"));
2888 2888
2889 popup.setItemChecked(idLmbSetsBreakpoints, lmbSetsBreakpoints); 2889 popup.setItemChecked(idLmbSetsBreakpoints, lmbSetsBreakpoints);
2890 popup.setItemChecked(idLmbSetsBookmarks, !lmbSetsBreakpoints); 2890 popup.setItemChecked(idLmbSetsBookmarks, !lmbSetsBreakpoints);
2891 2891
2892 if (line->breakpointId() == -1) { 2892 if (line->breakpointId() == -1) {
2893 popup.setItemEnabled(idEditBreakpoint, false); 2893 popup.setItemEnabled(idEditBreakpoint, false);
2894 popup.setItemEnabled(idEnableBreakpoint, false); 2894 popup.setItemEnabled(idEnableBreakpoint, false);
2895 popup.changeItem(idEnableBreakpoint, i18n("Enable breakpoint")); 2895 popup.changeItem(idEnableBreakpoint, i18n("Enable breakpoint"));
2896 } 2896 }
2897 int res = popup.exec(mapToGlobal(e->pos())); 2897 int res = popup.exec(mapToGlobal(e->pos()));
2898 if (res == idToggleBookmark) { 2898 if (res == idToggleBookmark) {
2899 line->toggleBookmark(); 2899 line->toggleBookmark();
2900 doc->tagLines(cursorOnLine, cursorOnLine); 2900 doc->tagLines(cursorOnLine, cursorOnLine);
2901 doc->updateViews(); 2901 doc->updateViews();
2902 } else if (res == idToggleBreakpoint) 2902 } else if (res == idToggleBreakpoint)
2903 emit myView->toggledBreakpoint(cursorOnLine); 2903 emit myView->toggledBreakpoint(cursorOnLine);
2904 else if (res == idEditBreakpoint) 2904 else if (res == idEditBreakpoint)
2905 emit myView->editedBreakpoint(cursorOnLine); 2905 emit myView->editedBreakpoint(cursorOnLine);
2906 else if (res == idEnableBreakpoint) 2906 else if (res == idEnableBreakpoint)
2907 emit myView->toggledBreakpointEnabled(cursorOnLine+1); 2907 emit myView->toggledBreakpointEnabled(cursorOnLine+1);
2908 else if (res == idLmbSetsBreakpoints || res == idLmbSetsBookmarks) 2908 else if (res == idLmbSetsBreakpoints || res == idLmbSetsBookmarks)
2909 lmbSetsBreakpoints = !lmbSetsBreakpoints; 2909 lmbSetsBreakpoints = !lmbSetsBreakpoints;
2910 break; 2910 break;
2911 } 2911 }
2912 case MidButton: 2912 case MidButton:
2913 line->toggleBookmark(); 2913 line->toggleBookmark();
2914 doc->tagLines(cursorOnLine, cursorOnLine); 2914 doc->tagLines(cursorOnLine, cursorOnLine);
2915 doc->updateViews(); 2915 doc->updateViews();
2916 break; */ 2916 break; */
2917 default: 2917 default:
2918 break; 2918 break;
2919 } 2919 }
2920} 2920}
2921 2921
2922 2922
2923 2923
diff --git a/noncore/apps/tinykate/libkate/view/kateviewdialog.cpp b/noncore/apps/tinykate/libkate/view/kateviewdialog.cpp
index a311042..6a19e01 100644
--- a/noncore/apps/tinykate/libkate/view/kateviewdialog.cpp
+++ b/noncore/apps/tinykate/libkate/view/kateviewdialog.cpp
@@ -1,556 +1,573 @@
1/*************************************************************************** 1/***************************************************************************
2 kateviewdialog.cpp - description 2 kateviewdialog.cpp - description
3 ------------------- 3 -------------------
4 copyright : (C) 2001 by The Kate Team 4 copyright : (C) 2001 by The Kate Team
5 (C) 2002 by Joseph Wenninger 5 (C) 2002 by Joseph Wenninger
6 email : kwrite-devel@kde.org 6 email : kwrite-devel@kde.org
7 jowenn@kde.org 7 jowenn@kde.org
8 8
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19// Dialogs 19// Dialogs
20 20
21#include <stdio.h> 21#include <stdio.h>
22#include <stdlib.h> 22#include <stdlib.h>
23 23
24#include <qgrid.h> 24#include <qgrid.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlistbox.h> 27#include <qlistbox.h>
28#include <qspinbox.h> 28#include <qspinbox.h>
29#include <qcombobox.h> 29#include <qcombobox.h>
30#include <qgroupbox.h> 30#include <qgroupbox.h>
31#include <qlineedit.h> 31#include <qlineedit.h>
32#include <qcheckbox.h> 32#include <qcheckbox.h>
33#include <qcollection.h> 33#include <qcollection.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#include <qobjectlist.h> 35#include <qobjectlist.h>
36#include <qradiobutton.h> 36#include <qradiobutton.h>
37#include <qwhatsthis.h> 37#include <qwhatsthis.h>
38#include <qstringlist.h> 38#include <qstringlist.h>
39#include <klocale.h> 39#include <klocale.h>
40#include <kcolorbtn.h> 40#include <kcolorbtn.h>
41#include <qcombobox.h> 41#include <qcombobox.h>
42#include <kglobal.h> 42#include <kglobal.h>
43#include <qvbox.h> 43#include <qvbox.h>
44#include <qspinbox.h> 44#include <qspinbox.h>
45#include <kfontdialog.h> 45#include <kfontdialog.h>
46 46
47#include "../document/katedocument.h" 47#include "../document/katedocument.h"
48#include "kateviewdialog.h" 48#include "kateviewdialog.h"
49#include <opie/ofontselector.h>
50
49 51
50SearchDialog::SearchDialog( QWidget *parent, QStringList &searchFor, QStringList &replaceWith, int flags ) 52SearchDialog::SearchDialog( QWidget *parent, QStringList &searchFor, QStringList &replaceWith, int flags )
51 : KDialogBase( parent, 0L, true, i18n( "Find Text" ), Ok | Cancel, Ok ) 53 : KDialogBase( parent, 0L, true, i18n( "Find Text" ), Ok | Cancel, Ok )
52 , m_replace( 0L ) 54 , m_replace( 0L )
53{ 55{
54 QWidget *page = new QWidget( this ); 56 QWidget *page = new QWidget( this );
55 setMainWidget( page ); 57 setMainWidget( page );
56 58
57 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() ); 59 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
58 60
59 m_search = new QComboBox( true, page ); 61 m_search = new QComboBox( true, page );
60 m_search->insertStringList( searchFor ); 62 m_search->insertStringList( searchFor );
61 m_search->setMinimumWidth( m_search->sizeHint().width() ); 63 m_search->setMinimumWidth( m_search->sizeHint().width() );
62 m_search->lineEdit()->selectAll(); 64 m_search->lineEdit()->selectAll();
63 QLabel *label = new QLabel( m_search, i18n( "&Text To Find:" ), page ); 65 QLabel *label = new QLabel( m_search, i18n( "&Text To Find:" ), page );
64 m_optRegExp = new QCheckBox( i18n( "Regular Expression" ), page ); 66 m_optRegExp = new QCheckBox( i18n( "Regular Expression" ), page );
65 topLayout->addWidget( label ); 67 topLayout->addWidget( label );
66 topLayout->addWidget( m_search ); 68 topLayout->addWidget( m_search );
67 topLayout->addWidget( m_optRegExp ); 69 topLayout->addWidget( m_optRegExp );
68 70
69 if( flags & KateView::sfReplace ) 71 if( flags & KateView::sfReplace )
70 { 72 {
71 // make it a replace dialog 73 // make it a replace dialog
72 setCaption( i18n( "Replace Text" ) ); 74 setCaption( i18n( "Replace Text" ) );
73 m_replace = new QComboBox( true, page ); 75 m_replace = new QComboBox( true, page );
74 m_replace->insertStringList( replaceWith ); 76 m_replace->insertStringList( replaceWith );
75 m_replace->setMinimumWidth( m_search->sizeHint().width() ); 77 m_replace->setMinimumWidth( m_search->sizeHint().width() );
76 label = new QLabel( m_replace, i18n( "&Replace With:" ), page ); 78 label = new QLabel( m_replace, i18n( "&Replace With:" ), page );
77 //m_optPlaceholders = new QCheckBox( i18n( "&Use Placeholders" ), page ); 79 //m_optPlaceholders = new QCheckBox( i18n( "&Use Placeholders" ), page );
78 topLayout->addWidget( label ); 80 topLayout->addWidget( label );
79 topLayout->addWidget( m_replace ); 81 topLayout->addWidget( m_replace );
80 //topLayout->addWidget( m_optPlaceholders ); 82 //topLayout->addWidget( m_optPlaceholders );
81 } 83 }
82 84
83 QGroupBox *group = new QGroupBox( i18n( "Options" ), page ); 85 QGroupBox *group = new QGroupBox( i18n( "Options" ), page );
84 topLayout->addWidget( group, 10 ); 86 topLayout->addWidget( group, 10 );
85 87
86 QGridLayout *gbox = new QGridLayout( group, 5, 2, spacingHint() ); 88 QGridLayout *gbox = new QGridLayout( group, 5, 2, spacingHint() );
87 gbox->addRowSpacing( 0, fontMetrics().lineSpacing() ); 89 gbox->addRowSpacing( 0, fontMetrics().lineSpacing() );
88 gbox->setRowStretch( 4, 10 ); 90 gbox->setRowStretch( 4, 10 );
89 91
90 m_opt1 = new QCheckBox( i18n( "C&ase Sensitive" ), group ); 92 m_opt1 = new QCheckBox( i18n( "C&ase Sensitive" ), group );
91 gbox->addWidget( m_opt1, 1, 0 ); 93 gbox->addWidget( m_opt1, 1, 0 );
92 94
93 m_opt2 = new QCheckBox(i18n("&Whole Words Only" ), group ); 95 m_opt2 = new QCheckBox(i18n("&Whole Words Only" ), group );
94 gbox->addWidget( m_opt2, 2, 0 ); 96 gbox->addWidget( m_opt2, 2, 0 );
95 97
96 m_opt3 = new QCheckBox(i18n("&From Beginning" ), group ); 98 m_opt3 = new QCheckBox(i18n("&From Beginning" ), group );
97 gbox->addWidget( m_opt3, 3, 0 ); 99 gbox->addWidget( m_opt3, 3, 0 );
98 100
99 m_opt4 = new QCheckBox(i18n("Find &Backwards" ), group ); 101 m_opt4 = new QCheckBox(i18n("Find &Backwards" ), group );
100 gbox->addWidget( m_opt4, 1, 1 ); 102 gbox->addWidget( m_opt4, 1, 1 );
101 103
102 m_opt5 = new QCheckBox(i18n("&Selected Text" ), group ); 104 m_opt5 = new QCheckBox(i18n("&Selected Text" ), group );
103 gbox->addWidget( m_opt5, 2, 1 ); 105 gbox->addWidget( m_opt5, 2, 1 );
104 106
105 m_opt1->setChecked( flags & KateView::sfCaseSensitive ); 107 m_opt1->setChecked( flags & KateView::sfCaseSensitive );
106 m_opt2->setChecked( flags & KateView::sfWholeWords ); 108 m_opt2->setChecked( flags & KateView::sfWholeWords );
107 m_opt3->setChecked( flags & KateView::sfFromBeginning ); 109 m_opt3->setChecked( flags & KateView::sfFromBeginning );
108 m_optRegExp->setChecked( flags & KateView::sfRegularExpression ); 110 m_optRegExp->setChecked( flags & KateView::sfRegularExpression );
109 m_opt4->setChecked( flags & KateView::sfBackward ); 111 m_opt4->setChecked( flags & KateView::sfBackward );
110 m_opt5->setChecked( flags & KateView::sfSelected ); 112 m_opt5->setChecked( flags & KateView::sfSelected );
111 113
112 if( m_replace ) 114 if( m_replace )
113 { 115 {
114 m_opt6 = new QCheckBox( i18n( "&Prompt On Replace" ), group ); 116 m_opt6 = new QCheckBox( i18n( "&Prompt On Replace" ), group );
115 m_opt6->setChecked( flags & KateView::sfPrompt ); 117 m_opt6->setChecked( flags & KateView::sfPrompt );
116 gbox->addWidget( m_opt6, 3, 1 ); 118 gbox->addWidget( m_opt6, 3, 1 );
117 } 119 }
118 120
119 m_search->setFocus(); 121 m_search->setFocus();
120} 122}
121 123
122QString SearchDialog::getSearchFor() 124QString SearchDialog::getSearchFor()
123{ 125{
124 return m_search->currentText(); 126 return m_search->currentText();
125} 127}
126 128
127QString SearchDialog::getReplaceWith() 129QString SearchDialog::getReplaceWith()
128{ 130{
129 return m_replace->currentText(); 131 return m_replace->currentText();
130} 132}
131 133
132int SearchDialog::getFlags() 134int SearchDialog::getFlags()
133{ 135{
134 int flags = 0; 136 int flags = 0;
135 137
136 if( m_opt1->isChecked() ) flags |= KateView::sfCaseSensitive; 138 if( m_opt1->isChecked() ) flags |= KateView::sfCaseSensitive;
137 if( m_opt2->isChecked() ) flags |= KateView::sfWholeWords; 139 if( m_opt2->isChecked() ) flags |= KateView::sfWholeWords;
138 if( m_opt3->isChecked() ) flags |= KateView::sfFromBeginning; 140 if( m_opt3->isChecked() ) flags |= KateView::sfFromBeginning;
139 if( m_opt4->isChecked() ) flags |= KateView::sfBackward; 141 if( m_opt4->isChecked() ) flags |= KateView::sfBackward;
140 if( m_opt5->isChecked() ) flags |= KateView::sfSelected; 142 if( m_opt5->isChecked() ) flags |= KateView::sfSelected;
141 if( m_optRegExp->isChecked() ) flags |= KateView::sfRegularExpression; 143 if( m_optRegExp->isChecked() ) flags |= KateView::sfRegularExpression;
142 if( m_replace ) 144 if( m_replace )
143 { 145 {
144 if( m_opt6->isChecked() ) 146 if( m_opt6->isChecked() )
145 flags |= KateView::sfPrompt; 147 flags |= KateView::sfPrompt;
146 148
147 flags |= KateView::sfReplace; 149 flags |= KateView::sfReplace;
148 } 150 }
149 151
150 return flags; 152 return flags;
151} 153}
152 154
153void SearchDialog::slotOk() 155void SearchDialog::slotOk()
154{ 156{
155 if ( !m_search->currentText().isEmpty() ) 157 if ( !m_search->currentText().isEmpty() )
156 { 158 {
157 if ( !m_optRegExp->isChecked() ) 159 if ( !m_optRegExp->isChecked() )
158 { 160 {
159 accept(); 161 accept();
160 } 162 }
161 else 163 else
162 { 164 {
163 // Check for a valid regular expression. 165 // Check for a valid regular expression.
164 166
165 QRegExp regExp( m_search->currentText() ); 167 QRegExp regExp( m_search->currentText() );
166 168
167 if ( regExp.isValid() ) 169 if ( regExp.isValid() )
168 accept(); 170 accept();
169 } 171 }
170 } 172 }
171} 173}
172 174
173void SearchDialog::setSearchText( const QString &searchstr ) 175void SearchDialog::setSearchText( const QString &searchstr )
174 { 176 {
175 m_search->insertItem( searchstr, 0 ); 177 m_search->insertItem( searchstr, 0 );
176 m_search->setCurrentItem( 0 ); 178 m_search->setCurrentItem( 0 );
177 m_search->lineEdit()->selectAll(); 179 m_search->lineEdit()->selectAll();
178 } 180 }
179 181
180// this dialog is not modal 182// this dialog is not modal
181ReplacePrompt::ReplacePrompt( QWidget *parent ) 183ReplacePrompt::ReplacePrompt( QWidget *parent )
182 : KDialogBase(parent, 0L, false, i18n( "Replace Text" ), 184 : KDialogBase(parent, 0L, false, i18n( "Replace Text" ),
183 User3 | User2 | User1 | Close, User3, true, 185 User3 | User2 | User1 | Close, User3, true,
184 i18n("&All"), i18n("&No"), i18n("&Yes")) { 186 i18n("&All"), i18n("&No"), i18n("&Yes")) {
185 187
186 QWidget *page = new QWidget(this); 188 QWidget *page = new QWidget(this);
187 setMainWidget(page); 189 setMainWidget(page);
188 190
189 QBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() ); 191 QBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
190 QLabel *label = new QLabel(i18n("Replace this occurence?"),page); 192 QLabel *label = new QLabel(i18n("Replace this occurence?"),page);
191 topLayout->addWidget(label ); 193 topLayout->addWidget(label );
192} 194}
193 195
194void ReplacePrompt::slotUser1( void ) { // All 196void ReplacePrompt::slotUser1( void ) { // All
195 done(KateView::srAll); 197 done(KateView::srAll);
196} 198}
197 199
198void ReplacePrompt::slotUser2( void ) { // No 200void ReplacePrompt::slotUser2( void ) { // No
199 done(KateView::srNo); 201 done(KateView::srNo);
200} 202}
201 203
202void ReplacePrompt::slotUser3( void ) { // Yes 204void ReplacePrompt::slotUser3( void ) { // Yes
203 accept(); 205 accept();
204} 206}
205 207
206void ReplacePrompt::done(int r) { 208void ReplacePrompt::done(int r) {
207 setResult(r); 209 setResult(r);
208 emit clicked(); 210 emit clicked();
209} 211}
210 212
211void ReplacePrompt::closeEvent(QCloseEvent *) { 213void ReplacePrompt::closeEvent(QCloseEvent *) {
212 reject(); 214 reject();
213} 215}
214 216
215GotoLineDialog::GotoLineDialog(QWidget *parent, int line, int max) 217GotoLineDialog::GotoLineDialog(QWidget *parent, int line, int max)
216 : KDialogBase(parent, 0L, true, i18n("Goto Line"), Ok | Cancel, Ok) { 218 : KDialogBase(parent, 0L, true, i18n("Goto Line"), Ok | Cancel, Ok) {
217 219
218 QWidget *page = new QWidget(this); 220 QWidget *page = new QWidget(this);
219 setMainWidget(page); 221 setMainWidget(page);
220 222
221 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() ); 223 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
222 e1 = new QSpinBox(page); 224 e1 = new QSpinBox(page);
223 e1->setMinValue(1); 225 e1->setMinValue(1);
224 e1->setMaxValue(max); 226 e1->setMaxValue(max);
225 e1->setValue((int)line); 227 e1->setValue((int)line);
226 228
227 QLabel *label = new QLabel( e1,i18n("&Goto Line:"), page ); 229 QLabel *label = new QLabel( e1,i18n("&Goto Line:"), page );
228 topLayout->addWidget(label); 230 topLayout->addWidget(label);
229 topLayout->addWidget(e1); 231 topLayout->addWidget(e1);
230 topLayout->addSpacing(spacingHint()); // A little bit extra space 232 topLayout->addSpacing(spacingHint()); // A little bit extra space
231 topLayout->addStretch(10); 233 topLayout->addStretch(10);
232 e1->setFocus(); 234 e1->setFocus();
233} 235}
234 236
235int GotoLineDialog::getLine() { 237int GotoLineDialog::getLine() {
236 return e1->value(); 238 return e1->value();
237} 239}
238 240
239const int IndentConfigTab::flags[] = {KateView::cfAutoIndent, KateView::cfSpaceIndent, 241const int IndentConfigTab::flags[] = {KateView::cfAutoIndent, KateView::cfSpaceIndent,
240 KateView::cfBackspaceIndents,KateView::cfTabIndents, KateView::cfKeepIndentProfile, KateView::cfKeepExtraSpaces}; 242 KateView::cfBackspaceIndents,KateView::cfTabIndents, KateView::cfKeepIndentProfile, KateView::cfKeepExtraSpaces};
241 243
242IndentConfigTab::IndentConfigTab(QWidget *parent, KateView *view) 244IndentConfigTab::IndentConfigTab(QWidget *parent, KateView *view)
243 : QWidget(parent, 0L) 245 : QWidget(parent, 0L)
244{ 246{
245 QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialog::spacingHint() ); 247 QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialog::spacingHint() );
246 int configFlags = view->config(); 248 int configFlags = view->config();
247 249
248 opt[0] = new QCheckBox(i18n("&Auto Indent"), this); 250 opt[0] = new QCheckBox(i18n("&Auto Indent"), this);
249 layout->addWidget(opt[0], 0, AlignLeft); 251 layout->addWidget(opt[0], 0, AlignLeft);
250 opt[0]->setChecked(configFlags & flags[0]); 252 opt[0]->setChecked(configFlags & flags[0]);
251 253
252 opt[1] = new QCheckBox(i18n("Indent With &Spaces"), this); 254 opt[1] = new QCheckBox(i18n("Indent With &Spaces"), this);
253 layout->addWidget(opt[1], 0, AlignLeft); 255 layout->addWidget(opt[1], 0, AlignLeft);
254 opt[1]->setChecked(configFlags & flags[1]); 256 opt[1]->setChecked(configFlags & flags[1]);
255 257
256 opt[2] = new QCheckBox(i18n("&Backspace Key Indents"), this); 258 opt[2] = new QCheckBox(i18n("&Backspace Key Indents"), this);
257 layout->addWidget(opt[2], 0, AlignLeft); 259 layout->addWidget(opt[2], 0, AlignLeft);
258 opt[2]->setChecked(configFlags & flags[2]); 260 opt[2]->setChecked(configFlags & flags[2]);
259 261
260 opt[3] = new QCheckBox(i18n("&Tab Key Indents"), this); 262 opt[3] = new QCheckBox(i18n("&Tab Key Indents"), this);
261 layout->addWidget(opt[3], 0, AlignLeft); 263 layout->addWidget(opt[3], 0, AlignLeft);
262 opt[3]->setChecked(configFlags & flags[3]); 264 opt[3]->setChecked(configFlags & flags[3]);
263 265
264 opt[4] = new QCheckBox(i18n("Keep Indent &Profile"), this); 266 opt[4] = new QCheckBox(i18n("Keep Indent &Profile"), this);
265 layout->addWidget(opt[4], 0, AlignLeft); 267 layout->addWidget(opt[4], 0, AlignLeft);
266// opt[4]->setChecked(configFlags & flags[4]); 268// opt[4]->setChecked(configFlags & flags[4]);
267 opt[4]->setChecked(true); 269 opt[4]->setChecked(true);
268 opt[4]->hide(); 270 opt[4]->hide();
269 271
270 opt[5] = new QCheckBox(i18n("&Keep Extra Spaces"), this); 272 opt[5] = new QCheckBox(i18n("&Keep Extra Spaces"), this);
271 layout->addWidget(opt[5], 0, AlignLeft); 273 layout->addWidget(opt[5], 0, AlignLeft);
272 opt[5]->setChecked(configFlags & flags[5]); 274 opt[5]->setChecked(configFlags & flags[5]);
273 275
274 layout->addStretch(); 276 layout->addStretch();
275 277
276 // What is this? help 278 // What is this? help
277 QWhatsThis::add(opt[0], i18n("When <b>Auto indent</b> is on, KateView will indent new lines to equal the indent on the previous line.<p>If the previous line is blank, the nearest line above with text is used")); 279 QWhatsThis::add(opt[0], i18n("When <b>Auto indent</b> is on, KateView will indent new lines to equal the indent on the previous line.<p>If the previous line is blank, the nearest line above with text is used"));
278 QWhatsThis::add(opt[1], i18n("Check this if you want to indent with spaces rather than tabs.<br>A Tab will be converted to <u>Tab-width</u> as set in the <b>edit</b> options")); 280 QWhatsThis::add(opt[1], i18n("Check this if you want to indent with spaces rather than tabs.<br>A Tab will be converted to <u>Tab-width</u> as set in the <b>edit</b> options"));
279 QWhatsThis::add(opt[2], i18n("This allows the <b>backspace</b> key to be used to indent.")); 281 QWhatsThis::add(opt[2], i18n("This allows the <b>backspace</b> key to be used to indent."));
280 QWhatsThis::add(opt[3], i18n("This allows the <b>tab</b> key to be used to indent.")); 282 QWhatsThis::add(opt[3], i18n("This allows the <b>tab</b> key to be used to indent."));
281 QWhatsThis::add(opt[4], i18n("This retains current indentation settings for future documents.")); 283 QWhatsThis::add(opt[4], i18n("This retains current indentation settings for future documents."));
282 QWhatsThis::add(opt[5], i18n("Indentations of more than the selected number of spaces will not be shortened.")); 284 QWhatsThis::add(opt[5], i18n("Indentations of more than the selected number of spaces will not be shortened."));
283} 285}
284 286
285void IndentConfigTab::getData(KateView *view) { 287void IndentConfigTab::getData(KateView *view) {
286 int configFlags, z; 288 int configFlags, z;
287 289
288 configFlags = view->config(); 290 configFlags = view->config();
289 for (z = 0; z < numFlags; z++) { 291 for (z = 0; z < numFlags; z++) {
290 configFlags &= ~flags[z]; 292 configFlags &= ~flags[z];
291 if (opt[z]->isChecked()) configFlags |= flags[z]; 293 if (opt[z]->isChecked()) configFlags |= flags[z];
292 } 294 }
293 view->setConfig(configFlags); 295 view->setConfig(configFlags);
294} 296}
295 297
296const int SelectConfigTab::flags[] = {KateView::cfPersistent, KateView::cfDelOnInput, 298const int SelectConfigTab::flags[] = {KateView::cfPersistent, KateView::cfDelOnInput,
297 KateView::cfMouseAutoCopy, KateView::cfSingleSelection, KateView::cfVerticalSelect, KateView::cfXorSelect}; 299 KateView::cfMouseAutoCopy, KateView::cfSingleSelection, KateView::cfVerticalSelect, KateView::cfXorSelect};
298 300
299SelectConfigTab::SelectConfigTab(QWidget *parent, KateView *view) 301SelectConfigTab::SelectConfigTab(QWidget *parent, KateView *view)
300 : QWidget(parent, 0L) 302 : QWidget(parent, 0L)
301{ 303{
302 QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialog::spacingHint() ); 304 QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialog::spacingHint() );
303 int configFlags = view->config(); 305 int configFlags = view->config();
304 306
305 opt[0] = new QCheckBox(i18n("&Persistent Selections"), this); 307 opt[0] = new QCheckBox(i18n("&Persistent Selections"), this);
306 layout->addWidget(opt[0], 0, AlignLeft); 308 layout->addWidget(opt[0], 0, AlignLeft);
307 opt[0]->setChecked(configFlags & flags[0]); 309 opt[0]->setChecked(configFlags & flags[0]);
308 310
309 opt[1] = new QCheckBox(i18n("&Overwrite Selections"), this); 311 opt[1] = new QCheckBox(i18n("&Overwrite Selections"), this);
310 layout->addWidget(opt[1], 0, AlignLeft); 312 layout->addWidget(opt[1], 0, AlignLeft);
311 opt[1]->setChecked(configFlags & flags[1]); 313 opt[1]->setChecked(configFlags & flags[1]);
312 314
313 opt[2] = new QCheckBox(i18n("Mouse &Autocopy"), this); 315 opt[2] = new QCheckBox(i18n("Mouse &Autocopy"), this);
314 layout->addWidget(opt[2], 0, AlignLeft); 316 layout->addWidget(opt[2], 0, AlignLeft);
315 opt[2]->setChecked(configFlags & flags[2]); 317 opt[2]->setChecked(configFlags & flags[2]);
316 318
317 opt[3] = new QCheckBox(i18n("&X11-like Single Selection"), this); 319 opt[3] = new QCheckBox(i18n("&X11-like Single Selection"), this);
318 layout->addWidget(opt[3], 0, AlignLeft); 320 layout->addWidget(opt[3], 0, AlignLeft);
319 opt[3]->setChecked(configFlags & flags[3]); 321 opt[3]->setChecked(configFlags & flags[3]);
320 322
321 opt[4] = new QCheckBox(i18n("&Vertical Selections"), this); 323 opt[4] = new QCheckBox(i18n("&Vertical Selections"), this);
322 layout->addWidget(opt[4], 0, AlignLeft); 324 layout->addWidget(opt[4], 0, AlignLeft);
323 opt[4]->setChecked(configFlags & flags[4]); 325 opt[4]->setChecked(configFlags & flags[4]);
324 326
325 opt[5] = new QCheckBox(i18n("&Toggle Old"), this); 327 opt[5] = new QCheckBox(i18n("&Toggle Old"), this);
326 layout->addWidget(opt[5], 0, AlignLeft); 328 layout->addWidget(opt[5], 0, AlignLeft);
327 opt[5]->setChecked(configFlags & flags[5]); 329 opt[5]->setChecked(configFlags & flags[5]);
328 330
329 layout->addStretch(); 331 layout->addStretch();
330 332
331 // What is this? help 333 // What is this? help
332 QWhatsThis::add(opt[0], i18n("Enabling this prevents key input or cursor movement by way of the arrow keys from causing the elimination of text selection.<p><b>Note:</b> If the Overwrite Selections option is activated then any typed character input or paste operation will replace the selected text.")); 334 QWhatsThis::add(opt[0], i18n("Enabling this prevents key input or cursor movement by way of the arrow keys from causing the elimination of text selection.<p><b>Note:</b> If the Overwrite Selections option is activated then any typed character input or paste operation will replace the selected text."));
333 QWhatsThis::add(opt[1], i18n("When this is on, any keyed character input or paste operation will replace the selected text.")); 335 QWhatsThis::add(opt[1], i18n("When this is on, any keyed character input or paste operation will replace the selected text."));
334 QWhatsThis::add(opt[2], i18n("When this is on, any text selected with the mouse will be automatically copied to the clipboard.")); 336 QWhatsThis::add(opt[2], i18n("When this is on, any text selected with the mouse will be automatically copied to the clipboard."));
335 QWhatsThis::add(opt[3], i18n("Not implemented yet.")); 337 QWhatsThis::add(opt[3], i18n("Not implemented yet."));
336 QWhatsThis::add(opt[4], i18n("Enabling this allows you to make vertical selections.")); 338 QWhatsThis::add(opt[4], i18n("Enabling this allows you to make vertical selections."));
337 QWhatsThis::add(opt[5], i18n("Not yet implemented.")); 339 QWhatsThis::add(opt[5], i18n("Not yet implemented."));
338} 340}
339 341
340void SelectConfigTab::getData(KateView *view) { 342void SelectConfigTab::getData(KateView *view) {
341 int configFlags, z; 343 int configFlags, z;
342 344
343 configFlags = view->config(); 345 configFlags = view->config();
344 for (z = 0; z < numFlags; z++) { 346 for (z = 0; z < numFlags; z++) {
345 configFlags &= ~flags[z]; // clear flag 347 configFlags &= ~flags[z]; // clear flag
346 if (opt[z]->isChecked()) configFlags |= flags[z]; // set flag if checked 348 if (opt[z]->isChecked()) configFlags |= flags[z]; // set flag if checked
347 } 349 }
348 view->setConfig(configFlags); 350 view->setConfig(configFlags);
349} 351}
350 352
351const int EditConfigTab::flags[] = {KateView::cfWordWrap, KateView::cfReplaceTabs, KateView::cfRemoveSpaces, 353const int EditConfigTab::flags[] = {KateView::cfWordWrap, KateView::cfReplaceTabs, KateView::cfRemoveSpaces,
352 KateView::cfAutoBrackets, KateView::cfGroupUndo, KateView::cfShowTabs, KateView::cfSmartHome, 354 KateView::cfAutoBrackets, KateView::cfGroupUndo, KateView::cfShowTabs, KateView::cfSmartHome,
353 KateView::cfPageUDMovesCursor, KateView::cfWrapCursor}; 355 KateView::cfPageUDMovesCursor, KateView::cfWrapCursor};
354 356
355EditConfigTab::EditConfigTab(QWidget *parent, KateView *view) 357EditConfigTab::EditConfigTab(QWidget *parent, KateView *view)
356 : QWidget(parent, 0L) { 358 : QWidget(parent, 0L) {
357 359
358 QHBoxLayout *mainLayout; 360 QHBoxLayout *mainLayout;
359 QVBoxLayout *cbLayout, *leLayout; 361 QVBoxLayout *cbLayout, *leLayout;
360 int configFlags; 362 int configFlags;
361 363
362 mainLayout = new QHBoxLayout(this, 0, KDialog::spacingHint() ); 364 mainLayout = new QHBoxLayout(this, 0, KDialog::spacingHint() );
363 365
364 // checkboxes 366 // checkboxes
365 cbLayout = new QVBoxLayout( mainLayout ); 367 cbLayout = new QVBoxLayout( mainLayout );
366 configFlags = view->config(); 368 configFlags = view->config();
367 369
368 opt[0] = new QCheckBox(i18n("&Word wrap"), this); 370 opt[0] = new QCheckBox(i18n("&Word wrap"), this);
369 cbLayout->addWidget(opt[0], 0, AlignLeft); 371 cbLayout->addWidget(opt[0], 0, AlignLeft);
370 opt[0]->setChecked(view->doc()->wordWrap()); 372 opt[0]->setChecked(view->doc()->wordWrap());
371 373
372 opt[1] = new QCheckBox(i18n("Replace &tabs with spaces"), this); 374 opt[1] = new QCheckBox(i18n("Replace &tabs with spaces"), this);
373 cbLayout->addWidget(opt[1], 0, AlignLeft); 375 cbLayout->addWidget(opt[1], 0, AlignLeft);
374 opt[1]->setChecked(configFlags & flags[1]); 376 opt[1]->setChecked(configFlags & flags[1]);
375 377
376 opt[2] = new QCheckBox(i18n("&Remove trailing spaces"), this); 378 opt[2] = new QCheckBox(i18n("&Remove trailing spaces"), this);
377 cbLayout->addWidget(opt[2], 0, AlignLeft); 379 cbLayout->addWidget(opt[2], 0, AlignLeft);
378 opt[2]->setChecked(configFlags & flags[2]); 380 opt[2]->setChecked(configFlags & flags[2]);
379 381
380 opt[3] = new QCheckBox(i18n("&Auto brackets"), this); 382 opt[3] = new QCheckBox(i18n("&Auto brackets"), this);
381 cbLayout->addWidget(opt[3], 0, AlignLeft); 383 cbLayout->addWidget(opt[3], 0, AlignLeft);
382 opt[3]->setChecked(configFlags & flags[3]); 384 opt[3]->setChecked(configFlags & flags[3]);
383 385
384 opt[4] = new QCheckBox(i18n("Group &undos"), this); 386 opt[4] = new QCheckBox(i18n("Group &undos"), this);
385 cbLayout->addWidget(opt[4], 0, AlignLeft); 387 cbLayout->addWidget(opt[4], 0, AlignLeft);
386 opt[4]->setChecked(configFlags & flags[4]); 388 opt[4]->setChecked(configFlags & flags[4]);
387 389
388 opt[5] = new QCheckBox(i18n("&Show tabs"), this); 390 opt[5] = new QCheckBox(i18n("&Show tabs"), this);
389 cbLayout->addWidget(opt[5], 0, AlignLeft); 391 cbLayout->addWidget(opt[5], 0, AlignLeft);
390 opt[5]->setChecked(configFlags & flags[5]); 392 opt[5]->setChecked(configFlags & flags[5]);
391 393
392 opt[6] = new QCheckBox(i18n("Smart &home"), this); 394 opt[6] = new QCheckBox(i18n("Smart &home"), this);
393 cbLayout->addWidget(opt[6], 0, AlignLeft); 395 cbLayout->addWidget(opt[6], 0, AlignLeft);
394 opt[6]->setChecked(configFlags & flags[6]); 396 opt[6]->setChecked(configFlags & flags[6]);
395 397
396 opt[7] = new QCheckBox(i18n("&Page up/down moves cursor"), this); 398 opt[7] = new QCheckBox(i18n("&Page up/down moves cursor"), this);
397 cbLayout->addWidget(opt[7], 0, AlignLeft); 399 cbLayout->addWidget(opt[7], 0, AlignLeft);
398 opt[7]->setChecked(configFlags & flags[7]); 400 opt[7]->setChecked(configFlags & flags[7]);
399 401
400 opt[8] = new QCheckBox(i18n("Wrap &cursor"), this); 402 opt[8] = new QCheckBox(i18n("Wrap &cursor"), this);
401 cbLayout->addWidget(opt[8], 0, AlignLeft); 403 cbLayout->addWidget(opt[8], 0, AlignLeft);
402 opt[8]->setChecked(configFlags & flags[8]); 404 opt[8]->setChecked(configFlags & flags[8]);
403 405
404 cbLayout->addStretch(); 406 cbLayout->addStretch();
405 407
406 // edit lines 408 // edit lines
407 leLayout = new QVBoxLayout(); 409 leLayout = new QVBoxLayout();
408 mainLayout->addLayout(leLayout,10); 410 mainLayout->addLayout(leLayout,10);
409 411
410 e1 = new QSpinBox(this); 412 e1 = new QSpinBox(this);
411 e1->setMinValue(20); 413 e1->setMinValue(20);
412 e1->setMaxValue( 200); 414 e1->setMaxValue( 200);
413 e1->setValue((int)(view->doc()->wordWrapAt())); 415 e1->setValue((int)(view->doc()->wordWrapAt()));
414#warning fixme e1->setLabel(i18n("Wrap Words At:")); 416#warning fixme e1->setLabel(i18n("Wrap Words At:"));
415 417
416 e2 = new QSpinBox(this); 418 e2 = new QSpinBox(this);
417 e2->setMinValue(1); 419 e2->setMinValue(1);
418 e2->setMaxValue(16); 420 e2->setMaxValue(16);
419 e2->setValue((int)view->tabWidth()); 421 e2->setValue((int)view->tabWidth());
420 422
421#warning fixme e2->setLabel(i18n("Tab/Indent Width:")); 423#warning fixme e2->setLabel(i18n("Tab/Indent Width:"));
422 424
423 e3 = new QSpinBox(this); 425 e3 = new QSpinBox(this);
424 e3->setMinValue(5); 426 e3->setMinValue(5);
425 e3->setMaxValue( 30000); 427 e3->setMaxValue( 30000);
426#warning fixme e3->setLabel(i18n("Undo steps:")); 428#warning fixme e3->setLabel(i18n("Undo steps:"));
427 e3->setValue((int)view->undoSteps()); 429 e3->setValue((int)view->undoSteps());
428 430
429 leLayout->addWidget(e1, 0, AlignLeft); 431 leLayout->addWidget(e1, 0, AlignLeft);
430 leLayout->addWidget(e2, 0, AlignLeft); 432 leLayout->addWidget(e2, 0, AlignLeft);
431 leLayout->addWidget(e3, 0, AlignLeft); 433 leLayout->addWidget(e3, 0, AlignLeft);
432 434
433 435
434 QVBox *box = new QVBox (this); 436 QVBox *box = new QVBox (this);
435 leLayout->addWidget (box, 0, AlignLeft); 437 leLayout->addWidget (box, 0, AlignLeft);
436 438
437 new QLabel (i18n("Encoding:"), box); 439 new QLabel (i18n("Encoding:"), box);
438 440
439 encoding = new QComboBox(box); 441 encoding = new QComboBox(box);
440#warning fixme 442#warning fixme
441#if 0 443#if 0
442 encoding->insertStringList (KGlobal::charsets()->availableEncodingNames()); 444 encoding->insertStringList (KGlobal::charsets()->availableEncodingNames());
443 encoding->setCurrentItem (KGlobal::charsets()->availableEncodingNames().findIndex(view->doc()->encoding())); 445 encoding->setCurrentItem (KGlobal::charsets()->availableEncodingNames().findIndex(view->doc()->encoding()));
444#endif 446#endif
445 leLayout->addStretch(); 447 leLayout->addStretch();
446 448
447 // What is this? help 449 // What is this? help
448 QWhatsThis::add(opt[0], i18n("Word wrap is a feature that causes the editor to automatically start a new line of text and move (wrap) the cursor to the beginning of that new line. KateView will automatically start a new line of text when the current line reaches the length specified by the Wrap Words At: option.<p><b>NOTE:<b> Word Wrap will not change existing lines or wrap them for easy reading as in some applications.")); 450 QWhatsThis::add(opt[0], i18n("Word wrap is a feature that causes the editor to automatically start a new line of text and move (wrap) the cursor to the beginning of that new line. KateView will automatically start a new line of text when the current line reaches the length specified by the Wrap Words At: option.<p><b>NOTE:<b> Word Wrap will not change existing lines or wrap them for easy reading as in some applications."));
449 QWhatsThis::add(e1, i18n("If the Word Wrap option is selected this entry determines the length (in characters) at which the editor will automatically start a new line.")); 451 QWhatsThis::add(e1, i18n("If the Word Wrap option is selected this entry determines the length (in characters) at which the editor will automatically start a new line."));
450 QWhatsThis::add(opt[1], i18n("KateView will replace any tabs with the number of spaces indicated in the Tab Width: entry.")); 452 QWhatsThis::add(opt[1], i18n("KateView will replace any tabs with the number of spaces indicated in the Tab Width: entry."));
451 QWhatsThis::add(e2, i18n("If the Replace Tabs By Spaces option is selected this entry determines the number of spaces with which the editor will automatically replace tabs.")); 453 QWhatsThis::add(e2, i18n("If the Replace Tabs By Spaces option is selected this entry determines the number of spaces with which the editor will automatically replace tabs."));
452 QWhatsThis::add(opt[2], i18n("KateView will automatically eliminate extra spaces at the ends of lines of text.")); 454 QWhatsThis::add(opt[2], i18n("KateView will automatically eliminate extra spaces at the ends of lines of text."));
453 QWhatsThis::add(opt[3], i18n("When the user types a left bracket ([,(, or {) KateView automatically enters the right bracket (}, ), or ]) to the right of the cursor.")); 455 QWhatsThis::add(opt[3], i18n("When the user types a left bracket ([,(, or {) KateView automatically enters the right bracket (}, ), or ]) to the right of the cursor."));
454 QWhatsThis::add(opt[4], i18n("Checking this will cause sequences of similar actions to be undone at once.")); 456 QWhatsThis::add(opt[4], i18n("Checking this will cause sequences of similar actions to be undone at once."));
455 QWhatsThis::add(opt[5], i18n("The editor will display a symbol to indicate the presence of a tab in the text.")); 457 QWhatsThis::add(opt[5], i18n("The editor will display a symbol to indicate the presence of a tab in the text."));
456 QWhatsThis::add(opt[6], i18n("Not yet implemented.")); 458 QWhatsThis::add(opt[6], i18n("Not yet implemented."));
457 QWhatsThis::add(opt[7], i18n("If this is selected, the insertion cursor will be moved to the first/last line when pressing the page up/down buttons.<p>If not selected, it will remain at it's relative position in the visible text.")); 459 QWhatsThis::add(opt[7], i18n("If this is selected, the insertion cursor will be moved to the first/last line when pressing the page up/down buttons.<p>If not selected, it will remain at it's relative position in the visible text."));
458 QWhatsThis::add(e3, i18n("Sets the number of undo/redo steps to record. More steps uses more memory.")); 460 QWhatsThis::add(e3, i18n("Sets the number of undo/redo steps to record. More steps uses more memory."));
459 QWhatsThis::add(opt[8], i18n("When on, moving the insertion cursor using the <b>Left</b> and <b>Right</b> keys will go on to previous/next line at beginning/end of the line, similar to most editors.<p>When off, the insertion cursor cannot be moved left of the line start, but it can be moved off the line end, which can be very handy for programmers.")); 461 QWhatsThis::add(opt[8], i18n("When on, moving the insertion cursor using the <b>Left</b> and <b>Right</b> keys will go on to previous/next line at beginning/end of the line, similar to most editors.<p>When off, the insertion cursor cannot be moved left of the line start, but it can be moved off the line end, which can be very handy for programmers."));
460} 462}
461 463
462void EditConfigTab::getData(KateView *view) 464void EditConfigTab::getData(KateView *view)
463{ 465{
464 int configFlags, z; 466 int configFlags, z;
465 467
466 configFlags = view->config(); 468 configFlags = view->config();
467 for (z = 1; z < numFlags; z++) { 469 for (z = 1; z < numFlags; z++) {
468 configFlags &= ~flags[z]; 470 configFlags &= ~flags[z];
469 if (opt[z]->isChecked()) configFlags |= flags[z]; 471 if (opt[z]->isChecked()) configFlags |= flags[z];
470 } 472 }
471 view->setConfig(configFlags); 473 view->setConfig(configFlags);
472 474
473 view->setEncoding (encoding->currentText()); 475 view->setEncoding (encoding->currentText());
474 view->doc()->setWordWrapAt(e1->value()); 476 view->doc()->setWordWrapAt(e1->value());
475 view->doc()->setWordWrap (opt[0]->isChecked()); 477 view->doc()->setWordWrap (opt[0]->isChecked());
476 view->setTabWidth(e2->value()); 478 view->setTabWidth(e2->value());
477 view->setUndoSteps(e3->value()); 479 view->setUndoSteps(e3->value());
478} 480}
479 481
480ColorConfig::ColorConfig( QWidget *parent, char *name ) 482ColorConfig::ColorConfig( QWidget *parent, char *name )
481 : QWidget( parent, name ) 483 : QWidget( parent, name )
482{ 484{
483 QGridLayout *glay = new QGridLayout( this, 6, 2, 0, KDialog::spacingHint()); 485 QGridLayout *glay = new QGridLayout( this, 6, 2, 0, KDialog::spacingHint());
484 glay->setColStretch(1,1); 486 glay->setColStretch(1,1);
485 glay->setRowStretch(5,1); 487 glay->setRowStretch(5,1);
486 488
487 QLabel *label; 489 QLabel *label;
488 490
489 label = new QLabel( i18n("Background:"), this); 491 label = new QLabel( i18n("Background:"), this);
490 label->setAlignment( AlignRight|AlignVCenter ); 492 label->setAlignment( AlignRight|AlignVCenter );
491 m_back = new KColorButton( this ); 493 m_back = new KColorButton( this );
492 glay->addWidget( label, 0, 0 ); 494 glay->addWidget( label, 0, 0 );
493 glay->addWidget( m_back, 0, 1 ); 495 glay->addWidget( m_back, 0, 1 );
494 496
495 label = new QLabel( i18n("Selected:"), this); 497 label = new QLabel( i18n("Selected:"), this);
496 label->setAlignment( AlignRight|AlignVCenter ); 498 label->setAlignment( AlignRight|AlignVCenter );
497 m_selected = new KColorButton( this ); 499 m_selected = new KColorButton( this );
498 glay->addWidget( label, 2, 0 ); 500 glay->addWidget( label, 2, 0 );
499 glay->addWidget( m_selected, 2, 1 ); 501 glay->addWidget( m_selected, 2, 1 );
500 502
501 // QWhatsThis help 503 // QWhatsThis help
502 QWhatsThis::add(m_back, i18n("Sets the background color of the editing area")); 504 QWhatsThis::add(m_back, i18n("Sets the background color of the editing area"));
503 QWhatsThis::add(m_selected, i18n("Sets the background color of the selection. To set the text color for selected text, use the &quot;<b>Configure Highlighting</b>&quot; dialog.")); 505 QWhatsThis::add(m_selected, i18n("Sets the background color of the selection. To set the text color for selected text, use the &quot;<b>Configure Highlighting</b>&quot; dialog."));
504} 506}
505 507
506 508
507ColorConfig::~ColorConfig() 509ColorConfig::~ColorConfig()
508{ 510{
509} 511}
510 512
511void ColorConfig::setColors(QColor *colors) 513void ColorConfig::setColors(QColor *colors)
512{ 514{
513 m_back->setColor( colors[0] ); 515 m_back->setColor( colors[0] );
514 m_selected->setColor( colors[1] ); 516 m_selected->setColor( colors[1] );
515} 517}
516 518
517void ColorConfig::getColors(QColor *colors) 519void ColorConfig::getColors(QColor *colors)
518{ 520{
519 colors[0] = m_back->color(); 521 colors[0] = m_back->color();
520 colors[1] = m_selected->color(); 522 colors[1] = m_selected->color();
521} 523}
522 524
523FontConfig::FontConfig( QWidget *parent, char *name ) 525FontConfig::FontConfig( QWidget *parent, char *name )
524 : QWidget( parent, name ) 526 : QWidget( parent, name )
525{ 527{
526 // sizemanagment 528 // sizemanagment
527 QGridLayout *grid = new QGridLayout( this, 1, 1 ); 529 QGridLayout *grid = new QGridLayout( this, 1, 1 );
528#if 0 530// QString familyStr = cfg. readEntry ( "FontFamily", "Helvetica" );
529 m_fontchooser = new KFontChooser ( this ); 531// QString styleStr = cfg. readEntry ( "FontStyle", "Regular" );
530 m_fontchooser->enableColumn(KFontChooser::StyleList, false); 532// int size = cfg. readNumEntry ( "FontSize", 10 );
531 grid->addWidget( m_fontchooser, 0, 0); 533// OFontSelector *m_fontselect;
532 534
533 connect (m_fontchooser, SIGNAL (fontSelected( const QFont & )), this, SLOT (slotFontSelected( const QFont & ))); 535 m_fontselect = new OFontSelector ( false, this, "FontTab" );
534#endif 536// m_fontselect-> setSelectedFont ( familyStr, styleStr, size );
537// QWhatsThis::add( m_fontselect,
538// tr( "Select the desired name, style and size of the default font applications will use." ) );
539
540 connect( m_fontselect, SIGNAL( fontSelected ( const QFont & )),
541 this, SLOT( slotFontSelected( const QFont & )));
542 grid->addWidget( m_fontselect, 0, 0);
543
544
545// #if 0
546// m_fontchooser = new KFontChooser ( this );
547// m_fontchooser->enableColumn(KFontChooser::StyleList, false);
548// grid->addWidget( m_fontchooser, 0, 0);
549
550// connect (m_fontchooser, SIGNAL (fontSelected( const QFont & )), this, SLOT (slotFontSelected( const QFont & )));
551// #endif
535} 552}
536 553
537FontConfig::~FontConfig() 554FontConfig::~FontConfig()
538{ 555{
539} 556}
540 557
541void FontConfig::setFont ( const QFont &font ) 558void FontConfig::setFont ( const QFont &font )
542{ 559{
543#if 0 560//#if 0
544 m_fontchooser->setFont (font); 561m_fontselect->setFont (font);
545 myFont = font; 562 myFont = font;
546#endif 563//#endif
547} 564}
548 565
549void FontConfig::slotFontSelected( const QFont &font ) 566void FontConfig::slotFontSelected( const QFont &font )
550{ 567{
551 myFont = font; 568 myFont = font;
552} 569}
553 570
554 571
555 572
556 573
diff --git a/noncore/apps/tinykate/libkate/view/kateviewdialog.h b/noncore/apps/tinykate/libkate/view/kateviewdialog.h
index 60f30bd..2ce5a11 100644
--- a/noncore/apps/tinykate/libkate/view/kateviewdialog.h
+++ b/noncore/apps/tinykate/libkate/view/kateviewdialog.h
@@ -1,194 +1,196 @@
1/*************************************************************************** 1/***************************************************************************
2 kateviewdialog.h - description 2 kateviewdialog.h - description
3 ------------------- 3 -------------------
4 copyright : (C) 2001 by The Kate Team 4 copyright : (C) 2001 by The Kate Team
5 (C) 2002 by Joseph Wenninger 5 (C) 2002 by Joseph Wenninger
6 email : kwrite-devel@kde.org 6 email : kwrite-devel@kde.org
7 jowenn@kde.org 7 jowenn@kde.org
8 8
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19// Dialogs 19// Dialogs
20 20
21#ifndef _KWDIALOG_H_ 21#ifndef _KWDIALOG_H_
22#define _KWDIALOG_H_ 22#define _KWDIALOG_H_
23 23
24 24
25class QCheckBox; 25class QCheckBox;
26class QLineEdit; 26class QLineEdit;
27class QPushButton; 27class QPushButton;
28class QRadioButton; 28class QRadioButton;
29class QSpinBox; 29class QSpinBox;
30class KColorButton; 30class KColorButton;
31class QComboBox; 31class QComboBox;
32 32
33#include <kdialogbase.h> 33#include <kdialogbase.h>
34#include <opie/ofontselector.h>
34#include "kateview.h" 35#include "kateview.h"
35 36
36class SearchDialog : public KDialogBase 37class SearchDialog : public KDialogBase
37{ 38{
38 Q_OBJECT 39 Q_OBJECT
39 40
40 public: 41 public:
41 SearchDialog( QWidget *parent, QStringList &searchFor, QStringList &replaceWith, int flags ); 42 SearchDialog( QWidget *parent, QStringList &searchFor, QStringList &replaceWith, int flags );
42 QString getSearchFor(); 43 QString getSearchFor();
43 QString getReplaceWith(); 44 QString getReplaceWith();
44 int getFlags(); 45 int getFlags();
45 void setSearchText( const QString &searchstr ); 46 void setSearchText( const QString &searchstr );
46 47
47 protected slots: 48 protected slots:
48 void slotOk(); 49 void slotOk();
49 50
50 protected: 51 protected:
51 QComboBox *m_search; 52 QComboBox *m_search;
52 QComboBox *m_replace; 53 QComboBox *m_replace;
53 QCheckBox *m_opt1; 54 QCheckBox *m_opt1;
54 QCheckBox *m_opt2; 55 QCheckBox *m_opt2;
55 QCheckBox *m_opt3; 56 QCheckBox *m_opt3;
56 QCheckBox *m_optRegExp; 57 QCheckBox *m_optRegExp;
57 QCheckBox *m_opt4; 58 QCheckBox *m_opt4;
58 QCheckBox *m_opt5; 59 QCheckBox *m_opt5;
59 QCheckBox *m_opt6; 60 QCheckBox *m_opt6;
60}; 61};
61 62
62class ReplacePrompt : public KDialogBase 63class ReplacePrompt : public KDialogBase
63{ 64{
64 Q_OBJECT 65 Q_OBJECT
65 66
66 public: 67 public:
67 68
68 ReplacePrompt(QWidget *parent); 69 ReplacePrompt(QWidget *parent);
69 70
70 signals: 71 signals:
71 72
72 void clicked(); 73 void clicked();
73 74
74 protected slots: 75 protected slots:
75 76
76 void slotUser1( void ); // All 77 void slotUser1( void ); // All
77 void slotUser2( void ); // No 78 void slotUser2( void ); // No
78 void slotUser3( void ); // Yes 79 void slotUser3( void ); // Yes
79 virtual void done(int); 80 virtual void done(int);
80 81
81 protected: 82 protected:
82 83
83 void closeEvent(QCloseEvent *); 84 void closeEvent(QCloseEvent *);
84}; 85};
85 86
86class GotoLineDialog : public KDialogBase 87class GotoLineDialog : public KDialogBase
87{ 88{
88 Q_OBJECT 89 Q_OBJECT
89 90
90 public: 91 public:
91 92
92 GotoLineDialog(QWidget *parent, int line, int max); 93 GotoLineDialog(QWidget *parent, int line, int max);
93 int getLine(); 94 int getLine();
94 95
95 protected: 96 protected:
96 97
97 QSpinBox *e1; 98 QSpinBox *e1;
98 QPushButton *btnOK; 99 QPushButton *btnOK;
99}; 100};
100 101
101class IndentConfigTab : public QWidget 102class IndentConfigTab : public QWidget
102{ 103{
103 Q_OBJECT 104 Q_OBJECT
104 105
105 public: 106 public:
106 107
107 IndentConfigTab(QWidget *parent, KateView *); 108 IndentConfigTab(QWidget *parent, KateView *);
108 void getData(KateView *); 109 void getData(KateView *);
109 110
110 protected: 111 protected:
111 112
112 static const int numFlags = 6; 113 static const int numFlags = 6;
113 static const int flags[numFlags]; 114 static const int flags[numFlags];
114 QCheckBox *opt[numFlags]; 115 QCheckBox *opt[numFlags];
115}; 116};
116 117
117class SelectConfigTab : public QWidget 118class SelectConfigTab : public QWidget
118{ 119{
119 Q_OBJECT 120 Q_OBJECT
120 121
121 public: 122 public:
122 123
123 SelectConfigTab(QWidget *parent, KateView *); 124 SelectConfigTab(QWidget *parent, KateView *);
124 void getData(KateView *); 125 void getData(KateView *);
125 126
126 protected: 127 protected:
127 128
128 static const int numFlags = 6; 129 static const int numFlags = 6;
129 static const int flags[numFlags]; 130 static const int flags[numFlags];
130 QCheckBox *opt[numFlags]; 131 QCheckBox *opt[numFlags];
131}; 132};
132 133
133class EditConfigTab : public QWidget 134class EditConfigTab : public QWidget
134{ 135{
135 Q_OBJECT 136 Q_OBJECT
136 137
137 public: 138 public:
138 139
139 EditConfigTab(QWidget *parent, KateView *); 140 EditConfigTab(QWidget *parent, KateView *);
140 void getData(KateView *); 141 void getData(KateView *);
141 142
142 protected: 143 protected:
143 144
144 static const int numFlags = 9; 145 static const int numFlags = 9;
145 static const int flags[numFlags]; 146 static const int flags[numFlags];
146 QCheckBox *opt[numFlags]; 147 QCheckBox *opt[numFlags];
147 QComboBox *encoding; 148 QComboBox *encoding;
148 149
149 150
150 QSpinBox *e1; 151 QSpinBox *e1;
151 QSpinBox *e2; 152 QSpinBox *e2;
152 QSpinBox *e3; 153 QSpinBox *e3;
153}; 154};
154 155
155class ColorConfig : public QWidget 156class ColorConfig : public QWidget
156{ 157{
157 Q_OBJECT 158 Q_OBJECT
158 159
159public: 160public:
160 161
161 ColorConfig( QWidget *parent = 0, char *name = 0 ); 162 ColorConfig( QWidget *parent = 0, char *name = 0 );
162 ~ColorConfig(); 163 ~ColorConfig();
163 164
164 void setColors( QColor * ); 165 void setColors( QColor * );
165 void getColors( QColor * ); 166 void getColors( QColor * );
166 167
167private: 168private:
168 169
169 KColorButton *m_back; 170 KColorButton *m_back;
170 KColorButton *m_selected; 171 KColorButton *m_selected;
171}; 172};
172 173
173class FontConfig : public QWidget 174class FontConfig : public QWidget
174{ 175{
175 Q_OBJECT 176 Q_OBJECT
176 177
177public: 178public:
178 179
179 FontConfig( QWidget *parent = 0, char *name = 0 ); 180 FontConfig( QWidget *parent = 0, char *name = 0 );
180 ~FontConfig(); 181 ~FontConfig();
181 182
182 void setFont ( const QFont &font ); 183 void setFont ( const QFont &font );
183 QFont getFont ( ) { return myFont; }; 184 QFont getFont ( ) { return myFont; };
184 185
185 private: 186 private:
187 OFontSelector *m_fontselect;
186// class KFontChooser *m_fontchooser; 188// class KFontChooser *m_fontchooser;
187 QFont myFont; 189 QFont myFont;
188 190
189 private slots: 191 private slots:
190 void slotFontSelected( const QFont &font ); 192 void slotFontSelected( const QFont &font );
191}; 193};
192 194
193 195
194#endif //_KWDIALOG_H_ 196#endif //_KWDIALOG_H_