summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-01 21:01:04 (UTC)
committer sandman <sandman>2002-10-01 21:01:04 (UTC)
commit2987dafbdfa6602c5e165fe862546ea32f5fd3ca (patch) (unidiff)
tree0c3cae31e893a072c1167b27e9331b5d65c28763
parent609b04531d5a1caae189397922eb0068aa0e2634 (diff)
downloadopie-2987dafbdfa6602c5e165fe862546ea32f5fd3ca.zip
opie-2987dafbdfa6602c5e165fe862546ea32f5fd3ca.tar.gz
opie-2987dafbdfa6602c5e165fe862546ea32f5fd3ca.tar.bz2
- replaced the custom font selector with OFontSelector
- fixed the broken Config handling (Font) - various cleanups
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/fontDialog.cpp237
-rw-r--r--core/apps/textedit/fontDialog.h63
-rw-r--r--core/apps/textedit/textedit.cpp124
-rw-r--r--core/apps/textedit/textedit.pro4
4 files changed, 49 insertions, 379 deletions
diff --git a/core/apps/textedit/fontDialog.cpp b/core/apps/textedit/fontDialog.cpp
deleted file mode 100644
index 5cdf538..0000000
--- a/core/apps/textedit/fontDialog.cpp
+++ b/dev/null
@@ -1,237 +0,0 @@
1/****************************************************************************
2** Created: Sun Jan 27 11:03:24 2002 fileDialog.cpp
3copyright 2002 by L.J. Potter ljp@llornkcor.com
4
5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file.
9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12**
13****************************************************************************/
14#include "fontDialog.h"
15
16#include <qpe/fontdatabase.h>
17#include <qpe/config.h>
18
19#include <qstringlist.h>
20#include <qfontinfo.h>
21#include <qvaluelist.h>
22#include <qpe/qpeapplication.h>
23
24#include <qgroupbox.h>
25#include <qlabel.h>
26#include <qlistbox.h>
27#include <qmultilineedit.h>
28#include <qpushbutton.h>
29#include <qlayout.h>
30#include <qvariant.h>
31#include <qtooltip.h>
32#include <qwhatsthis.h>
33
34FontDialog::FontDialog( QWidget * parent, const char* name , bool modal, WFlags fl )
35 :QDialog /*QWidget*/( parent, name , modal, fl )
36{
37 if ( !name )
38 setName( tr("FontDialog") );
39 setCaption( tr( "Font Dialog" ) );
40 FontTextLabel4 = new QLabel( this, "TextLabel4" );
41 FontTextLabel4->setGeometry( QRect( 145, 100, 30, 19 /*192, 0, 43, 19*/ ) );
42 FontTextLabel4->setText( tr( "Size" ) );
43
44 FamilyGroup = new QGroupBox( this, "FamilyGroup" );
45 FamilyGroup->setGeometry( QRect( 5, 5, 115, 135 /*0, 6, 185, 131 */) );
46 FamilyGroup->setTitle( tr( "Font" ) );
47
48 familyListBox = new QListBox( FamilyGroup, "familyListBox" );
49 familyListBox->setGeometry( QRect( 5, 20, 100, 105 /* 6, 18, 170, 105 */) );
50
51 GroupBox2 = new QGroupBox( this, "GroupBox2" );
52 GroupBox2->setGeometry( QRect( 120, 5, 100, 90/* 0, 138, 170, 90*/ ) );
53 GroupBox2->setTitle( tr( "Font Style" ) );
54
55 styleListBox = new QListBox( GroupBox2, "styleListBox" );
56 styleListBox->setGeometry( QRect( 5, 20, 90, 60 /*10, 20, 150, 61*/ ) );
57
58 sizeListBox = new QListBox( this, "sizeListBox" );
59 sizeListBox->setGeometry( QRect( 180, 100, 40, 60 /* 192, 24, 40, 108 */) );
60
61 MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" );
62 MultiLineEdit1->setGeometry( QRect( 5, 165, 215, 45 /* 6, 234, 222, 55*/ ) );
63 MultiLineEdit1->setText( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" ) );
64 MultiLineEdit1->setWordWrap(QMultiLineEdit::WidgetWidth);
65
66 connect( familyListBox,SIGNAL( highlighted( const QString &)),SLOT( familyListBoxSlot(const QString &) ));
67 connect( styleListBox,SIGNAL( highlighted( const QString &)),SLOT( styleListBoxSlot(const QString &) ));
68 connect( sizeListBox,SIGNAL( highlighted( const QString &)),SLOT( sizeListBoxSlot(const QString &) ));
69
70 populateLists();
71// MultiLineEdit1
72// connect();
73// move(5,15);
74 showMaximized();
75}
76
77FontDialog::~FontDialog()
78{
79}
80
81void FontDialog::familyListBoxSlot(const QString & text)
82{
83 int styleInt=styleListBox->currentItem();
84 int sizeInt=sizeListBox->currentItem();
85
86 styleListBox->clear();
87 sizeListBox->clear();
88 family= text;
89// qDebug(family);
90 QStringList styles = fdb.styles( family ); // string list of styles of our current font family
91 styleListBox->insertStringList( styles);
92 QString dstyle;// = "\t" + style + " (";
93 QValueList<int> smoothies = fdb.smoothSizes( family, styleListBox->text(0) );
94 for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) {
95 dstyle = QString::number( *points );
96 sizeListBox ->insertItem( dstyle.left( dstyle.length() - 1 ));
97 }
98 if(styleInt == -1 || styleInt > styleListBox->count() )
99 styleListBox->setCurrentItem(0);
100 else
101 styleListBox->setCurrentItem(styleInt);
102
103 if(sizeInt == -1 || sizeInt > sizeListBox->count())
104 sizeListBox->setCurrentItem(0);
105 else
106 sizeListBox->setCurrentItem(sizeInt);
107
108 changeText();
109}
110
111void FontDialog::styleListBoxSlot(const QString &text)
112{
113 changeText();
114}
115
116void FontDialog::sizeListBoxSlot(const QString & text)
117{
118 changeText();
119}
120
121void FontDialog::populateLists()
122{
123// QFont defaultFont=MultiLineEdit1->font();
124// QFont defaultFont=Lview->font();
125// QFontInfo fontInfo(defaultFont);
126 Config config("TextEdit");
127 config.setGroup("Font");
128 QString familyStr = config.readEntry("Family", "fixed");
129 QString styleStr = config.readEntry("Style", "Regular");
130 QString sizeStr = config.readEntry("Size", "10");
131 QString charSetStr = config.readEntry("CharSet", "iso10646-1" );
132 bool ok;
133 int i_size=sizeStr.toInt(&ok,10);
134 selectedFont = fdb.font(familyStr,styleStr,i_size,charSetStr);
135// defaultFont.setItalic(TRUE);
136 families = fdb.families();
137 for ( QStringList::Iterator f = families.begin(); f != families.end();++f ) {
138 QString family = *f;
139// if(family == defaultFont.family())
140// qDebug(family);
141 familyListBox->insertItem( family);
142
143 if( familyListBox->text(0) == family) {
144 QStringList styles = fdb.styles( family ); // string list of styles of our current font family
145 styleListBox->insertStringList( styles);
146 for ( QStringList::Iterator s = styles.begin(); s != styles.end();++s ) { // for each font style
147 style = *s;
148 QString dstyle;// = "\t" + style + " (";
149 if(styleListBox->text(0) == style) {
150 QValueList<int> smoothies = fdb.smoothSizes( family, style );
151 for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) {
152 dstyle = QString::number( *points ) + " ";
153
154 sizeListBox ->insertItem( dstyle.left( dstyle.length() - 1 ));
155 }
156 dstyle = dstyle.left( dstyle.length() - 1 ) + ")";
157 }
158 } // styles
159 }
160 }
161 for(int i=0;i < familyListBox->count();i++) {
162 if( familyListBox->text(i) == familyStr)
163 familyListBox->setSelected( i, TRUE);
164 }
165
166 for(int i=0;i < styleListBox->count();i++) {
167 if( styleListBox->text(i) == styleStr)
168 styleListBox->setSelected( i, TRUE);
169 }
170
171 for(int i=0;i < sizeListBox->count();i++) {
172 if( sizeListBox->text(i) == sizeStr)
173 sizeListBox->setSelected( i, TRUE);
174 }
175 changeText();
176}
177
178void FontDialog::clearListBoxes() {
179 familyListBox->clear();
180 sizeListBox->clear();
181 styleListBox->clear();
182}
183
184void FontDialog::changeText()
185{
186 if( familyListBox->currentItem() == -1)
187 family= familyListBox->text(0);
188 else {
189 family = familyListBox->currentText();
190 }
191// qDebug("Font family is "+family);
192 if( styleListBox->currentItem() == -1)
193 style=styleListBox->text(0);
194 else {
195 style = styleListBox->currentText();
196 }
197// qDebug("font style is "+style);
198 if( sizeListBox->currentItem() == -1 )
199 size= sizeListBox->text(0);
200 else {
201 size = sizeListBox->currentText();
202 }
203
204// qDebug("Font size is "+size);
205 bool ok;
206 int i_size= size.toInt(&ok,10);
207 QStringList charSetList= fdb.charSets(family);
208// QStringList styles = fdb.styles( family ); // string list of styles of our current font family
209 QString charSet;
210 for ( QStringList::Iterator s = charSetList.begin(); s != charSetList.end();++s ) { // for each font style
211 charSet = *s;
212// qDebug(charSet);
213 }
214 selectedFont = fdb.font(family,style,i_size,charSet);
215 QFontInfo fontInfo( selectedFont);
216// if(fontInfo.italic() ) qDebug("italic");
217 selectedFont.setWeight(fontInfo.weight() );
218// qDebug("Style are "+style+" %d ",fontInfo.weight());
219 Config cfg("TextEdit");
220 cfg.setGroup("Font");
221 cfg.writeEntry("Family",family);
222 cfg.writeEntry("Style",style);
223 cfg.writeEntry("Size",size);
224 cfg.writeEntry("CharSet",charSet);
225
226 if(style.find("Italic",0,TRUE) != -1) {
227 selectedFont = fdb.font(family,"Regular",i_size,charSet);
228 selectedFont.setItalic(TRUE); //ya right
229 cfg.writeEntry("Italic","TRUE");
230// qDebug("Style is "+styleListBox->currentText());
231 } else
232 cfg.writeEntry("Italic","FALSE");
233 changedFonts=TRUE;
234 MultiLineEdit1->setFont( selectedFont);
235 MultiLineEdit1->update();
236}
237
diff --git a/core/apps/textedit/fontDialog.h b/core/apps/textedit/fontDialog.h
deleted file mode 100644
index ef930df..0000000
--- a/core/apps/textedit/fontDialog.h
+++ b/dev/null
@@ -1,63 +0,0 @@
1/****************************************************************************
2** Created: Sun Jan 27 11:02:59 2002 fileDialog.h
3copyright 2002 by L.J. Potter ljp@llornkcor.com
4
5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file.
9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12**
13****************************************************************************/
14#ifndef FONTDIALOG_H
15#define FONTDIALOG_H
16
17#include <qvariant.h>
18#include <qdialog.h>
19#include <qpe/fontdatabase.h>
20#include <qfont.h>
21
22class QVBoxLayout;
23class QHBoxLayout;
24class QGridLayout;
25class QLabel;
26class QListBox;
27class QListBoxItem;
28class QPushButton;
29class QGroupBox;
30class QMultiLineEdit;
31
32class FontDialog : public QDialog// QWidget
33{
34 Q_OBJECT
35
36public:
37 FontDialog( QWidget * parent = 0, const char* name = 0 , bool modal=FALSE, WFlags fl = 0 );
38 ~FontDialog();
39
40 QLabel *FontTextLabel4;
41 QGroupBox *FamilyGroup, *GroupBox2;
42 QListBox *familyListBox, *styleListBox, *sizeListBox;
43 QMultiLineEdit *MultiLineEdit1;
44 QPushButton *PushButtonOk,*PushButtonCancel;
45 QStringList families;
46
47 FontDatabase fdb;
48 QString family, style, size;
49 QFont selectedFont;
50 bool changedFonts;
51 void populateLists();
52 void clearListBoxes();
53 void changeText();
54protected slots:
55
56 void familyListBoxSlot(const QString &);
57 void styleListBoxSlot(const QString &);
58 void sizeListBoxSlot(const QString &);
59
60
61};
62
63#endif // FONTDIALOG_H
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index f6a869a..7b50a6c 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,107 +1,109 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20// changes added by L. J. Potter Sun 02-17-2002 21:31:31 20// changes added by L. J. Potter Sun 02-17-2002 21:31:31
21/* 21/*
22 useAdvancedfeatures = 22 useAdvancedfeatures =
23 1) do not prompt on cancel, even if text is edited. 23 1) do not prompt on cancel, even if text is edited.
24 2) prompt user is .desktop file 24 2) prompt user is .desktop file
25 3) prompt user for File Permissions on saveAs 25 3) prompt user for File Permissions on saveAs
26 */ 26 */
27#include "textedit.h" 27#include "textedit.h"
28#include "filePermissions.h" 28#include "filePermissions.h"
29#include "fontDialog.h" 29//#include "fontDialog.h"
30 30
31#include <opie/ofileselector.h> 31#include <opie/ofileselector.h>
32#include <opie/ofiledialog.h> 32#include <opie/ofiledialog.h>
33#include <opie/ofontselector.h>
33 34
34#include <qpe/fontdatabase.h> 35#include <qpe/fontdatabase.h>
35#include <qpe/global.h> 36#include <qpe/global.h>
36#include <qpe/fileselector.h> 37#include <qpe/fileselector.h>
37#include <qpe/applnk.h> 38#include <qpe/applnk.h>
38#include <qpe/resource.h> 39#include <qpe/resource.h>
39#include <qpe/config.h> 40#include <qpe/config.h>
40#include <qpe/qpeapplication.h> 41#include <qpe/qpeapplication.h>
41#include <qpe/qpemenubar.h> 42#include <qpe/qpemenubar.h>
42#include <qpe/qpetoolbar.h> 43#include <qpe/qpetoolbar.h>
43#include <qpe/qcopenvelope_qws.h> 44#include <qpe/qcopenvelope_qws.h>
44 45
45#include <qdatetime.h> 46#include <qdatetime.h>
46#include <qclipboard.h> 47#include <qclipboard.h>
47#include <qstringlist.h> 48#include <qstringlist.h>
48#include <qaction.h> 49#include <qaction.h>
49#include <qcolordialog.h> 50#include <qcolordialog.h>
50#include <qfileinfo.h> 51#include <qfileinfo.h>
51#include <qlineedit.h> 52#include <qlineedit.h>
52#include <qmessagebox.h> 53#include <qmessagebox.h>
53#include <qobjectlist.h> 54#include <qobjectlist.h>
54#include <qpopupmenu.h> 55#include <qpopupmenu.h>
55#include <qspinbox.h> 56#include <qspinbox.h>
56#include <qtoolbutton.h> 57#include <qtoolbutton.h>
57#include <qwidgetstack.h> 58#include <qwidgetstack.h>
58#include <qcheckbox.h> 59#include <qcheckbox.h>
59#include <qcombo.h> 60#include <qcombo.h>
61#include <qlayout.h>
60 62
61#include <unistd.h> 63#include <unistd.h>
62#include <sys/stat.h> 64#include <sys/stat.h>
63#include <stdlib.h> //getenv 65#include <stdlib.h> //getenv
64 66
65 67
66/* XPM */ 68/* XPM */
67static char * filesave_xpm[] = { 69static char * filesave_xpm[] = {
68"16 16 78 1", 70"16 16 78 1",
69" c None", 71" c None",
70". c #343434", 72". c #343434",
71"+ c #A0A0A0", 73"+ c #A0A0A0",
72"@ c #565656", 74"@ c #565656",
73"# c #9E9E9E", 75"# c #9E9E9E",
74"$ c #525252", 76"$ c #525252",
75"% c #929292", 77"% c #929292",
76"& c #676767", 78"& c #676767",
77"* c #848484", 79"* c #848484",
78"= c #666666", 80"= c #666666",
79"- c #D8D8D8", 81"- c #D8D8D8",
80"; c #FFFFFF", 82"; c #FFFFFF",
81"> c #DBDBDB", 83"> c #DBDBDB",
82", c #636363", 84", c #636363",
83"' c #989898", 85"' c #989898",
84") c #2D2D2D", 86") c #2D2D2D",
85"! c #909090", 87"! c #909090",
86"~ c #AEAEAE", 88"~ c #AEAEAE",
87"{ c #EAEAEA", 89"{ c #EAEAEA",
88"] c #575757", 90"] c #575757",
89"^ c #585858", 91"^ c #585858",
90"/ c #8A8A8A", 92"/ c #8A8A8A",
91"( c #828282", 93"( c #828282",
92"_ c #6F6F6F", 94"_ c #6F6F6F",
93": c #C9C9C9", 95": c #C9C9C9",
94"< c #050505", 96"< c #050505",
95"[ c #292929", 97"[ c #292929",
96"} c #777777", 98"} c #777777",
97"| c #616161", 99"| c #616161",
98"1 c #3A3A3A", 100"1 c #3A3A3A",
99"2 c #BEBEBE", 101"2 c #BEBEBE",
100"3 c #2C2C2C", 102"3 c #2C2C2C",
101"4 c #7C7C7C", 103"4 c #7C7C7C",
102"5 c #F6F6F6", 104"5 c #F6F6F6",
103"6 c #FCFCFC", 105"6 c #FCFCFC",
104"7 c #6B6B6B", 106"7 c #6B6B6B",
105"8 c #959595", 107"8 c #959595",
106"9 c #4F4F4F", 108"9 c #4F4F4F",
107"0 c #808080", 109"0 c #808080",
@@ -267,244 +269,224 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
267 269
268 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); 270 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
269 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 271 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
270 a->addTo( bar ); 272 a->addTo( bar );
271 a->addTo( file ); 273 a->addTo( file );
272 274
273 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); 275 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
274 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 276 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
275 a->addTo( bar ); 277 a->addTo( bar );
276 a->addTo( file ); 278 a->addTo( file );
277 279
278 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); 280 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
279 connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); 281 connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
280 file->insertSeparator(); 282 file->insertSeparator();
281 a->addTo( file ); 283 a->addTo( file );
282 284
283 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); 285 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
284 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); 286 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
285 a->addTo( file ); 287 a->addTo( file );
286 288
287 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 ); 289 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 );
288 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 290 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
289 a->addTo( editBar ); 291 a->addTo( editBar );
290 a->addTo( edit ); 292 a->addTo( edit );
291 293
292 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 ); 294 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 );
293 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 295 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
294 a->addTo( editBar ); 296 a->addTo( editBar );
295 a->addTo( edit ); 297 a->addTo( edit );
296 298
297 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 299 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
298 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 300 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
299 a->addTo( editBar ); 301 a->addTo( editBar );
300 a->addTo( edit ); 302 a->addTo( edit );
301 303
302 304
303#ifndef QT_NO_CLIPBOARD 305#ifndef QT_NO_CLIPBOARD
304 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 306 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
305 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); 307 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
306 a->addTo( edit ); 308 a->addTo( edit );
307#endif 309#endif
308 310
309 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); 311 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 );
310 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); 312 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
311 edit->insertSeparator(); 313 edit->insertSeparator();
312 a->addTo( bar ); 314 a->addTo( bar );
313 a->addTo( edit ); 315 a->addTo( edit );
314 316
315 int defsize;
316 bool defb, defi, wrap;
317
318 Config cfg("TextEdit");
319 cfg.setGroup("View");
320 defsize = cfg.readNumEntry("FontSize",10);
321 defb = cfg.readBoolEntry("Bold",FALSE);
322 defi = cfg.readBoolEntry("Italic",FALSE);
323 wrap = cfg.readBoolEntry("Wrap",TRUE);
324 317
325 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); 318 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
326 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); 319 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
327 zin->addTo( font ); 320 zin->addTo( font );
328 321
329 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); 322 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
330 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); 323 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
331 zout->addTo( font ); 324 zout->addTo( font );
332 325
333 font->insertSeparator(); 326 font->insertSeparator();
334 327
335#if 0
336 QAction *ba = new QAction( tr("Bold"), QString::null, 0, this, 0 );
337 connect( ba, SIGNAL( toggled(bool) ), this, SLOT( setBold(bool) ) );
338 ba->setToggleAction(TRUE);
339 ba->addTo( font );
340
341 QAction *ia = new QAction( tr("Italic"), QString::null, 0, this, 0 );
342 connect( ia, SIGNAL( toggled(bool) ), this, SLOT( setItalic(bool) ) );
343 ia->setToggleAction(TRUE);
344 ia->addTo( font );
345
346 ba->setOn(defb);
347 ia->setOn(defi);
348
349 font->insertSeparator();
350#endif
351
352 QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 ); 328 QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 );
353 connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) ); 329 connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) );
354 wa->setToggleAction(TRUE); 330 wa->setToggleAction(TRUE);
355 wa->addTo( font ); 331 wa->addTo( font );
356 332
357 font->insertSeparator(); 333 font->insertSeparator();
358 font->insertItem(tr("Font"), this, SLOT(changeFont()) ); 334 font->insertItem(tr("Font"), this, SLOT(changeFont()) );
359 335
360 font->insertSeparator(); 336 font->insertSeparator();
361 337
362 nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 ); 338 nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 );
363 connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) ); 339 connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) );
364 nStart->setToggleAction(TRUE); 340 nStart->setToggleAction(TRUE);
365 nStart->addTo( font ); 341 nStart->addTo( font );
366 342
367 nAdvanced = new QAction( tr("Advanced features"), QString::null, 0, this, 0 ); 343 nAdvanced = new QAction( tr("Advanced features"), QString::null, 0, this, 0 );
368 connect( nAdvanced, SIGNAL( toggled(bool) ), this, SLOT( doAdvanced(bool) ) ); 344 connect( nAdvanced, SIGNAL( toggled(bool) ), this, SLOT( doAdvanced(bool) ) );
369 nAdvanced->setToggleAction(TRUE); 345 nAdvanced->setToggleAction(TRUE);
370 nAdvanced->addTo( font ); 346 nAdvanced->addTo( font );
371 347
372 if(cfg.readBoolEntry("AdvancedFeatures")) {
373 qDebug("using advanced features");
374 useAdvancedFeatures = true;
375 nAdvanced->setOn(TRUE);
376 } else
377 useAdvancedFeatures = false;
378 348
379 font->insertSeparator(); 349 font->insertSeparator();
380 350
381 font->insertItem(tr("About"), this, SLOT( doAbout()) ); 351 font->insertItem(tr("About"), this, SLOT( doAbout()) );
382 352
383 mb->insertItem( tr( "File" ), file ); 353 mb->insertItem( tr( "File" ), file );
384 mb->insertItem( tr( "Edit" ), edit ); 354 mb->insertItem( tr( "Edit" ), edit );
385 mb->insertItem( tr( "View" ), font ); 355 mb->insertItem( tr( "View" ), font );
386 356
387 searchBar = new QPEToolBar(this); 357 searchBar = new QPEToolBar(this);
388 addToolBar( searchBar, "Search", QMainWindow::Top, TRUE ); 358 addToolBar( searchBar, "Search", QMainWindow::Top, TRUE );
389 359
390 searchBar->setHorizontalStretchable( TRUE ); 360 searchBar->setHorizontalStretchable( TRUE );
391 361
392 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 362 searchEdit = new QLineEdit( searchBar, "searchEdit" );
393 searchBar->setStretchableWidget( searchEdit ); 363 searchBar->setStretchableWidget( searchEdit );
394 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 364 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
395 this, SLOT( search() ) ); 365 this, SLOT( search() ) );
396 366
397 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 ); 367 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 );
398 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 368 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
399 a->addTo( searchBar ); 369 a->addTo( searchBar );
400 a->addTo( edit ); 370 a->addTo( edit );
401 371
402 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 372 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
403 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 373 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
404 a->addTo( searchBar ); 374 a->addTo( searchBar );
405 375
406 edit->insertSeparator(); 376 edit->insertSeparator();
407 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 377 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
408 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); 378 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
409 a->addTo( edit ); 379 a->addTo( edit );
410 380
411 searchBar->hide(); 381 searchBar->hide();
412 382
413 editor = new QpeEditor( this ); 383 editor = new QpeEditor( this );
414 setCentralWidget( editor ); 384 setCentralWidget( editor );
415 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 385 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
416 connect( editor, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) ); 386 connect( editor, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) );
417 387
418// resize( 200, 300 ); 388 Config cfg("TextEdit");
389
390 cfg. setGroup ( "Font" );
419 391
420// setFontSize(defsize,TRUE); 392 QFont defaultFont = editor-> font ( );
421 FontDatabase fdb;
422 QFont defaultFont=editor->font();
423 QFontInfo fontInfo(defaultFont);
424 393
425 cfg.setGroup("Font"); 394 QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
426 QString family = cfg.readEntry("Family", fontInfo.family()); 395 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
427 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); 396 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
428 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); 397 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
429 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) );
430 398
431 defaultFont = fdb.font(family,style,i_size,charSet); 399 defaultFont = QFont ( family, size, weight, italic );
432 editor->setFont( defaultFont); 400 editor-> setFont ( defaultFont );
433 401
434 wa->setOn(wrap);
435 updateCaption(); 402 updateCaption();
436 403
437 cfg.setGroup("View"); 404 cfg.setGroup ( "View" );
405
406 useAdvancedFeatures = cfg. readBoolEntry ( "AdvancedFeatures", false );
407
408 if ( useAdvancedFeatures )
409 nAdvanced-> setOn ( true );
410
411 bool wrap = cfg. readBoolEntry ( "Wrap", true );
412 wa-> setOn ( wrap );
413 setWordWrap ( wrap );
414
438 if(cfg.readEntry("startNew","TRUE") == "TRUE") { 415 if(cfg.readEntry("startNew","TRUE") == "TRUE") {
439 nStart->setOn(TRUE); 416 nStart->setOn(TRUE);
440 fileNew(); 417 fileNew();
441 } else { 418 } else {
442 fileOpen(); 419 fileOpen();
443 } 420 }
444 421
445 viewSelection = cfg.readNumEntry( "FileView", 0 ); 422 viewSelection = cfg.readNumEntry( "FileView", 0 );
446} 423}
447 424
448TextEdit::~TextEdit() { 425TextEdit::~TextEdit() {
449 if( edited1 & !useAdvancedFeatures ) 426 if( edited1 & !useAdvancedFeatures )
450 saveAs(); 427 saveAs();
451} 428}
452 429
453void TextEdit::cleanUp() { 430void TextEdit::cleanUp() {
454qDebug("cleanUp");// save(); 431 qDebug("cleanUp");// save();
455 Config cfg("TextEdit"); 432
456 cfg.setGroup("View"); 433 Config cfg ( "TextEdit" );
434 cfg. setGroup ( "Font" );
457 QFont f = editor->font(); 435 QFont f = editor->font();
458 cfg.writeEntry("FontSize",f.pointSize()); 436 cfg. writeEntry ( "Family", f. family ( ));
459 cfg.writeEntry("Bold",f.bold()); 437 cfg. writeEntry ( "Size", f. pointSize ( ));
460 cfg.writeEntry("Italic",f.italic()); 438 cfg. writeEntry ( "Weight", f. weight ( ));
461 cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth); 439 cfg. writeEntry ( "Italic", f. italic ( ));
462 cfg.writeEntry( "FileView", viewSelection ); 440
441 cfg. setGroup ( "View" );
442 cfg. writeEntry ( "Wrap", editor-> wordWrap ( ) == QMultiLineEdit::WidgetWidth );
443 cfg. writeEntry ( "FileView", viewSelection );
444 cfg. writeEntry ( "AdvancedFeatures", useAdvancedFeatures );
463} 445}
464 446
465 447
466void TextEdit::accept() { 448void TextEdit::accept() {
467 if( edited1) 449 if( edited1)
468 saveAs(); 450 saveAs();
469 exit(0); 451 exit(0);
470} 452}
471 453
472void TextEdit::zoomIn() { 454void TextEdit::zoomIn() {
473 setFontSize(editor->font().pointSize()+1,FALSE); 455 setFontSize(editor->font().pointSize()+1,FALSE);
474} 456}
475 457
476void TextEdit::zoomOut() { 458void TextEdit::zoomOut() {
477 setFontSize(editor->font().pointSize()-1,TRUE); 459 setFontSize(editor->font().pointSize()-1,TRUE);
478} 460}
479 461
480 462
481void TextEdit::setFontSize(int sz, bool round_down_not_up) { 463void TextEdit::setFontSize(int sz, bool round_down_not_up) {
482 int s=10; 464 int s=10;
483 for (int i=0; i<nfontsizes; i++) { 465 for (int i=0; i<nfontsizes; i++) {
484 if ( fontsize[i] == sz ) { 466 if ( fontsize[i] == sz ) {
485 s = sz; 467 s = sz;
486 break; 468 break;
487 } else if ( round_down_not_up ) { 469 } else if ( round_down_not_up ) {
488 if ( fontsize[i] < sz ) 470 if ( fontsize[i] < sz )
489 s = fontsize[i]; 471 s = fontsize[i];
490 } else { 472 } else {
491 if ( fontsize[i] > sz ) { 473 if ( fontsize[i] > sz ) {
492 s = fontsize[i]; 474 s = fontsize[i];
493 break; 475 break;
494 } 476 }
495 } 477 }
496 } 478 }
497 479
498 QFont f = editor->font(); 480 QFont f = editor->font();
499 f.setPointSize(s); 481 f.setPointSize(s);
500 editor->setFont(f); 482 editor->setFont(f);
501 483
502 zin->setEnabled(s != fontsize[nfontsizes-1]); 484 zin->setEnabled(s != fontsize[nfontsizes-1]);
503 zout->setEnabled(s != fontsize[0]); 485 zout->setEnabled(s != fontsize[0]);
504} 486}
505 487
506void TextEdit::setBold(bool y) { 488void TextEdit::setBold(bool y) {
507 QFont f = editor->font(); 489 QFont f = editor->font();
508 f.setBold(y); 490 f.setBold(y);
509 editor->setFont(f); 491 editor->setFont(f);
510} 492}
@@ -855,136 +837,124 @@ bool TextEdit::saveAs() {
855 edited = false; 837 edited = false;
856 if(caption().left(1)=="*") 838 if(caption().left(1)=="*")
857 setCaption(caption().right(caption().length()-1)); 839 setCaption(caption().right(caption().length()-1));
858 840
859 return true; 841 return true;
860 } 842 }
861 qDebug("returning false"); 843 qDebug("returning false");
862 return false; 844 return false;
863} //end saveAs 845} //end saveAs
864 846
865void TextEdit::clear() { 847void TextEdit::clear() {
866 delete doc; 848 delete doc;
867 doc = 0; 849 doc = 0;
868 editor->clear(); 850 editor->clear();
869} 851}
870 852
871void TextEdit::updateCaption( const QString &name ) { 853void TextEdit::updateCaption( const QString &name ) {
872 if ( !doc ) 854 if ( !doc )
873 setCaption( tr("Text Editor") ); 855 setCaption( tr("Text Editor") );
874 else { 856 else {
875 QString s = name; 857 QString s = name;
876 if ( s.isNull() ) 858 if ( s.isNull() )
877 s = doc->name(); 859 s = doc->name();
878 if ( s.isEmpty() ) { 860 if ( s.isEmpty() ) {
879 s = tr( "Unnamed" ); 861 s = tr( "Unnamed" );
880 currentFileName=s; 862 currentFileName=s;
881 } 863 }
882 if(s.left(1) == "/") 864 if(s.left(1) == "/")
883 s = s.right(s.length()-1); 865 s = s.right(s.length()-1);
884 setCaption( s + " - " + tr("Text Editor") ); 866 setCaption( s + " - " + tr("Text Editor") );
885 } 867 }
886} 868}
887 869
888void TextEdit::setDocument(const QString& fileref) { 870void TextEdit::setDocument(const QString& fileref) {
889 bFromDocView = TRUE; 871 bFromDocView = TRUE;
890 openFile(fileref); 872 openFile(fileref);
891 editor->setEdited(TRUE); 873 editor->setEdited(TRUE);
892 edited1=FALSE; 874 edited1=FALSE;
893 edited=TRUE; 875 edited=TRUE;
894 doSearchBar(); 876 doSearchBar();
895} 877}
896 878
897void TextEdit::closeEvent( QCloseEvent *e ) { 879void TextEdit::closeEvent( QCloseEvent *e ) {
898 bFromDocView = FALSE; 880 bFromDocView = FALSE;
899 e->accept(); 881 e->accept();
900} 882}
901 883
902void TextEdit::changeFont() { 884void TextEdit::changeFont() {
903 FontDatabase fdb; 885 QDialog *d = new QDialog ( this, "FontDialog", true );
904 QFont defaultFont=editor->font(); 886 d-> setCaption ( tr( "Choose font" ));
905 QFontInfo fontInfo(defaultFont); 887 QBoxLayout *lay = new QVBoxLayout ( d );
906 Config cfg("TextEdit"); 888 OFontSelector *ofs = new OFontSelector ( true, d );
907 cfg.setGroup("Font"); 889 lay-> addWidget ( ofs );
908 QString family = cfg.readEntry("Family", fontInfo.family()); 890 ofs-> setSelectedFont ( editor-> font ( ));
909 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont));
910 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10);
911 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) );
912
913 defaultFont = fdb.font(family,style,i_size,charSet);
914
915 FontDialog *fontDlg;
916 fontDlg=new FontDialog(this,tr("FontDialog"),TRUE);
917 891
918 fontDlg->exec(); 892 d-> showMaximized ( );
919 893 if ( d-> exec ( ) == QDialog::Accepted )
920 QFont myFont=fontDlg->selectedFont; 894 editor-> setFont ( ofs-> selectedFont ( ));
921 editor->setFont( myFont); 895 delete d;
922 delete fontDlg;
923 896
924} 897}
925 898
926void TextEdit::editDelete() { 899void TextEdit::editDelete() {
927 switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Do you really want<BR>to <B>delete</B> the current file\nfrom the disk?<BR>This is <B>irreversable!!</B>"),tr("Yes"),tr("No"),0,0,1) ) { 900 switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Do you really want<BR>to <B>delete</B> the current file\nfrom the disk?<BR>This is <B>irreversable!!</B>"),tr("Yes"),tr("No"),0,0,1) ) {
928 case 0: 901 case 0:
929 if(doc) { 902 if(doc) {
930 doc->removeFiles(); 903 doc->removeFiles();
931 clear(); 904 clear();
932 setCaption( tr("Text Editor") ); 905 setCaption( tr("Text Editor") );
933 } 906 }
934 break; 907 break;
935 case 1: 908 case 1:
936 // exit 909 // exit
937 break; 910 break;
938 }; 911 };
939} 912}
940 913
941void TextEdit::changeStartConfig( bool b ) { 914void TextEdit::changeStartConfig( bool b ) {
942 915
943 Config cfg("TextEdit"); 916 Config cfg("TextEdit");
944 cfg.setGroup("View"); 917 cfg.setGroup("View");
945 if(b) { 918 if(b) {
946 qDebug("bool"); 919 qDebug("bool");
947 cfg.writeEntry("startNew","TRUE"); 920 cfg.writeEntry("startNew","TRUE");
948 } else { 921 } else {
949 cfg.writeEntry("startNew","FALSE"); 922 cfg.writeEntry("startNew","FALSE");
950 } 923 }
951 update(); 924 update();
952} 925}
953 926
954void TextEdit::editorChanged() { 927void TextEdit::editorChanged() {
955 if(editor->edited() && edited && !edited1) { 928 if(editor->edited() && edited && !edited1) {
956 setCaption( "*"+caption()); 929 setCaption( "*"+caption());
957 edited1=TRUE; 930 edited1=TRUE;
958 } 931 }
959 edited=TRUE; 932 edited=TRUE;
960} 933}
961 934
962void TextEdit::receive(const QCString&msg, const QByteArray&) { 935void TextEdit::receive(const QCString&msg, const QByteArray&) {
963 qDebug("QCop "+msg); 936 qDebug("QCop "+msg);
964 if ( msg == "setDocument(QString)" ) { 937 if ( msg == "setDocument(QString)" ) {
965 qDebug("bugger all"); 938 qDebug("bugger all");
966 } 939 }
967 940
968} 941}
969void TextEdit::doAbout() { 942void TextEdit::doAbout() {
970 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>" 943 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
971 "2000 Trolltech AS, and<BR>" 944 "2000 Trolltech AS, and<BR>"
972 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>" 945 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
973 "and is licensed under the GPL")); 946 "and is licensed under the GPL"));
974} 947}
975 948
976void TextEdit::doAdvanced(bool b) { 949void TextEdit::doAdvanced(bool b) {
977 useAdvancedFeatures=b; 950 useAdvancedFeatures=b;
978 Config cfg("TextEdit");
979 cfg.setGroup("View");
980 cfg.writeEntry("AdvancedFeatures",b);
981} 951}
982 952
983void TextEdit::editPasteTimeDate() { 953void TextEdit::editPasteTimeDate() {
984#ifndef QT_NO_CLIPBOARD 954#ifndef QT_NO_CLIPBOARD
985 QClipboard *cb = QApplication::clipboard(); 955 QClipboard *cb = QApplication::clipboard();
986 QDateTime dt = QDateTime::currentDateTime(); 956 QDateTime dt = QDateTime::currentDateTime();
987 cb->setText( dt.toString()); 957 cb->setText( dt.toString());
988 editor->paste(); 958 editor->paste();
989#endif 959#endif
990} 960}
diff --git a/core/apps/textedit/textedit.pro b/core/apps/textedit/textedit.pro
index f6e6530..500abde 100644
--- a/core/apps/textedit/textedit.pro
+++ b/core/apps/textedit/textedit.pro
@@ -1,24 +1,24 @@
1TEMPLATE = app 1TEMPLATE = app
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3DESTDIR = $(OPIEDIR)/bin 3DESTDIR = $(OPIEDIR)/bin
4HEADERS = textedit.h fontDialog.h filePermissions.h 4HEADERS = textedit.h filePermissions.h
5SOURCES = main.cpp textedit.cpp fontDialog.cpp filePermissions.cpp 5SOURCES = main.cpp textedit.cpp filePermissions.cpp
6INCLUDEPATH += $(OPIEDIR)/include 6INCLUDEPATH += $(OPIEDIR)/include
7DEPENDPATH += $(OPIEDIR)/include 7DEPENDPATH += $(OPIEDIR)/include
8LIBS += -lqpe -lopie 8LIBS += -lqpe -lopie
9TARGET = textedit 9TARGET = textedit
10 10
11TRANSLATIONS = ../../../i18n/de/textedit.ts \ 11TRANSLATIONS = ../../../i18n/de/textedit.ts \
12 ../../../i18n/en/textedit.ts \ 12 ../../../i18n/en/textedit.ts \
13 ../../../i18n/es/textedit.ts \ 13 ../../../i18n/es/textedit.ts \
14 ../../../i18n/fr/textedit.ts \ 14 ../../../i18n/fr/textedit.ts \
15 ../../../i18n/hu/textedit.ts \ 15 ../../../i18n/hu/textedit.ts \
16 ../../../i18n/ja/textedit.ts \ 16 ../../../i18n/ja/textedit.ts \
17 ../../../i18n/ko/textedit.ts \ 17 ../../../i18n/ko/textedit.ts \
18 ../../../i18n/no/textedit.ts \ 18 ../../../i18n/no/textedit.ts \
19 ../../../i18n/pl/textedit.ts \ 19 ../../../i18n/pl/textedit.ts \
20 ../../../i18n/pt/textedit.ts \ 20 ../../../i18n/pt/textedit.ts \
21 ../../../i18n/pt_BR/textedit.ts \ 21 ../../../i18n/pt_BR/textedit.ts \
22 ../../../i18n/sl/textedit.ts \ 22 ../../../i18n/sl/textedit.ts \
23 ../../../i18n/zh_CN/textedit.ts \ 23 ../../../i18n/zh_CN/textedit.ts \
24 ../../../i18n/zh_TW/textedit.ts 24 ../../../i18n/zh_TW/textedit.ts