Diffstat (limited to 'noncore/apps/tinykate/libkate/document') (more/less context) (ignore whitespace changes)
4 files changed, 184 insertions, 173 deletions
diff --git a/noncore/apps/tinykate/libkate/document/katebuffer.cpp b/noncore/apps/tinykate/libkate/document/katebuffer.cpp index 22a4917..4c15fd0 100644 --- a/noncore/apps/tinykate/libkate/document/katebuffer.cpp +++ b/noncore/apps/tinykate/libkate/document/katebuffer.cpp | |||
@@ -13,42 +13,43 @@ | |||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | Library General Public License for more details. | 15 | Library General Public License for more details. |
16 | 16 | ||
17 | You should have received a copy of the GNU Library General Public License | 17 | You should have received a copy of the GNU Library General Public License |
18 | along with this library; see the file COPYING.LIB. If not, write to | 18 | along with this library; see the file COPYING.LIB. If not, write to |
19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 | Boston, MA 02111-1307, USA. | 20 | Boston, MA 02111-1307, USA. |
21 | */ | 21 | */ |
22 | 22 | ||
23 | 23 | ||
24 | #include "katebuffer.h" | 24 | #include "katebuffer.h" |
25 | #include "kdebug.h" | ||
25 | 26 | ||
26 | // Includes for reading file | 27 | /* OPIE */ |
27 | #include <sys/types.h> | 28 | #include <opie2/odebug.h> |
28 | #include <sys/stat.h> | ||
29 | #include <fcntl.h> | ||
30 | #include <errno.h> | ||
31 | #include <unistd.h> | ||
32 | 29 | ||
30 | /* QT */ | ||
33 | #include <qfile.h> | 31 | #include <qfile.h> |
34 | #include <qtextstream.h> | 32 | #include <qtextstream.h> |
35 | |||
36 | #include <qtimer.h> | 33 | #include <qtimer.h> |
37 | #include <qtextcodec.h> | 34 | #include <qtextcodec.h> |
38 | 35 | ||
39 | // | 36 | /* STD */ |
40 | 37 | // Includes for reading file | |
38 | #include <sys/types.h> | ||
39 | #include <sys/stat.h> | ||
40 | #include <fcntl.h> | ||
41 | #include <errno.h> | ||
42 | #include <unistd.h> | ||
41 | #include <assert.h> | 43 | #include <assert.h> |
42 | #include <kdebug.h> | ||
43 | 44 | ||
44 | /** | 45 | /** |
45 | * Create an empty buffer. | 46 | * Create an empty buffer. |
46 | */ | 47 | */ |
47 | KWBuffer::KWBuffer() | 48 | KWBuffer::KWBuffer() |
48 | { | 49 | { |
49 | clear(); | 50 | clear(); |
50 | } | 51 | } |
51 | 52 | ||
52 | void | 53 | void |
53 | KWBuffer::clear() | 54 | KWBuffer::clear() |
54 | { | 55 | { |
@@ -56,53 +57,53 @@ KWBuffer::clear() | |||
56 | m_stringListCurrent=0; | 57 | m_stringListCurrent=0; |
57 | m_stringList.clear(); | 58 | m_stringList.clear(); |
58 | m_lineCount=1; | 59 | m_lineCount=1; |
59 | m_stringListIt = m_stringList.append(new TextLine()); | 60 | m_stringListIt = m_stringList.append(new TextLine()); |
60 | } | 61 | } |
61 | 62 | ||
62 | /** | 63 | /** |
63 | * Insert a file at line @p line in the buffer. | 64 | * Insert a file at line @p line in the buffer. |
64 | */ | 65 | */ |
65 | void | 66 | void |
66 | KWBuffer::insertFile(int line, const QString &file, QTextCodec *codec) | 67 | KWBuffer::insertFile(int line, const QString &file, QTextCodec *codec) |
67 | { | 68 | { |
68 | if (line) { | 69 | if (line) { |
69 | qDebug("insert File only supports insertion at line 0 == file opening"); | 70 | odebug << "insert File only supports insertion at line 0 == file opening" << oendl; |
70 | return; | 71 | return; |
71 | } | 72 | } |
72 | clear(); | 73 | clear(); |
73 | QFile iofile(file); | 74 | QFile iofile(file); |
74 | iofile.open(IO_ReadOnly); | 75 | iofile.open(IO_ReadOnly); |
75 | QTextStream stream(&iofile); | 76 | QTextStream stream(&iofile); |
76 | stream.setCodec(codec); | 77 | stream.setCodec(codec); |
77 | QString qsl; | 78 | QString qsl; |
78 | int count=0; | 79 | int count=0; |
79 | for (count=0;((qsl=stream.readLine())!=QString::null);count++) | 80 | for (count=0;((qsl=stream.readLine())!=QString::null); count++) |
80 | { | 81 | { |
81 | if (count==0) | 82 | if (count==0) |
82 | { | 83 | { |
83 | (*m_stringListIt)->append(qsl.unicode(),qsl.length()); | 84 | (*m_stringListIt)->append(qsl.unicode(),qsl.length()); |
84 | } | 85 | } |
85 | else | 86 | else |
86 | { | 87 | { |
87 | TextLine::Ptr tl=new TextLine(); | 88 | TextLine::Ptr tl=new TextLine(); |
88 | tl ->append(qsl.unicode(),qsl.length()); | 89 | tl ->append(qsl.unicode(),qsl.length()); |
89 | m_stringListIt=m_stringList.append(tl); | 90 | m_stringListIt=m_stringList.append(tl); |
90 | } | 91 | } |
91 | } | 92 | } |
92 | if (count!=0) | 93 | if (count!=0) |
93 | { | 94 | { |
94 | m_stringListCurrent=count-1; | 95 | m_stringListCurrent=count-1; |
95 | m_lineCount=count; | 96 | m_lineCount=count; |
96 | } | 97 | } |
97 | } | 98 | } |
98 | 99 | ||
99 | void | 100 | void |
100 | KWBuffer::loadFilePart() | 101 | KWBuffer::loadFilePart() |
101 | { | 102 | { |
102 | } | 103 | } |
103 | 104 | ||
104 | 105 | ||
105 | void | 106 | void |
106 | KWBuffer::insertData(int line, const QByteArray &data, QTextCodec *codec) | 107 | KWBuffer::insertData(int line, const QByteArray &data, QTextCodec *codec) |
107 | { | 108 | { |
108 | } | 109 | } |
@@ -112,54 +113,54 @@ KWBuffer::slotLoadFile() | |||
112 | { | 113 | { |
113 | loadFilePart(); | 114 | loadFilePart(); |
114 | // emit linesChanged(m_totalLines); | 115 | // emit linesChanged(m_totalLines); |
115 | emit linesChanged(20); | 116 | emit linesChanged(20); |
116 | } | 117 | } |
117 | 118 | ||
118 | /** | 119 | /** |
119 | * Return the total number of lines in the buffer. | 120 | * Return the total number of lines in the buffer. |
120 | */ | 121 | */ |
121 | int | 122 | int |
122 | KWBuffer::count() | 123 | KWBuffer::count() |
123 | { | 124 | { |
124 | qDebug("m_stringList.count %d",m_stringList.count()); | 125 | odebug << "m_stringList.count " << m_stringList.count() << "" << oendl; |
125 | return m_lineCount; | 126 | return m_lineCount; |
126 | //return m_stringList.count(); | 127 | // return m_stringList.count(); |
127 | // return m_totalLines; | 128 | // return m_totalLines; |
128 | } | 129 | } |
129 | 130 | ||
130 | 131 | ||
131 | void KWBuffer::seek(int i) | 132 | void KWBuffer::seek(int i) |
132 | { | 133 | { |
133 | if (m_stringListCurrent == i) | 134 | if (m_stringListCurrent == i) |
134 | return; | 135 | return; |
135 | while(m_stringListCurrent < i) | 136 | while(m_stringListCurrent < i) |
136 | { | 137 | { |
137 | ++m_stringListCurrent; | 138 | ++m_stringListCurrent; |
138 | ++m_stringListIt; | 139 | ++m_stringListIt; |
139 | } | 140 | } |
140 | while(m_stringListCurrent > i) | 141 | while(m_stringListCurrent > i) |
141 | { | 142 | { |
142 | --m_stringListCurrent; | 143 | --m_stringListCurrent; |
143 | --m_stringListIt; | 144 | --m_stringListIt; |
144 | } | 145 | } |
145 | } | 146 | } |
146 | 147 | ||
147 | 148 | ||
148 | TextLine::Ptr | 149 | TextLine::Ptr |
149 | KWBuffer::line(int i) | 150 | KWBuffer::line(int i) |
150 | { | 151 | { |
151 | if (i>=m_stringList.count()) return 0; | 152 | if (i>=m_stringList.count()) return 0; |
152 | seek(i); | 153 | seek(i); |
153 | return *m_stringListIt; | 154 | return *m_stringListIt; |
154 | } | 155 | } |
155 | 156 | ||
156 | void | 157 | void |
157 | KWBuffer::insertLine(int i, TextLine::Ptr line) | 158 | KWBuffer::insertLine(int i, TextLine::Ptr line) |
158 | { | 159 | { |
159 | seek(i); | 160 | seek(i); |
160 | m_stringListIt = m_stringList.insert(m_stringListIt, line); | 161 | m_stringListIt = m_stringList.insert(m_stringListIt, line); |
161 | m_stringListCurrent = i; | 162 | m_stringListCurrent = i; |
162 | m_lineCount++; | 163 | m_lineCount++; |
163 | } | 164 | } |
164 | 165 | ||
165 | 166 | ||
diff --git a/noncore/apps/tinykate/libkate/document/katedocument.cpp b/noncore/apps/tinykate/libkate/document/katedocument.cpp index 0c742d7..6dc4fd2 100644 --- a/noncore/apps/tinykate/libkate/document/katedocument.cpp +++ b/noncore/apps/tinykate/libkate/document/katedocument.cpp | |||
@@ -1,21 +1,21 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | katedocument.cpp - description | 2 | katedocument.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 | * * | 13 | * * |
14 | * This program is free software; you can redistribute it and/or modify * | 14 | * This program is free software; you can redistribute it and/or modify * |
15 | * it under the terms of the GNU General Public License as published by * | 15 | * it under the terms of the GNU General Public License as published by * |
16 | * the Free Software Foundation; either version 2 of the License, or * | 16 | * the Free Software Foundation; either version 2 of the License, or * |
17 | * (at your option) any later version. * | 17 | * (at your option) any later version. * |
18 | * * | 18 | * * |
19 | ***************************************************************************/ | 19 | ***************************************************************************/ |
20 | 20 | ||
21 | /* | 21 | /* |
@@ -30,62 +30,63 @@ | |||
30 | This library is distributed in the hope that it will be useful, | 30 | This library is distributed in the hope that it will be useful, |
31 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 31 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
33 | Library General Public License for more details. | 33 | Library General Public License for more details. |
34 | 34 | ||
35 | You should have received a copy of the GNU Library General Public License | 35 | You should have received a copy of the GNU Library General Public License |
36 | along with this library; see the file COPYING.LIB. If not, write to | 36 | along with this library; see the file COPYING.LIB. If not, write to |
37 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 37 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
38 | Boston, MA 02111-1307, USA. | 38 | Boston, MA 02111-1307, USA. |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include "katedocument.h" | 41 | #include "katedocument.h" |
42 | #include "kmessagebox.h" | ||
43 | #include "kglobal.h" | ||
42 | 44 | ||
45 | //#include "kcharsets.h" | ||
46 | #include "kdebug.h" | ||
47 | //#include "kinstance.h" | ||
43 | 48 | ||
44 | #include <qfileinfo.h> | 49 | #include "kglobalsettings.h" |
45 | #include <qdatetime.h> | 50 | //#include "kaction.h" |
51 | //#include "kstdaction.h" | ||
46 | 52 | ||
47 | #include <kmessagebox.h> | 53 | #include "../view/kateview.h" |
48 | #include <qpe/config.h> | 54 | #include "katebuffer.h" |
49 | #include <qstring.h> | 55 | #include "katetextline.h" |
50 | 56 | ||
51 | #include <sys/time.h> | 57 | #include "katecmd.h" |
52 | #include <unistd.h> | ||
53 | 58 | ||
54 | #include <stdio.h> | 59 | /* OPIE */ |
60 | #include <opie2/odebug.h> | ||
61 | #include <qpe/config.h> | ||
55 | 62 | ||
63 | /* QT */ | ||
64 | #include <qfileinfo.h> | ||
65 | #include <qdatetime.h> | ||
66 | #include <qstring.h> | ||
56 | #include <qtimer.h> | 67 | #include <qtimer.h> |
57 | #include <qobject.h> | 68 | #include <qobject.h> |
58 | #include <qapplication.h> | 69 | #include <qapplication.h> |
59 | #include <qclipboard.h> | 70 | #include <qclipboard.h> |
60 | #include <qfont.h> | 71 | #include <qfont.h> |
61 | #include <qpainter.h> | 72 | #include <qpainter.h> |
62 | #include <qfile.h> | 73 | #include <qfile.h> |
63 | #include <qtextstream.h> | 74 | #include <qtextstream.h> |
64 | #include <qtextcodec.h> | 75 | #include <qtextcodec.h> |
65 | #include <kglobal.h> | ||
66 | 76 | ||
67 | //#include <kcharsets.h> | 77 | /* STD */ |
68 | #include <kdebug.h> | 78 | #include <sys/time.h> |
69 | //#include <kinstance.h> | 79 | #include <unistd.h> |
70 | 80 | #include <stdio.h> | |
71 | #include <kglobalsettings.h> | ||
72 | //#include <kaction.h> | ||
73 | //#include <kstdaction.h> | ||
74 | |||
75 | #include "../view/kateview.h" | ||
76 | #include "katebuffer.h" | ||
77 | #include "katetextline.h" | ||
78 | |||
79 | #include "katecmd.h" | ||
80 | 81 | ||
81 | KateAction::KateAction(Action a, PointStruc &cursor, int len, const QString &text) | 82 | KateAction::KateAction(Action a, PointStruc &cursor, int len, const QString &text) |
82 | : action(a), cursor(cursor), len(len), text(text) { | 83 | : action(a), cursor(cursor), len(len), text(text) { |
83 | } | 84 | } |
84 | 85 | ||
85 | KateActionGroup::KateActionGroup(PointStruc &aStart, int type) | 86 | KateActionGroup::KateActionGroup(PointStruc &aStart, int type) |
86 | : start(aStart), action(0L), undoType(type) { | 87 | : start(aStart), action(0L), undoType(type) { |
87 | } | 88 | } |
88 | 89 | ||
89 | KateActionGroup::~KateActionGroup() { | 90 | KateActionGroup::~KateActionGroup() { |
90 | KateAction *current, *next; | 91 | KateAction *current, *next; |
91 | 92 | ||
@@ -121,47 +122,47 @@ const char * KateActionGroup::typeName(int type) | |||
121 | case ugDelLine : return "Delete Line"; | 122 | case ugDelLine : return "Delete Line"; |
122 | } | 123 | } |
123 | return ""; | 124 | return ""; |
124 | } | 125 | } |
125 | 126 | ||
126 | const int KateDocument::maxAttribs = 32; | 127 | const int KateDocument::maxAttribs = 32; |
127 | 128 | ||
128 | QStringList KateDocument::searchForList = QStringList(); | 129 | QStringList KateDocument::searchForList = QStringList(); |
129 | QStringList KateDocument::replaceWithList = QStringList(); | 130 | QStringList KateDocument::replaceWithList = QStringList(); |
130 | 131 | ||
131 | uint KateDocument::uniqueID = 0; | 132 | uint KateDocument::uniqueID = 0; |
132 | 133 | ||
133 | QPtrDict<KateDocument::KateDocPrivate>* KateDocument::d_ptr = 0; | 134 | QPtrDict<KateDocument::KateDocPrivate>* KateDocument::d_ptr = 0; |
134 | 135 | ||
135 | 136 | ||
136 | KateDocument::KateDocument(bool bSingleViewMode, bool bBrowserView, | 137 | KateDocument::KateDocument(bool bSingleViewMode, bool bBrowserView, |
137 | QWidget *parentWidget, const char *widgetName, | 138 | QWidget *parentWidget, const char *widgetName, |
138 | QObject *, const char *) | 139 | QObject *, const char *) |
139 | : Kate::Document (), | 140 | : Kate::Document (), |
140 | myFont(KGlobalSettings::generalFont()), myFontBold(KGlobalSettings::generalFont()), myFontItalic(KGlobalSettings::generalFont()), myFontBI(KGlobalSettings::generalFont()), | 141 | myFont(KGlobalSettings::generalFont()), myFontBold(KGlobalSettings::generalFont()), myFontItalic(KGlobalSettings::generalFont()), myFontBI(KGlobalSettings::generalFont()), |
141 | myFontMetrics (myFont), myFontMetricsBold (myFontBold), myFontMetricsItalic (myFontItalic), myFontMetricsBI (myFontBI), | 142 | myFontMetrics (myFont), myFontMetricsBold (myFontBold), myFontMetricsItalic (myFontItalic), myFontMetricsBI (myFontBI), |
142 | hlManager(HlManager::self ()) | 143 | hlManager(HlManager::self ()) |
143 | { | 144 | { |
144 | 145 | ||
145 | d(this)->hlSetByUser = false; | 146 | d(this)->hlSetByUser = false; |
146 | PreHighlightedTill=0; | 147 | PreHighlightedTill=0; |
147 | RequestPreHighlightTill=0; | 148 | RequestPreHighlightTill=0; |
148 | 149 | ||
149 | m_bSingleViewMode=bSingleViewMode; | 150 | m_bSingleViewMode=bSingleViewMode; |
150 | m_bBrowserView = bBrowserView; | 151 | m_bBrowserView = bBrowserView; |
151 | 152 | ||
152 | m_url = QString::null; | 153 | m_url = QString::null; |
153 | 154 | ||
154 | // NOTE: QFont::CharSet doesn't provide all the charsets KDE supports | 155 | // NOTE: QFont::CharSet doesn't provide all the charsets KDE supports |
155 | // (esp. it doesn't distinguish between UTF-8 and iso10646-1) | 156 | // (esp. it doesn't distinguish between UTF-8 and iso10646-1) |
156 | 157 | ||
157 | myEncoding = QString::fromLatin1(QTextCodec::codecForLocale()->name()); | 158 | myEncoding = QString::fromLatin1(QTextCodec::codecForLocale()->name()); |
158 | 159 | ||
159 | maxLength = -1; | 160 | maxLength = -1; |
160 | 161 | ||
161 | setFont (KGlobalSettings::generalFont()); | 162 | setFont (KGlobalSettings::generalFont()); |
162 | 163 | ||
163 | myDocID = uniqueID; | 164 | myDocID = uniqueID; |
164 | uniqueID++; | 165 | uniqueID++; |
165 | 166 | ||
166 | myDocName = QString (""); | 167 | myDocName = QString (""); |
167 | fileInfo = new QFileInfo (); | 168 | fileInfo = new QFileInfo (); |
@@ -283,60 +284,60 @@ KateDocument::~KateDocument() | |||
283 | if ( !m_bSingleViewMode ) | 284 | if ( !m_bSingleViewMode ) |
284 | { | 285 | { |
285 | m_views.setAutoDelete( true ); | 286 | m_views.setAutoDelete( true ); |
286 | m_views.clear(); | 287 | m_views.clear(); |
287 | m_views.setAutoDelete( false ); | 288 | m_views.setAutoDelete( false ); |
288 | } | 289 | } |
289 | delete_d(this); | 290 | delete_d(this); |
290 | } | 291 | } |
291 | 292 | ||
292 | void KateDocument::openURL(const QString &filename) | 293 | void KateDocument::openURL(const QString &filename) |
293 | { | 294 | { |
294 | 295 | ||
295 | m_file=filename; | 296 | m_file=filename; |
296 | fileInfo->setFile (m_file); | 297 | fileInfo->setFile (m_file); |
297 | setMTime(); | 298 | setMTime(); |
298 | 299 | ||
299 | if (!fileInfo->exists() || !fileInfo->isReadable()) | 300 | if (!fileInfo->exists() || !fileInfo->isReadable()) |
300 | { | 301 | { |
301 | qDebug("File doesn't exit or couldn't be read"); | 302 | odebug << "File doesn't exit or couldn't be read" << oendl; |
302 | return ; | 303 | return ; |
303 | } | 304 | } |
304 | 305 | ||
305 | buffer->clear(); | 306 | buffer->clear(); |
306 | #warning fixme | 307 | #warning fixme |
307 | // buffer->insertFile(0, m_file, KGlobal::charsets()->codecForName(myEncoding)); | 308 | // buffer->insertFile(0, m_file, KGlobal::charsets()->codecForName(myEncoding)); |
308 | qDebug("Telling buffer to open file"); | 309 | odebug << "Telling buffer to open file" << oendl; |
309 | buffer->insertFile(0, m_file, QTextCodec::codecForLocale()); | 310 | buffer->insertFile(0, m_file, QTextCodec::codecForLocale()); |
310 | 311 | ||
311 | setMTime(); | 312 | setMTime(); |
312 | 313 | ||
313 | if (myWordWrap) | 314 | if (myWordWrap) |
314 | wrapText (myWordWrapAt); | 315 | wrapText (myWordWrapAt); |
315 | 316 | ||
316 | int hl = hlManager->wildcardFind( m_file ); | 317 | int hl = hlManager->wildcardFind( m_file ); |
317 | 318 | ||
318 | setHighlight(hl); | 319 | setHighlight(hl); |
319 | 320 | ||
320 | updateLines(); | 321 | updateLines(); |
321 | updateViews(); | 322 | updateViews(); |
322 | 323 | ||
323 | emit fileNameChanged(); | 324 | emit fileNameChanged(); |
324 | 325 | ||
325 | return ; | 326 | return ; |
326 | } | 327 | } |
327 | 328 | ||
328 | bool KateDocument::saveFile() | 329 | bool KateDocument::saveFile() |
329 | { | 330 | { |
330 | 331 | ||
331 | QFile f( m_file ); | 332 | QFile f( m_file ); |
332 | if ( !f.open( IO_WriteOnly ) ) | 333 | if ( !f.open( IO_WriteOnly ) ) |
333 | return false; // Error | 334 | return false; // Error |
334 | 335 | ||
335 | QTextStream stream(&f); | 336 | QTextStream stream(&f); |
336 | 337 | ||
337 | stream.setEncoding(QTextStream::RawUnicode); // disable Unicode headers | 338 | stream.setEncoding(QTextStream::RawUnicode); // disable Unicode headers |
338 | #warning fixme | 339 | #warning fixme |
339 | // stream.setCodec(KGlobal::charsets()->codecForName(myEncoding)); | 340 | // stream.setCodec(KGlobal::charsets()->codecForName(myEncoding)); |
340 | stream.setCodec(QTextCodec::codecForLocale()); // this line sets the mapper to the correct codec | 341 | stream.setCodec(QTextCodec::codecForLocale()); // this line sets the mapper to the correct codec |
341 | 342 | ||
342 | int maxLine = numLines(); | 343 | int maxLine = numLines(); |
@@ -602,25 +603,25 @@ void KateDocument::readConfig() | |||
602 | myWordWrapAt = config->readNumEntry("Word Wrap At", 80); | 603 | myWordWrapAt = config->readNumEntry("Word Wrap At", 80); |
603 | if (myWordWrap) | 604 | if (myWordWrap) |
604 | wrapText (myWordWrapAt); | 605 | wrapText (myWordWrapAt); |
605 | 606 | ||
606 | setTabWidth(config->readNumEntry("TabWidth", 8)); | 607 | setTabWidth(config->readNumEntry("TabWidth", 8)); |
607 | setUndoSteps(config->readNumEntry("UndoSteps", 50)); | 608 | setUndoSteps(config->readNumEntry("UndoSteps", 50)); |
608 | m_singleSelection = config->readBoolEntry("SingleSelection", false); | 609 | m_singleSelection = config->readBoolEntry("SingleSelection", false); |
609 | myEncoding = config->readEntry("Encoding", QString::fromLatin1(QTextCodec::codecForLocale()->name())); | 610 | myEncoding = config->readEntry("Encoding", QString::fromLatin1(QTextCodec::codecForLocale()->name())); |
610 | setFont (config->readFontEntry("Font", myFont)); | 611 | setFont (config->readFontEntry("Font", myFont)); |
611 | 612 | ||
612 | colors[0] = config->readColorEntry("Color Background", colors[0]); | 613 | colors[0] = config->readColorEntry("Color Background", colors[0]); |
613 | colors[1] = config->readColorEntry("Color Selected", colors[1]); | 614 | colors[1] = config->readColorEntry("Color Selected", colors[1]); |
614 | 615 | ||
615 | // config->sync(); | 616 | // config->sync(); |
616 | } | 617 | } |
617 | 618 | ||
618 | void KateDocument::writeConfig() | 619 | void KateDocument::writeConfig() |
619 | { | 620 | { |
620 | KateConfig *config = KGlobal::config(); | 621 | KateConfig *config = KGlobal::config(); |
621 | config->setGroup("Kate Document"); | 622 | config->setGroup("Kate Document"); |
622 | config->writeEntry("Word Wrap On", myWordWrap); | 623 | config->writeEntry("Word Wrap On", myWordWrap); |
623 | config->writeEntry("Word Wrap At", myWordWrapAt); | 624 | config->writeEntry("Word Wrap At", myWordWrapAt); |
624 | config->writeEntry("TabWidth", tabChars); | 625 | config->writeEntry("TabWidth", tabChars); |
625 | config->writeEntry("UndoSteps", undoSteps); | 626 | config->writeEntry("UndoSteps", undoSteps); |
626 | config->writeEntry("SingleSelection", m_singleSelection); | 627 | config->writeEntry("SingleSelection", m_singleSelection); |
@@ -674,25 +675,25 @@ void KateDocument::setHighlight(int n) { | |||
674 | } else { | 675 | } else { |
675 | if (m_highlight != 0L) m_highlight->release(); | 676 | if (m_highlight != 0L) m_highlight->release(); |
676 | h->use(); | 677 | h->use(); |
677 | m_highlight = h; | 678 | m_highlight = h; |
678 | makeAttribs(); | 679 | makeAttribs(); |
679 | } | 680 | } |
680 | PreHighlightedTill=0; | 681 | PreHighlightedTill=0; |
681 | RequestPreHighlightTill=0; | 682 | RequestPreHighlightTill=0; |
682 | emit(highlightChanged()); | 683 | emit(highlightChanged()); |
683 | } | 684 | } |
684 | 685 | ||
685 | void KateDocument::makeAttribs() { | 686 | void KateDocument::makeAttribs() { |
686 | qDebug("KateDocument::makeAttribs()"); | 687 | odebug << "KateDocument::makeAttribs()" << oendl; |
687 | m_numAttribs = hlManager->makeAttribs(m_highlight, m_attribs, maxAttribs); | 688 | m_numAttribs = hlManager->makeAttribs(m_highlight, m_attribs, maxAttribs); |
688 | updateFontData(); | 689 | updateFontData(); |
689 | updateLines(); | 690 | updateLines(); |
690 | } | 691 | } |
691 | 692 | ||
692 | void KateDocument::updateFontData() { | 693 | void KateDocument::updateFontData() { |
693 | int maxAscent, maxDescent; | 694 | int maxAscent, maxDescent; |
694 | int tabWidth; | 695 | int tabWidth; |
695 | KateView *view; | 696 | KateView *view; |
696 | 697 | ||
697 | maxAscent = myFontMetrics.ascent(); | 698 | maxAscent = myFontMetrics.ascent(); |
698 | maxDescent = myFontMetrics.descent(); | 699 | maxDescent = myFontMetrics.descent(); |
@@ -1914,26 +1915,26 @@ void KateDocument::updateLines(int startLine, int endLine, int flags, int cursor | |||
1914 | line = startLine; | 1915 | line = startLine; |
1915 | ctxNum = 0; | 1916 | ctxNum = 0; |
1916 | if (line > 0) ctxNum = getTextLine(line - 1)->getContext(); | 1917 | if (line > 0) ctxNum = getTextLine(line - 1)->getContext(); |
1917 | do { | 1918 | do { |
1918 | // kdDebug(13020)<<QString("**************Working on line: %1").arg(line)<<endl; | 1919 | // kdDebug(13020)<<QString("**************Working on line: %1").arg(line)<<endl; |
1919 | textLine = getTextLine(line); | 1920 | textLine = getTextLine(line); |
1920 | if (textLine==0) kdDebug(13020)<<"****updateLines()>> error textLine==0"<<endl; | 1921 | if (textLine==0) kdDebug(13020)<<"****updateLines()>> error textLine==0"<<endl; |
1921 | if (line <= endLine && line != cursorY) { | 1922 | if (line <= endLine && line != cursorY) { |
1922 | if (flags & KateView::cfRemoveSpaces) textLine->removeSpaces(); | 1923 | if (flags & KateView::cfRemoveSpaces) textLine->removeSpaces(); |
1923 | updateMaxLength(textLine); | 1924 | updateMaxLength(textLine); |
1924 | } | 1925 | } |
1925 | endCtx = textLine->getContext(); | 1926 | endCtx = textLine->getContext(); |
1926 | // qDebug("DOHIGHLIGHT"); | 1927 | // odebug << "DOHIGHLIGHT" << oendl; |
1927 | 1928 | ||
1928 | ctxNum = m_highlight->doHighlight(ctxNum,textLine); | 1929 | ctxNum = m_highlight->doHighlight(ctxNum,textLine); |
1929 | textLine->setContext(ctxNum); | 1930 | textLine->setContext(ctxNum); |
1930 | line++; | 1931 | line++; |
1931 | } while ((buffer->line(line)!=0) && (line <= endLine || endCtx != ctxNum)); | 1932 | } while ((buffer->line(line)!=0) && (line <= endLine || endCtx != ctxNum)); |
1932 | // kdDebug(13020)<<"updateLines :: while loop left"<<endl; | 1933 | // kdDebug(13020)<<"updateLines :: while loop left"<<endl; |
1933 | tagLines(startLine, line - 1); | 1934 | tagLines(startLine, line - 1); |
1934 | } | 1935 | } |
1935 | 1936 | ||
1936 | 1937 | ||
1937 | void KateDocument::updateMaxLength(TextLine::Ptr &textLine) { | 1938 | void KateDocument::updateMaxLength(TextLine::Ptr &textLine) { |
1938 | int len; | 1939 | int len; |
1939 | 1940 | ||
diff --git a/noncore/apps/tinykate/libkate/document/katehighlight.cpp b/noncore/apps/tinykate/libkate/document/katehighlight.cpp index 0d2c283..539d356 100644 --- a/noncore/apps/tinykate/libkate/document/katehighlight.cpp +++ b/noncore/apps/tinykate/libkate/document/katehighlight.cpp | |||
@@ -1,53 +1,57 @@ | |||
1 | /* | 1 | /* |
2 | Copyright (C) 1998, 1999 Jochen Wilhelmy | 2 | Copyright (C) 1998, 1999 Jochen Wilhelmy |
3 | digisnap@cs.tu-berlin.de | 3 | digisnap@cs.tu-berlin.de |
4 | (C) 2002, 2001 The Kate Team <kwrite-devel@kde.org> | 4 | (C) 2002, 2001 The Kate Team <kwrite-devel@kde.org> |
5 | (C) 2002 Joseph Wenninger <jowenn@kde.org> | 5 | (C) 2002 Joseph Wenninger <jowenn@kde.org> |
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <string.h> | ||
23 | |||
24 | #include <qtextstream.h> | ||
25 | #include <qpe/config.h> | ||
26 | #include <kglobal.h> | ||
27 | //#include <kinstance.h> | ||
28 | //#include <kmimemagic.h> | ||
29 | #include <klocale.h> | ||
30 | //#include <kregexp.h> | ||
31 | #include <kglobalsettings.h> | ||
32 | #include <kdebug.h> | ||
33 | #include <kstddirs.h> | ||
34 | |||
35 | #include "katehighlight.h" | 22 | #include "katehighlight.h" |
36 | |||
37 | |||
38 | #include "katetextline.h" | 23 | #include "katetextline.h" |
39 | #include "katedocument.h" | 24 | #include "katedocument.h" |
40 | #include "katesyntaxdocument.h" | 25 | #include "katesyntaxdocument.h" |
41 | 26 | ||
27 | #include "kglobal.h" | ||
28 | //#include "kinstance.h" | ||
29 | //#include "kmimemagic.h" | ||
30 | #include "klocale.h" | ||
31 | //#include "kregexp.h" | ||
32 | #include "kglobalsettings.h" | ||
33 | #include "kdebug.h" | ||
34 | #include "kstddirs.h" | ||
35 | |||
36 | /* OPIE */ | ||
37 | #include <opie2/odebug.h> | ||
38 | #include <qpe/config.h> | ||
39 | |||
40 | /* QT */ | ||
41 | #include <qtextstream.h> | ||
42 | |||
43 | /* STD */ | ||
44 | #include <string.h> | ||
45 | |||
42 | 46 | ||
43 | HlManager *HlManager::s_pSelf = 0; | 47 | HlManager *HlManager::s_pSelf = 0; |
44 | 48 | ||
45 | enum Item_styles { dsNormal,dsKeyword,dsDataType,dsDecVal,dsBaseN,dsFloat,dsChar,dsString,dsComment,dsOthers}; | 49 | enum Item_styles { dsNormal,dsKeyword,dsDataType,dsDecVal,dsBaseN,dsFloat,dsChar,dsString,dsComment,dsOthers}; |
46 | 50 | ||
47 | static bool trueBool = true; | 51 | static bool trueBool = true; |
48 | static QString stdDeliminator = QString ("!%&()*+,-./:;<=>?[]^{|}~ \t\\"); | 52 | static QString stdDeliminator = QString ("!%&()*+,-./:;<=>?[]^{|}~ \t\\"); |
49 | 53 | ||
50 | int getDefStyleNum(QString name) | 54 | int getDefStyleNum(QString name) |
51 | { | 55 | { |
52 | if (name=="dsNormal") return dsNormal; | 56 | if (name=="dsNormal") return dsNormal; |
53 | if (name=="dsKeyword") return dsKeyword; | 57 | if (name=="dsKeyword") return dsKeyword; |
@@ -111,26 +115,26 @@ const QChar *Hl2CharDetect::checkHgl(const QChar *str, int len, bool) { | |||
111 | 115 | ||
112 | HlStringDetect::HlStringDetect(int attribute, int context, const QString &s, bool inSensitive) | 116 | HlStringDetect::HlStringDetect(int attribute, int context, const QString &s, bool inSensitive) |
113 | : HlItem(attribute, context), str(inSensitive ? s.upper():s), _inSensitive(inSensitive) { | 117 | : HlItem(attribute, context), str(inSensitive ? s.upper():s), _inSensitive(inSensitive) { |
114 | } | 118 | } |
115 | 119 | ||
116 | HlStringDetect::~HlStringDetect() { | 120 | HlStringDetect::~HlStringDetect() { |
117 | } | 121 | } |
118 | 122 | ||
119 | const QChar *HlStringDetect::checkHgl(const QChar *s, int len, bool) { | 123 | const QChar *HlStringDetect::checkHgl(const QChar *s, int len, bool) { |
120 | if (!_inSensitive) {if (memcmp(s, str.unicode(), str.length()*sizeof(QChar)) == 0) return s + str.length();} | 124 | if (!_inSensitive) {if (memcmp(s, str.unicode(), str.length()*sizeof(QChar)) == 0) return s + str.length();} |
121 | else | 125 | else |
122 | { | 126 | { |
123 | QString tmp=QString(s,str.length()).upper(); | 127 | QString tmp=QString(s,str.length()).upper(); |
124 | if (tmp==str) return s+str.length(); | 128 | if (tmp==str) return s+str.length(); |
125 | } | 129 | } |
126 | return 0L; | 130 | return 0L; |
127 | } | 131 | } |
128 | 132 | ||
129 | 133 | ||
130 | HlRangeDetect::HlRangeDetect(int attribute, int context, QChar ch1, QChar ch2) | 134 | HlRangeDetect::HlRangeDetect(int attribute, int context, QChar ch1, QChar ch2) |
131 | : HlItem(attribute,context) { | 135 | : HlItem(attribute,context) { |
132 | sChar1 = ch1; | 136 | sChar1 = ch1; |
133 | sChar2 = ch2; | 137 | sChar2 = ch2; |
134 | } | 138 | } |
135 | 139 | ||
136 | const QChar *HlRangeDetect::checkHgl(const QChar *s, int len, bool) { | 140 | const QChar *HlRangeDetect::checkHgl(const QChar *s, int len, bool) { |
@@ -204,28 +208,28 @@ HlInt::HlInt(int attribute, int context) | |||
204 | : HlItem(attribute,context) { | 208 | : HlItem(attribute,context) { |
205 | } | 209 | } |
206 | 210 | ||
207 | const QChar *HlInt::checkHgl(const QChar *str, int len, bool) { | 211 | const QChar *HlInt::checkHgl(const QChar *str, int len, bool) { |
208 | const QChar *s,*s1; | 212 | const QChar *s,*s1; |
209 | 213 | ||
210 | s = str; | 214 | s = str; |
211 | while (s->isDigit()) s++; | 215 | while (s->isDigit()) s++; |
212 | if (s > str) | 216 | if (s > str) |
213 | { | 217 | { |
214 | if (subItems) | 218 | if (subItems) |
215 | { | 219 | { |
216 | for (HlItem *it=subItems->first();it;it=subItems->next()) | 220 | for (HlItem *it=subItems->first();it;it=subItems->next()) |
217 | { | 221 | { |
218 | s1=it->checkHgl(s, len, false); | 222 | s1=it->checkHgl(s, len, false); |
219 | if (s1) return s1; | 223 | if (s1) return s1; |
220 | } | 224 | } |
221 | } | 225 | } |
222 | return s; | 226 | return s; |
223 | } | 227 | } |
224 | return 0L; | 228 | return 0L; |
225 | } | 229 | } |
226 | 230 | ||
227 | HlFloat::HlFloat(int attribute, int context) | 231 | HlFloat::HlFloat(int attribute, int context) |
228 | : HlItem(attribute,context) { | 232 | : HlItem(attribute,context) { |
229 | } | 233 | } |
230 | 234 | ||
231 | const QChar *HlFloat::checkHgl(const QChar *s, int len, bool) { | 235 | const QChar *HlFloat::checkHgl(const QChar *s, int len, bool) { |
@@ -239,32 +243,32 @@ const QChar *HlFloat::checkHgl(const QChar *s, int len, bool) { | |||
239 | } | 243 | } |
240 | if (p = (*s == '.')) { | 244 | if (p = (*s == '.')) { |
241 | s++; | 245 | s++; |
242 | while (s->isDigit()) { | 246 | while (s->isDigit()) { |
243 | s++; | 247 | s++; |
244 | b = true; | 248 | b = true; |
245 | } | 249 | } |
246 | } | 250 | } |
247 | if (!b) return 0L; | 251 | if (!b) return 0L; |
248 | if ((*s&0xdf) == 'E') s++; | 252 | if ((*s&0xdf) == 'E') s++; |
249 | else | 253 | else |
250 | if (!p) return 0L; | 254 | if (!p) return 0L; |
251 | else | 255 | else |
252 | { | 256 | { |
253 | if (subItems) | 257 | if (subItems) |
254 | { | 258 | { |
255 | for (HlItem *it=subItems->first();it;it=subItems->next()) | 259 | for (HlItem *it=subItems->first();it;it=subItems->next()) |
256 | { | 260 | { |
257 | s1=it->checkHgl(s, len, false); | 261 | s1=it->checkHgl(s, len, false); |
258 | if (s1) return s1; | 262 | if (s1) return s1; |
259 | } | 263 | } |
260 | } | 264 | } |
261 | return s; | 265 | return s; |
262 | } | 266 | } |
263 | if ((*s == '-')||(*s =='+')) s++; | 267 | if ((*s == '-')||(*s =='+')) s++; |
264 | b = false; | 268 | b = false; |
265 | while (s->isDigit()) { | 269 | while (s->isDigit()) { |
266 | s++; | 270 | s++; |
267 | b = true; | 271 | b = true; |
268 | } | 272 | } |
269 | if (b) | 273 | if (b) |
270 | { | 274 | { |
@@ -336,25 +340,25 @@ HlCHex::HlCHex(int attribute, int context) | |||
336 | } | 340 | } |
337 | 341 | ||
338 | const QChar *HlCHex::checkHgl(const QChar *str, int len, bool) { | 342 | const QChar *HlCHex::checkHgl(const QChar *str, int len, bool) { |
339 | const QChar *s=str; | 343 | const QChar *s=str; |
340 | #if 0 | 344 | #if 0 |
341 | int i; | 345 | int i; |
342 | for (i=0;(*s)!='\0';s++,i++); | 346 | for (i=0;(*s)!='\0';s++,i++); |
343 | QString line(str,i); | 347 | QString line(str,i); |
344 | QRegExp3 rx("0[xX][a-fA-F\\d]+[UuLl]?"); // this matches but is also matching parenthesis | 348 | QRegExp3 rx("0[xX][a-fA-F\\d]+[UuLl]?"); // this matches but is also matching parenthesis |
345 | int pos=rx.search(line,0); | 349 | int pos=rx.search(line,0); |
346 | if(pos > -1) return str+rx.matchedLength(); | 350 | if(pos > -1) return str+rx.matchedLength(); |
347 | else | 351 | else |
348 | return 0L; | 352 | return 0L; |
349 | 353 | ||
350 | #else | 354 | #else |
351 | if (str[0] == '0' && ((str[1]&0xdf) == 'X' )) { | 355 | if (str[0] == '0' && ((str[1]&0xdf) == 'X' )) { |
352 | str += 2; | 356 | str += 2; |
353 | s = str; | 357 | s = str; |
354 | while (s->isDigit() || ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') /*|| (*s >= 'a' && *s <= 'f')*/) s++; | 358 | while (s->isDigit() || ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') /*|| (*s >= 'a' && *s <= 'f')*/) s++; |
355 | if (s > str) { | 359 | if (s > str) { |
356 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; | 360 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; |
357 | return s; | 361 | return s; |
358 | } | 362 | } |
359 | } | 363 | } |
360 | return 0L; | 364 | return 0L; |
@@ -391,38 +395,38 @@ HlRegExpr::HlRegExpr(int attribute, int context,QString regexp) | |||
391 | if(!handlesLinestart) regexp.prepend("^"); | 395 | if(!handlesLinestart) regexp.prepend("^"); |
392 | Expr=new QRegExp3(regexp); | 396 | Expr=new QRegExp3(regexp); |
393 | } | 397 | } |
394 | 398 | ||
395 | const QChar *HlRegExpr::checkHgl(const QChar *s, int len, bool lineStart) | 399 | const QChar *HlRegExpr::checkHgl(const QChar *s, int len, bool lineStart) |
396 | { | 400 | { |
397 | if ((!lineStart) && handlesLinestart) return 0; | 401 | if ((!lineStart) && handlesLinestart) return 0; |
398 | 402 | ||
399 | QString line(s,len); | 403 | QString line(s,len); |
400 | int pos = Expr->search( line, 0 ); | 404 | int pos = Expr->search( line, 0 ); |
401 | if (pos==-1) return 0L; | 405 | if (pos==-1) return 0L; |
402 | else | 406 | else |
403 | return (s+Expr->matchedLength()); | 407 | return (s+Expr->matchedLength()); |
404 | }; | 408 | }; |
405 | 409 | ||
406 | 410 | ||
407 | HlLineContinue::HlLineContinue(int attribute, int context) | 411 | HlLineContinue::HlLineContinue(int attribute, int context) |
408 | : HlItem(attribute,context) { | 412 | : HlItem(attribute,context) { |
409 | } | 413 | } |
410 | 414 | ||
411 | const QChar *HlLineContinue::checkHgl(const QChar *s, int len, bool) { | 415 | const QChar *HlLineContinue::checkHgl(const QChar *s, int len, bool) { |
412 | 416 | ||
413 | if ((s[0].latin1() == '\\') && (len == 1)) | 417 | if ((s[0].latin1() == '\\') && (len == 1)) |
414 | { | 418 | { |
415 | return s + 1; | 419 | return s + 1; |
416 | } | 420 | } |
417 | return 0L; | 421 | return 0L; |
418 | } | 422 | } |
419 | 423 | ||
420 | 424 | ||
421 | HlCStringChar::HlCStringChar(int attribute, int context) | 425 | HlCStringChar::HlCStringChar(int attribute, int context) |
422 | : HlItem(attribute,context) { | 426 | : HlItem(attribute,context) { |
423 | } | 427 | } |
424 | 428 | ||
425 | //checks for hex and oct (for example \x1b or \033) | 429 | //checks for hex and oct (for example \x1b or \033) |
426 | const QChar *checkCharHexOct(const QChar *str) { | 430 | const QChar *checkCharHexOct(const QChar *str) { |
427 | const QChar *s; | 431 | const QChar *s; |
428 | s=str; | 432 | s=str; |
@@ -612,25 +616,25 @@ int Highlight::doHighlight(int ctxNum, TextLine *textLine) | |||
612 | bool found = false; | 616 | bool found = false; |
613 | while (z < len) | 617 | while (z < len) |
614 | { | 618 | { |
615 | found = false; | 619 | found = false; |
616 | 620 | ||
617 | for (item = context->items.first(); item != 0L; item = context->items.next()) | 621 | for (item = context->items.first(); item != 0L; item = context->items.next()) |
618 | { | 622 | { |
619 | if (item->startEnable(lastChar)) | 623 | if (item->startEnable(lastChar)) |
620 | { | 624 | { |
621 | s2 = item->checkHgl(s1, len-z, z==0); | 625 | s2 = item->checkHgl(s1, len-z, z==0); |
622 | if (s2 > s1) | 626 | if (s2 > s1) |
623 | { | 627 | { |
624 | qDebug("An item has been detected"); | 628 | odebug << "An item has been detected" << oendl; |
625 | textLine->setAttribs(item->attr,s1 - str,s2 - str); | 629 | textLine->setAttribs(item->attr,s1 - str,s2 - str); |
626 | ctxNum = item->ctx; | 630 | ctxNum = item->ctx; |
627 | context = contextList[ctxNum]; | 631 | context = contextList[ctxNum]; |
628 | z = z + s2 - s1 - 1; | 632 | z = z + s2 - s1 - 1; |
629 | s1 = s2 - 1; | 633 | s1 = s2 - 1; |
630 | found = true; | 634 | found = true; |
631 | break; | 635 | break; |
632 | } | 636 | } |
633 | } | 637 | } |
634 | } | 638 | } |
635 | 639 | ||
636 | // nothing found: set attribute of one char | 640 | // nothing found: set attribute of one char |
@@ -844,54 +848,54 @@ void Highlight::done() | |||
844 | 848 | ||
845 | * input: none | 849 | * input: none |
846 | ************* | 850 | ************* |
847 | * output: ItemDataList &list :A reference to the internal | 851 | * output: ItemDataList &list :A reference to the internal |
848 | list containing the parsed | 852 | list containing the parsed |
849 | default config | 853 | default config |
850 | ************* | 854 | ************* |
851 | * return value: none | 855 | * return value: none |
852 | *******************************************************************************************/ | 856 | *******************************************************************************************/ |
853 | 857 | ||
854 | void Highlight::createItemData(ItemDataList &list) | 858 | void Highlight::createItemData(ItemDataList &list) |
855 | { | 859 | { |
856 | qDebug("Highlight::createItemData"); | 860 | odebug << "Highlight::createItemData" << oendl; |
857 | 861 | ||
858 | // If no highlighting is selected we need only one default. | 862 | // If no highlighting is selected we need only one default. |
859 | if (noHl) | 863 | if (noHl) |
860 | { | 864 | { |
861 | list.append(new ItemData(I18N_NOOP("Normal Text"), dsNormal)); | 865 | list.append(new ItemData(I18N_NOOP("Normal Text"), dsNormal)); |
862 | return; | 866 | return; |
863 | } | 867 | } |
864 | 868 | ||
865 | QString color; | 869 | QString color; |
866 | QString selColor; | 870 | QString selColor; |
867 | QString bold; | 871 | QString bold; |
868 | QString italic; | 872 | QString italic; |
869 | 873 | ||
870 | // If the internal list isn't already available read the config file | 874 | // If the internal list isn't already available read the config file |
871 | if (internalIDList.count()==0) | 875 | if (internalIDList.count()==0) |
872 | { | 876 | { |
873 | //if all references to the list are destried the contents will also be deleted | 877 | //if all references to the list are destried the contents will also be deleted |
874 | internalIDList.setAutoDelete(true); | 878 | internalIDList.setAutoDelete(true); |
875 | syntaxContextData *data; | 879 | syntaxContextData *data; |
876 | 880 | ||
877 | qDebug("Trying to read itemData section"); | 881 | odebug << "Trying to read itemData section" << oendl; |
878 | 882 | ||
879 | //Tell the syntax document class which file we want to parse and which data group | 883 | //Tell the syntax document class which file we want to parse and which data group |
880 | HlManager::self()->syntax->setIdentifier(identifier); | 884 | HlManager::self()->syntax->setIdentifier(identifier); |
881 | data=HlManager::self()->syntax->getGroupInfo("highlighting","itemData"); | 885 | data=HlManager::self()->syntax->getGroupInfo("highlighting","itemData"); |
882 | //begin with the real parsing | 886 | //begin with the real parsing |
883 | while (HlManager::self()->syntax->nextGroup(data)) | 887 | while (HlManager::self()->syntax->nextGroup(data)) |
884 | { | 888 | { |
885 | qDebug("Setting up one itemData element"); | 889 | odebug << "Setting up one itemData element" << oendl; |
886 | // read all attributes | 890 | // read all attributes |
887 | color=HlManager::self()->syntax->groupData(data,QString("color")); | 891 | color=HlManager::self()->syntax->groupData(data,QString("color")); |
888 | selColor=HlManager::self()->syntax->groupData(data,QString("selColor")); | 892 | selColor=HlManager::self()->syntax->groupData(data,QString("selColor")); |
889 | bold=HlManager::self()->syntax->groupData(data,QString("bold")); | 893 | bold=HlManager::self()->syntax->groupData(data,QString("bold")); |
890 | italic=HlManager::self()->syntax->groupData(data,QString("italic")); | 894 | italic=HlManager::self()->syntax->groupData(data,QString("italic")); |
891 | //check if the user overrides something | 895 | //check if the user overrides something |
892 | if ( (!color.isEmpty()) && (!selColor.isEmpty()) && (!bold.isEmpty()) && (!italic.isEmpty())) | 896 | if ( (!color.isEmpty()) && (!selColor.isEmpty()) && (!bold.isEmpty()) && (!italic.isEmpty())) |
893 | { | 897 | { |
894 | //create a user defined style | 898 | //create a user defined style |
895 | internalIDList.append(new ItemData( | 899 | internalIDList.append(new ItemData( |
896 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), | 900 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), |
897 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))), | 901 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))), |
@@ -924,30 +928,30 @@ void Highlight::createItemData(ItemDataList &list) | |||
924 | * input: QString &name :the attribute name to lookup | 928 | * input: QString &name :the attribute name to lookup |
925 | * ItemDataList &iDl :the list containing all | 929 | * ItemDataList &iDl :the list containing all |
926 | * available attributes | 930 | * available attributes |
927 | ************* | 931 | ************* |
928 | * output: none | 932 | * output: none |
929 | ************* | 933 | ************* |
930 | * return value: int :The index of the attribute | 934 | * return value: int :The index of the attribute |
931 | * or 0 | 935 | * or 0 |
932 | *******************************************************************************************/ | 936 | *******************************************************************************************/ |
933 | 937 | ||
934 | int Highlight::lookupAttrName(const QString& name, ItemDataList &iDl) | 938 | int Highlight::lookupAttrName(const QString& name, ItemDataList &iDl) |
935 | { | 939 | { |
936 | for (int i=0;i<iDl.count();i++) | 940 | for (int i=0;i<iDl.count();i++) |
937 | { | 941 | { |
938 | if (iDl.at(i)->name==name) return i; | 942 | if (iDl.at(i)->name==name) return i; |
939 | } | 943 | } |
940 | kdDebug(13010)<<"Couldn't resolve itemDataName"<<endl; | 944 | kdDebug(13010)<<"Couldn't resolve itemDataName"<<endl; |
941 | return 0; | 945 | return 0; |
942 | } | 946 | } |
943 | 947 | ||
944 | 948 | ||
945 | /******************************************************************************************* | 949 | /******************************************************************************************* |
946 | Highlight - createHlItem | 950 | Highlight - createHlItem |
947 | This function is a helper for makeContextList. It parses the xml file for | 951 | This function is a helper for makeContextList. It parses the xml file for |
948 | information, how single or multi line comments are marked | 952 | information, how single or multi line comments are marked |
949 | 953 | ||
950 | * input: syntaxContextData *data : Data about the item read from | 954 | * input: syntaxContextData *data : Data about the item read from |
951 | * the xml file | 955 | * the xml file |
952 | * ItemDataList &iDl : List of all available itemData | 956 | * ItemDataList &iDl : List of all available itemData |
953 | * entries. Needed for attribute | 957 | * entries. Needed for attribute |
@@ -1068,29 +1072,29 @@ void Highlight::readCommentConfig() | |||
1068 | 1072 | ||
1069 | cslStart = ""; | 1073 | cslStart = ""; |
1070 | HlManager::self()->syntax->setIdentifier(identifier); | 1074 | HlManager::self()->syntax->setIdentifier(identifier); |
1071 | 1075 | ||
1072 | syntaxContextData *data=HlManager::self()->syntax->getGroupInfo("general","comment"); | 1076 | syntaxContextData *data=HlManager::self()->syntax->getGroupInfo("general","comment"); |
1073 | if (data) | 1077 | if (data) |
1074 | { | 1078 | { |
1075 | // kdDebug(13010)<<"COMMENT DATA FOUND"<<endl; | 1079 | // kdDebug(13010)<<"COMMENT DATA FOUND"<<endl; |
1076 | while (HlManager::self()->syntax->nextGroup(data)) | 1080 | while (HlManager::self()->syntax->nextGroup(data)) |
1077 | { | 1081 | { |
1078 | 1082 | ||
1079 | if (HlManager::self()->syntax->groupData(data,"name")=="singleLine") | 1083 | if (HlManager::self()->syntax->groupData(data,"name")=="singleLine") |
1080 | cslStart=HlManager::self()->syntax->groupData(data,"start"); | 1084 | cslStart=HlManager::self()->syntax->groupData(data,"start"); |
1081 | if (HlManager::self()->syntax->groupData(data,"name")=="multiLine") | 1085 | if (HlManager::self()->syntax->groupData(data,"name")=="multiLine") |
1082 | { | 1086 | { |
1083 | cmlStart=HlManager::self()->syntax->groupData(data,"start"); | 1087 | cmlStart=HlManager::self()->syntax->groupData(data,"start"); |
1084 | cmlEnd=HlManager::self()->syntax->groupData(data,"end"); | 1088 | cmlEnd=HlManager::self()->syntax->groupData(data,"end"); |
1085 | } | 1089 | } |
1086 | } | 1090 | } |
1087 | HlManager::self()->syntax->freeGroupInfo(data); | 1091 | HlManager::self()->syntax->freeGroupInfo(data); |
1088 | } | 1092 | } |
1089 | 1093 | ||
1090 | } | 1094 | } |
1091 | 1095 | ||
1092 | /******************************************************************************************* | 1096 | /******************************************************************************************* |
1093 | Highlight - readGlobalKeyWordConfig | 1097 | Highlight - readGlobalKeyWordConfig |
1094 | This function is a helper for makeContextList. It parses the xml file for | 1098 | This function is a helper for makeContextList. It parses the xml file for |
1095 | information, if keywords should be treated case(in)sensitive and creates the keyword | 1099 | information, if keywords should be treated case(in)sensitive and creates the keyword |
1096 | delimiter list. Which is the default list, without any given weak deliminiators | 1100 | delimiter list. Which is the default list, without any given weak deliminiators |
@@ -1103,46 +1107,46 @@ void Highlight::readCommentConfig() | |||
1103 | *******************************************************************************************/ | 1107 | *******************************************************************************************/ |
1104 | 1108 | ||
1105 | 1109 | ||
1106 | void Highlight::readGlobalKeywordConfig() | 1110 | void Highlight::readGlobalKeywordConfig() |
1107 | { | 1111 | { |
1108 | // Tell the syntax document class which file we want to parse | 1112 | // Tell the syntax document class which file we want to parse |
1109 | HlManager::self()->syntax->setIdentifier(identifier); | 1113 | HlManager::self()->syntax->setIdentifier(identifier); |
1110 | 1114 | ||
1111 | // Get the keywords config entry | 1115 | // Get the keywords config entry |
1112 | syntaxContextData * data=HlManager::self()->syntax->getConfig("general","keywords"); | 1116 | syntaxContextData * data=HlManager::self()->syntax->getConfig("general","keywords"); |
1113 | if (data) | 1117 | if (data) |
1114 | { | 1118 | { |
1115 | kdDebug(13010)<<"Found global keyword config"<<endl; | 1119 | kdDebug(13010)<<"Found global keyword config"<<endl; |
1116 | 1120 | ||
1117 | if (HlManager::self()->syntax->groupItemData(data,QString("casesensitive"))!="0") | 1121 | if (HlManager::self()->syntax->groupItemData(data,QString("casesensitive"))!="0") |
1118 | casesensitive=true; else {casesensitive=false; kdDebug(13010)<<"Turning on case insensitiveness"<<endl;} | 1122 | casesensitive=true; else {casesensitive=false; kdDebug(13010)<<"Turning on case insensitiveness"<<endl;} |
1119 | //get the weak deliminators | 1123 | //get the weak deliminators |
1120 | weakDeliminator=(!HlManager::self()->syntax->groupItemData(data,QString("weakDeliminator"))); | 1124 | weakDeliminator=(!HlManager::self()->syntax->groupItemData(data,QString("weakDeliminator"))); |
1121 | 1125 | ||
1122 | // remove any weakDelimitars (if any) from the default list and store this list. | 1126 | // remove any weakDelimitars (if any) from the default list and store this list. |
1123 | int f; | 1127 | int f; |
1124 | for (int s=0; s < weakDeliminator.length(); s++) | 1128 | for (int s=0; s < weakDeliminator.length(); s++) |
1125 | { | 1129 | { |
1126 | f = 0; | 1130 | f = 0; |
1127 | f = deliminator.find (weakDeliminator[s]); | 1131 | f = deliminator.find (weakDeliminator[s]); |
1128 | 1132 | ||
1129 | if (f > -1) | 1133 | if (f > -1) |
1130 | deliminator.remove (f, 1); | 1134 | deliminator.remove (f, 1); |
1131 | } | 1135 | } |
1132 | 1136 | ||
1133 | deliminatorChars = deliminator.unicode(); | 1137 | deliminatorChars = deliminator.unicode(); |
1134 | deliminatorLen = deliminator.length(); | 1138 | deliminatorLen = deliminator.length(); |
1135 | 1139 | ||
1136 | HlManager::self()->syntax->freeGroupInfo(data); | 1140 | HlManager::self()->syntax->freeGroupInfo(data); |
1137 | } | 1141 | } |
1138 | else | 1142 | else |
1139 | { | 1143 | { |
1140 | //Default values | 1144 | //Default values |
1141 | casesensitive=true; | 1145 | casesensitive=true; |
1142 | weakDeliminator=QString(""); | 1146 | weakDeliminator=QString(""); |
1143 | } | 1147 | } |
1144 | 1148 | ||
1145 | } | 1149 | } |
1146 | 1150 | ||
1147 | /******************************************************************************************* | 1151 | /******************************************************************************************* |
1148 | Highlight - makeContextList | 1152 | Highlight - makeContextList |
@@ -1195,43 +1199,43 @@ void Highlight::makeContextList() | |||
1195 | // END - Translation of the attribute parameter | 1199 | // END - Translation of the attribute parameter |
1196 | 1200 | ||
1197 | contextList[i]=new HlContext( | 1201 | contextList[i]=new HlContext( |
1198 | attr, | 1202 | attr, |
1199 | (HlManager::self()->syntax->groupData(data,QString("lineEndContext"))).toInt(), | 1203 | (HlManager::self()->syntax->groupData(data,QString("lineEndContext"))).toInt(), |
1200 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).isEmpty()?-1: | 1204 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).isEmpty()?-1: |
1201 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).toInt()); | 1205 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).toInt()); |
1202 | 1206 | ||
1203 | 1207 | ||
1204 | //Let's create all items for the context | 1208 | //Let's create all items for the context |
1205 | while (HlManager::self()->syntax->nextItem(data)) | 1209 | while (HlManager::self()->syntax->nextItem(data)) |
1206 | { | 1210 | { |
1207 | // kdDebug(13010)<< "In make Contextlist: Item:"<<endl; | 1211 | // kdDebug(13010)<< "In make Contextlist: Item:"<<endl; |
1208 | c=createHlItem(data,iDl); | 1212 | c=createHlItem(data,iDl); |
1209 | if (c) | 1213 | if (c) |
1210 | { | 1214 | { |
1211 | contextList[i]->items.append(c); | 1215 | contextList[i]->items.append(c); |
1212 | 1216 | ||
1213 | // Not supported completely atm and only one level. Subitems.(all have to be matched to at once) | 1217 | // Not supported completely atm and only one level. Subitems.(all have to be matched to at once) |
1214 | datasub=HlManager::self()->syntax->getSubItems(data); | 1218 | datasub=HlManager::self()->syntax->getSubItems(data); |
1215 | bool tmpbool; | 1219 | bool tmpbool; |
1216 | if (tmpbool=HlManager::self()->syntax->nextItem(datasub)) | 1220 | if (tmpbool=HlManager::self()->syntax->nextItem(datasub)) |
1217 | { | 1221 | { |
1218 | c->subItems=new QList<HlItem>; | 1222 | c->subItems=new QList<HlItem>; |
1219 | for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub)) | 1223 | for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub)) |
1220 | c->subItems->append(createHlItem(datasub,iDl)); | 1224 | c->subItems->append(createHlItem(datasub,iDl)); |
1221 | } | 1225 | } |
1222 | HlManager::self()->syntax->freeGroupInfo(datasub); | 1226 | HlManager::self()->syntax->freeGroupInfo(datasub); |
1223 | // end of sublevel | 1227 | // end of sublevel |
1224 | } | 1228 | } |
1225 | // kdDebug(13010)<<"Last line in loop"<<endl; | 1229 | // kdDebug(13010)<<"Last line in loop"<<endl; |
1226 | } | 1230 | } |
1227 | i++; | 1231 | i++; |
1228 | } | 1232 | } |
1229 | } | 1233 | } |
1230 | 1234 | ||
1231 | HlManager::self()->syntax->freeGroupInfo(data); | 1235 | HlManager::self()->syntax->freeGroupInfo(data); |
1232 | 1236 | ||
1233 | 1237 | ||
1234 | } | 1238 | } |
1235 | 1239 | ||
1236 | HlManager::HlManager() : QObject(0L) | 1240 | HlManager::HlManager() : QObject(0L) |
1237 | { | 1241 | { |
@@ -1303,34 +1307,34 @@ int HlManager::wildcardFind(const QString &fileName) { | |||
1303 | } | 1307 | } |
1304 | return -1; | 1308 | return -1; |
1305 | } | 1309 | } |
1306 | 1310 | ||
1307 | 1311 | ||
1308 | int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) { | 1312 | int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) { |
1309 | ItemStyleList defaultStyleList; | 1313 | ItemStyleList defaultStyleList; |
1310 | ItemStyle *defaultStyle; | 1314 | ItemStyle *defaultStyle; |
1311 | ItemDataList itemDataList; | 1315 | ItemDataList itemDataList; |
1312 | ItemData *itemData; | 1316 | ItemData *itemData; |
1313 | int nAttribs, z; | 1317 | int nAttribs, z; |
1314 | 1318 | ||
1315 | qDebug("HlManager::makeAttribs"); | 1319 | odebug << "HlManager::makeAttribs" << oendl; |
1316 | 1320 | ||
1317 | defaultStyleList.setAutoDelete(true); | 1321 | defaultStyleList.setAutoDelete(true); |
1318 | getDefaults(defaultStyleList); | 1322 | getDefaults(defaultStyleList); |
1319 | 1323 | ||
1320 | // itemDataList.setAutoDelete(true); | 1324 | // itemDataList.setAutoDelete(true); |
1321 | highlight->getItemDataList(itemDataList); | 1325 | highlight->getItemDataList(itemDataList); |
1322 | nAttribs = itemDataList.count(); | 1326 | nAttribs = itemDataList.count(); |
1323 | for (z = 0; z < nAttribs; z++) { | 1327 | for (z = 0; z < nAttribs; z++) { |
1324 | qDebug("HlManager::makeAttribs: createing one attribute definition"); | 1328 | odebug << "HlManager::makeAttribs: createing one attribute definition" << oendl; |
1325 | itemData = itemDataList.at(z); | 1329 | itemData = itemDataList.at(z); |
1326 | if (itemData->defStyle) { | 1330 | if (itemData->defStyle) { |
1327 | // default style | 1331 | // default style |
1328 | defaultStyle = defaultStyleList.at(itemData->defStyleNum); | 1332 | defaultStyle = defaultStyleList.at(itemData->defStyleNum); |
1329 | a[z].col = defaultStyle->col; | 1333 | a[z].col = defaultStyle->col; |
1330 | a[z].selCol = defaultStyle->selCol; | 1334 | a[z].selCol = defaultStyle->selCol; |
1331 | a[z].bold = defaultStyle->bold; | 1335 | a[z].bold = defaultStyle->bold; |
1332 | a[z].italic = defaultStyle->italic; | 1336 | a[z].italic = defaultStyle->italic; |
1333 | } else { | 1337 | } else { |
1334 | // custom style | 1338 | // custom style |
1335 | a[z].col = itemData->col; | 1339 | a[z].col = itemData->col; |
1336 | a[z].selCol = itemData->selCol; | 1340 | a[z].selCol = itemData->selCol; |
@@ -1406,25 +1410,25 @@ void HlManager::getDefaults(ItemStyleList &list) { | |||
1406 | i->selCol.setRgb(selCol); | 1410 | i->selCol.setRgb(selCol); |
1407 | } | 1411 | } |
1408 | } | 1412 | } |
1409 | */ | 1413 | */ |
1410 | } | 1414 | } |
1411 | 1415 | ||
1412 | void HlManager::setDefaults(ItemStyleList &list) { | 1416 | void HlManager::setDefaults(ItemStyleList &list) { |
1413 | KateConfig *config; | 1417 | KateConfig *config; |
1414 | int z; | 1418 | int z; |
1415 | ItemStyle *i; | 1419 | ItemStyle *i; |
1416 | char s[64]; | 1420 | char s[64]; |
1417 | #warning fixme | 1421 | #warning fixme |
1418 | /* | 1422 | /* |
1419 | config = KateFactory::instance()->config(); | 1423 | config = KateFactory::instance()->config(); |
1420 | config->setGroup("Default Item Styles"); | 1424 | config->setGroup("Default Item Styles"); |
1421 | for (z = 0; z < defaultStyles(); z++) { | 1425 | for (z = 0; z < defaultStyles(); z++) { |
1422 | i = list.at(z); | 1426 | i = list.at(z); |
1423 | sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic); | 1427 | sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic); |
1424 | config->writeEntry(defaultStyleName(z),s); | 1428 | config->writeEntry(defaultStyleName(z),s); |
1425 | } | 1429 | } |
1426 | */ | 1430 | */ |
1427 | emit changed(); | 1431 | emit changed(); |
1428 | } | 1432 | } |
1429 | 1433 | ||
1430 | 1434 | ||
diff --git a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp index 6059e9b..9fa4452 100644 --- a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp +++ b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp | |||
@@ -7,48 +7,53 @@ | |||
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #include "katesyntaxdocument.h" | 18 | #include "katesyntaxdocument.h" |
19 | #include <kateconfig.h> | 19 | #include "kateconfig.h" |
20 | #include "kdebug.h" | ||
21 | #include "kstddirs.h" | ||
22 | #include "klocale.h" | ||
23 | #include "kmessagebox.h" | ||
24 | #include "kglobal.h" | ||
25 | |||
26 | /* OPIE */ | ||
27 | #include <opie2/odebug.h> | ||
28 | #include <qpe/qpeapplication.h> | ||
29 | |||
30 | /* QT */ | ||
20 | #include <qfile.h> | 31 | #include <qfile.h> |
21 | #include <kdebug.h> | ||
22 | #include <kstddirs.h> | ||
23 | #include <klocale.h> | ||
24 | #include <kmessagebox.h> | ||
25 | #include <qstringlist.h> | 32 | #include <qstringlist.h> |
26 | #include <kglobal.h> | ||
27 | #include <qpe/qpeapplication.h> | ||
28 | #include <qdir.h> | 33 | #include <qdir.h> |
29 | 34 | ||
30 | SyntaxDocument::SyntaxDocument() | 35 | SyntaxDocument::SyntaxDocument() |
31 | { | 36 | { |
32 | m_root=0; | 37 | m_root=0; |
33 | currentFile=""; | 38 | currentFile=""; |
34 | setupModeList(); | 39 | setupModeList(); |
35 | } | 40 | } |
36 | 41 | ||
37 | void SyntaxDocument::setIdentifier(const QString& identifier) | 42 | void SyntaxDocument::setIdentifier(const QString& identifier) |
38 | { | 43 | { |
39 | #warning FIXME delete m_root; | 44 | #warning FIXME delete m_root; |
40 | m_root=Opie::Core::XMLElement::load(identifier); | 45 | m_root=Opie::Core::XMLElement::load(identifier); |
41 | if (!m_root) KMessageBox::error( 0L, i18n("Can't open %1").arg(identifier) ); | 46 | if (!m_root) KMessageBox::error( 0L, i18n("Can't open %1").arg(identifier) ); |
42 | 47 | ||
43 | } | 48 | } |
44 | 49 | ||
45 | SyntaxDocument::~SyntaxDocument() | 50 | SyntaxDocument::~SyntaxDocument() |
46 | { | 51 | { |
47 | } | 52 | } |
48 | 53 | ||
49 | void SyntaxDocument::setupModeList(bool force) | 54 | void SyntaxDocument::setupModeList(bool force) |
50 | { | 55 | { |
51 | 56 | ||
52 | if (myModeList.count() > 0) return; | 57 | if (myModeList.count() > 0) return; |
53 | 58 | ||
54 | KateConfig *config=KGlobal::config(); | 59 | KateConfig *config=KGlobal::config(); |
@@ -67,39 +72,39 @@ void SyntaxDocument::setupModeList(bool force) | |||
67 | { | 72 | { |
68 | config->setGroup(Group); | 73 | config->setGroup(Group); |
69 | syntaxModeListItem *mli=new syntaxModeListItem; | 74 | syntaxModeListItem *mli=new syntaxModeListItem; |
70 | mli->name = config->readEntry("name",""); | 75 | mli->name = config->readEntry("name",""); |
71 | mli->section = config->readEntry("section",""); | 76 | mli->section = config->readEntry("section",""); |
72 | mli->mimetype = config->readEntry("mimetype",""); | 77 | mli->mimetype = config->readEntry("mimetype",""); |
73 | mli->extension = config->readEntry("extension",""); | 78 | mli->extension = config->readEntry("extension",""); |
74 | mli->identifier = path+*it; | 79 | mli->identifier = path+*it; |
75 | myModeList.append(mli); | 80 | myModeList.append(mli); |
76 | } | 81 | } |
77 | else | 82 | else |
78 | { | 83 | { |
79 | qDebug("Found a description file:"+path+(*it)); | 84 | odebug << "Found a description file:"+path+(*it) << oendl; |
80 | setIdentifier(path+(*it)); | 85 | setIdentifier(path+(*it)); |
81 | Opie::Core::XMLElement *e=m_root; | 86 | Opie::Core::XMLElement *e=m_root; |
82 | if (e) | 87 | if (e) |
83 | { | 88 | { |
84 | e=e->firstChild(); | 89 | e=e->firstChild(); |
85 | qDebug(e->tagName()); | 90 | odebug << e->tagName() << oendl; |
86 | if (e->tagName()=="language") | 91 | if (e->tagName()=="language") |
87 | { | 92 | { |
88 | syntaxModeListItem *mli=new syntaxModeListItem; | 93 | syntaxModeListItem *mli=new syntaxModeListItem; |
89 | mli->name = e->attribute("name"); | 94 | mli->name = e->attribute("name"); |
90 | mli->section = e->attribute("section"); | 95 | mli->section = e->attribute("section"); |
91 | mli->mimetype = e->attribute("mimetype"); | 96 | mli->mimetype = e->attribute("mimetype"); |
92 | mli->extension = e->attribute("extensions"); | 97 | mli->extension = e->attribute("extensions"); |
93 | qDebug(QString("valid description for: %1/%2").arg(mli->section).arg(mli->name)); | 98 | odebug << QString("valid description for: %1/%2").arg(mli->section).arg(mli->name) << oendl; |
94 | if (mli->section.isEmpty()) | 99 | if (mli->section.isEmpty()) |
95 | mli->section=i18n("Other"); | 100 | mli->section=i18n("Other"); |
96 | 101 | ||
97 | mli->identifier = path+(*it); | 102 | mli->identifier = path+(*it); |
98 | config->setGroup(Group); | 103 | config->setGroup(Group); |
99 | config->writeEntry("name",mli->name); | 104 | config->writeEntry("name",mli->name); |
100 | config->writeEntry("section",mli->section); | 105 | config->writeEntry("section",mli->section); |
101 | config->writeEntry("mimetype",mli->mimetype); | 106 | config->writeEntry("mimetype",mli->mimetype); |
102 | config->writeEntry("extension",mli->extension); | 107 | config->writeEntry("extension",mli->extension); |
103 | myModeList.append(mli); | 108 | myModeList.append(mli); |
104 | } | 109 | } |
105 | } | 110 | } |
@@ -171,27 +176,27 @@ QString SyntaxDocument::groupData( syntaxContextData* data,QString name) | |||
171 | return QString(); | 176 | return QString(); |
172 | } | 177 | } |
173 | 178 | ||
174 | void SyntaxDocument::freeGroupInfo( syntaxContextData* data) | 179 | void SyntaxDocument::freeGroupInfo( syntaxContextData* data) |
175 | { | 180 | { |
176 | if (data) | 181 | if (data) |
177 | delete data; | 182 | delete data; |
178 | } | 183 | } |
179 | 184 | ||
180 | syntaxContextData* SyntaxDocument::getSubItems(syntaxContextData* data) | 185 | syntaxContextData* SyntaxDocument::getSubItems(syntaxContextData* data) |
181 | { | 186 | { |
182 | syntaxContextData *retval=new syntaxContextData; | 187 | syntaxContextData *retval=new syntaxContextData; |
183 | retval->parent=0; | 188 | retval->parent=0; |
184 | retval->currentGroup=0; | 189 | retval->currentGroup=0; |
185 | retval->item=0; | 190 | retval->item=0; |
186 | if (data != 0) | 191 | if (data != 0) |
187 | { | 192 | { |
188 | retval->parent=data->currentGroup; | 193 | retval->parent=data->currentGroup; |
189 | retval->currentGroup=data->item; | 194 | retval->currentGroup=data->item; |
190 | retval->item=0; | 195 | retval->item=0; |
191 | } | 196 | } |
192 | 197 | ||
193 | return retval; | 198 | return retval; |
194 | } | 199 | } |
195 | 200 | ||
196 | syntaxContextData* SyntaxDocument::getConfig(const QString& mainGroupName, const QString &Config) | 201 | syntaxContextData* SyntaxDocument::getConfig(const QString& mainGroupName, const QString &Config) |
197 | { | 202 | { |
@@ -203,26 +208,26 @@ syntaxContextData* SyntaxDocument::getConfig(const QString& mainGroupName, const | |||
203 | 208 | ||
204 | if (e->tagName().compare(mainGroupName)==0 ) | 209 | if (e->tagName().compare(mainGroupName)==0 ) |
205 | { | 210 | { |
206 | Opie::Core::XMLElement *e1=e->firstChild(); | 211 | Opie::Core::XMLElement *e1=e->firstChild(); |
207 | 212 | ||
208 | while (e1) | 213 | while (e1) |
209 | { | 214 | { |
210 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; | 215 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; |
211 | 216 | ||
212 | if (e1->tagName()==Config) | 217 | if (e1->tagName()==Config) |
213 | { | 218 | { |
214 | syntaxContextData *data=new ( syntaxContextData); | 219 | syntaxContextData *data=new ( syntaxContextData); |
215 | data->currentGroup=0; | 220 | data->currentGroup=0; |
216 | data->parent=0; | 221 | data->parent=0; |
217 | data->item=e1; | 222 | data->item=e1; |
218 | return data; | 223 | return data; |
219 | } | 224 | } |
220 | 225 | ||
221 | e1=e1->nextChild(); | 226 | e1=e1->nextChild(); |
222 | } | 227 | } |
223 | 228 | ||
224 | kdDebug(13010) << "WARNING :returning null 3"<< endl; | 229 | kdDebug(13010) << "WARNING :returning null 3"<< endl; |
225 | return 0; | 230 | return 0; |
226 | } | 231 | } |
227 | 232 | ||
228 | e=e->nextChild(); | 233 | e=e->nextChild(); |
@@ -245,26 +250,26 @@ syntaxContextData* SyntaxDocument::getGroupInfo(const QString& mainGroupName, co | |||
245 | 250 | ||
246 | if (e->tagName().compare(mainGroupName)==0 ) | 251 | if (e->tagName().compare(mainGroupName)==0 ) |
247 | { | 252 | { |
248 | Opie::Core::XMLElement *e1=e->firstChild(); | 253 | Opie::Core::XMLElement *e1=e->firstChild(); |
249 | 254 | ||
250 | while (e1) | 255 | while (e1) |
251 | { | 256 | { |
252 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; | 257 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; |
253 | if (e1->tagName()==group+"s") | 258 | if (e1->tagName()==group+"s") |
254 | { | 259 | { |
255 | syntaxContextData *data=new ( syntaxContextData); | 260 | syntaxContextData *data=new ( syntaxContextData); |
256 | data->parent=e1; | 261 | data->parent=e1; |
257 | data->currentGroup=0; | 262 | data->currentGroup=0; |
258 | data->item=0; | 263 | data->item=0; |
259 | return data; | 264 | return data; |
260 | } | 265 | } |
261 | 266 | ||
262 | e1=e1->nextChild(); | 267 | e1=e1->nextChild(); |
263 | } | 268 | } |
264 | 269 | ||
265 | kdDebug(13010) << "WARNING : getGroupInfo returning null :1 " << endl; | 270 | kdDebug(13010) << "WARNING : getGroupInfo returning null :1 " << endl; |
266 | return 0; | 271 | return 0; |
267 | } | 272 | } |
268 | 273 | ||
269 | e=e->nextChild(); | 274 | e=e->nextChild(); |
270 | } | 275 | } |
@@ -275,32 +280,32 @@ syntaxContextData* SyntaxDocument::getGroupInfo(const QString& mainGroupName, co | |||
275 | 280 | ||
276 | 281 | ||
277 | QStringList& SyntaxDocument::finddata(const QString& mainGroup,const QString& type,bool clearList) | 282 | QStringList& SyntaxDocument::finddata(const QString& mainGroup,const QString& type,bool clearList) |
278 | { | 283 | { |
279 | Opie::Core::XMLElement *e = m_root->firstChild(); | 284 | Opie::Core::XMLElement *e = m_root->firstChild(); |
280 | if (clearList) | 285 | if (clearList) |
281 | m_data.clear(); | 286 | m_data.clear(); |
282 | 287 | ||
283 | for(e=e->firstChild(); e; e=e->nextChild()) | 288 | for(e=e->firstChild(); e; e=e->nextChild()) |
284 | { | 289 | { |
285 | if (e->tagName()==mainGroup) | 290 | if (e->tagName()==mainGroup) |
286 | { | 291 | { |
287 | for (Opie::Core::XMLElement *e1=e->firstChild();e1;e1=e1->nextChild()) | 292 | for (Opie::Core::XMLElement *e1=e->firstChild();e1;e1=e1->nextChild()) |
288 | { | 293 | { |
289 | if (e1->tagName()!="list") continue; | 294 | if (e1->tagName()!="list") continue; |
290 | 295 | ||
291 | if (e1->attribute("name")==type) | 296 | if (e1->attribute("name")==type) |
292 | { | 297 | { |
293 | for (Opie::Core::XMLElement *e2=e1->firstChild();e2;e2=e2->nextChild()) | 298 | for (Opie::Core::XMLElement *e2=e1->firstChild();e2;e2=e2->nextChild()) |
294 | { | 299 | { |
295 | qDebug("FOUND A LIST ENTRY("+e2->tagName()+"):"+e2->firstChild()->value()); | 300 | odebug << "FOUND A LIST ENTRY("+e2->tagName()+"):"+e2->firstChild()->value() << oendl; |
296 | m_data+=e2->firstChild()->value().stripWhiteSpace(); | 301 | m_data+=e2->firstChild()->value().stripWhiteSpace(); |
297 | } | 302 | } |
298 | break; | 303 | break; |
299 | } | 304 | } |
300 | } | 305 | } |
301 | break; | 306 | break; |
302 | } | 307 | } |
303 | } | 308 | } |
304 | 309 | ||
305 | return m_data; | 310 | return m_data; |
306 | } | 311 | } |