-rw-r--r-- | core/apps/textedit/fontDialog.cpp | 237 | ||||
-rw-r--r-- | core/apps/textedit/fontDialog.h | 63 | ||||
-rw-r--r-- | core/apps/textedit/textedit.cpp | 124 | ||||
-rw-r--r-- | core/apps/textedit/textedit.pro | 4 |
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 @@ -/**************************************************************************** -** Created: Sun Jan 27 11:03:24 2002 fileDialog.cpp -copyright 2002 by L.J. Potter ljp@llornkcor.com - -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -****************************************************************************/ -#include "fontDialog.h" - -#include <qpe/fontdatabase.h> -#include <qpe/config.h> - -#include <qstringlist.h> -#include <qfontinfo.h> -#include <qvaluelist.h> -#include <qpe/qpeapplication.h> - -#include <qgroupbox.h> -#include <qlabel.h> -#include <qlistbox.h> -#include <qmultilineedit.h> -#include <qpushbutton.h> -#include <qlayout.h> -#include <qvariant.h> -#include <qtooltip.h> -#include <qwhatsthis.h> - -FontDialog::FontDialog( QWidget * parent, const char* name , bool modal, WFlags fl ) - :QDialog /*QWidget*/( parent, name , modal, fl ) -{ - if ( !name ) - setName( tr("FontDialog") ); - setCaption( tr( "Font Dialog" ) ); - FontTextLabel4 = new QLabel( this, "TextLabel4" ); - FontTextLabel4->setGeometry( QRect( 145, 100, 30, 19 /*192, 0, 43, 19*/ ) ); - FontTextLabel4->setText( tr( "Size" ) ); - - FamilyGroup = new QGroupBox( this, "FamilyGroup" ); - FamilyGroup->setGeometry( QRect( 5, 5, 115, 135 /*0, 6, 185, 131 */) ); - FamilyGroup->setTitle( tr( "Font" ) ); - - familyListBox = new QListBox( FamilyGroup, "familyListBox" ); - familyListBox->setGeometry( QRect( 5, 20, 100, 105 /* 6, 18, 170, 105 */) ); - - GroupBox2 = new QGroupBox( this, "GroupBox2" ); - GroupBox2->setGeometry( QRect( 120, 5, 100, 90/* 0, 138, 170, 90*/ ) ); - GroupBox2->setTitle( tr( "Font Style" ) ); - - styleListBox = new QListBox( GroupBox2, "styleListBox" ); - styleListBox->setGeometry( QRect( 5, 20, 90, 60 /*10, 20, 150, 61*/ ) ); - - sizeListBox = new QListBox( this, "sizeListBox" ); - sizeListBox->setGeometry( QRect( 180, 100, 40, 60 /* 192, 24, 40, 108 */) ); - - MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" ); - MultiLineEdit1->setGeometry( QRect( 5, 165, 215, 45 /* 6, 234, 222, 55*/ ) ); - MultiLineEdit1->setText( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" ) ); - MultiLineEdit1->setWordWrap(QMultiLineEdit::WidgetWidth); - - connect( familyListBox,SIGNAL( highlighted( const QString &)),SLOT( familyListBoxSlot(const QString &) )); - connect( styleListBox,SIGNAL( highlighted( const QString &)),SLOT( styleListBoxSlot(const QString &) )); - connect( sizeListBox,SIGNAL( highlighted( const QString &)),SLOT( sizeListBoxSlot(const QString &) )); - - populateLists(); -// MultiLineEdit1 -// connect(); -// move(5,15); - showMaximized(); -} - -FontDialog::~FontDialog() -{ -} - -void FontDialog::familyListBoxSlot(const QString & text) -{ - int styleInt=styleListBox->currentItem(); - int sizeInt=sizeListBox->currentItem(); - - styleListBox->clear(); - sizeListBox->clear(); - family= text; -// qDebug(family); - QStringList styles = fdb.styles( family ); // string list of styles of our current font family - styleListBox->insertStringList( styles); - QString dstyle;// = "\t" + style + " ("; - QValueList<int> smoothies = fdb.smoothSizes( family, styleListBox->text(0) ); - for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { - dstyle = QString::number( *points ); - sizeListBox ->insertItem( dstyle.left( dstyle.length() - 1 )); - } - if(styleInt == -1 || styleInt > styleListBox->count() ) - styleListBox->setCurrentItem(0); - else - styleListBox->setCurrentItem(styleInt); - - if(sizeInt == -1 || sizeInt > sizeListBox->count()) - sizeListBox->setCurrentItem(0); - else - sizeListBox->setCurrentItem(sizeInt); - - changeText(); -} - -void FontDialog::styleListBoxSlot(const QString &text) -{ - changeText(); -} - -void FontDialog::sizeListBoxSlot(const QString & text) -{ - changeText(); -} - -void FontDialog::populateLists() -{ -// QFont defaultFont=MultiLineEdit1->font(); -// QFont defaultFont=Lview->font(); -// QFontInfo fontInfo(defaultFont); - Config config("TextEdit"); - config.setGroup("Font"); - QString familyStr = config.readEntry("Family", "fixed"); - QString styleStr = config.readEntry("Style", "Regular"); - QString sizeStr = config.readEntry("Size", "10"); - QString charSetStr = config.readEntry("CharSet", "iso10646-1" ); - bool ok; - int i_size=sizeStr.toInt(&ok,10); - selectedFont = fdb.font(familyStr,styleStr,i_size,charSetStr); -// defaultFont.setItalic(TRUE); - families = fdb.families(); - for ( QStringList::Iterator f = families.begin(); f != families.end();++f ) { - QString family = *f; -// if(family == defaultFont.family()) -// qDebug(family); - familyListBox->insertItem( family); - - if( familyListBox->text(0) == family) { - QStringList styles = fdb.styles( family ); // string list of styles of our current font family - styleListBox->insertStringList( styles); - for ( QStringList::Iterator s = styles.begin(); s != styles.end();++s ) { // for each font style - style = *s; - QString dstyle;// = "\t" + style + " ("; - if(styleListBox->text(0) == style) { - QValueList<int> smoothies = fdb.smoothSizes( family, style ); - for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { - dstyle = QString::number( *points ) + " "; - - sizeListBox ->insertItem( dstyle.left( dstyle.length() - 1 )); - } - dstyle = dstyle.left( dstyle.length() - 1 ) + ")"; - } - } // styles - } - } - for(int i=0;i < familyListBox->count();i++) { - if( familyListBox->text(i) == familyStr) - familyListBox->setSelected( i, TRUE); - } - - for(int i=0;i < styleListBox->count();i++) { - if( styleListBox->text(i) == styleStr) - styleListBox->setSelected( i, TRUE); - } - - for(int i=0;i < sizeListBox->count();i++) { - if( sizeListBox->text(i) == sizeStr) - sizeListBox->setSelected( i, TRUE); - } - changeText(); -} - -void FontDialog::clearListBoxes() { - familyListBox->clear(); - sizeListBox->clear(); - styleListBox->clear(); -} - -void FontDialog::changeText() -{ - if( familyListBox->currentItem() == -1) - family= familyListBox->text(0); - else { - family = familyListBox->currentText(); - } -// qDebug("Font family is "+family); - if( styleListBox->currentItem() == -1) - style=styleListBox->text(0); - else { - style = styleListBox->currentText(); - } -// qDebug("font style is "+style); - if( sizeListBox->currentItem() == -1 ) - size= sizeListBox->text(0); - else { - size = sizeListBox->currentText(); - } - -// qDebug("Font size is "+size); - bool ok; - int i_size= size.toInt(&ok,10); - QStringList charSetList= fdb.charSets(family); -// QStringList styles = fdb.styles( family ); // string list of styles of our current font family - QString charSet; - for ( QStringList::Iterator s = charSetList.begin(); s != charSetList.end();++s ) { // for each font style - charSet = *s; -// qDebug(charSet); - } - selectedFont = fdb.font(family,style,i_size,charSet); - QFontInfo fontInfo( selectedFont); -// if(fontInfo.italic() ) qDebug("italic"); - selectedFont.setWeight(fontInfo.weight() ); -// qDebug("Style are "+style+" %d ",fontInfo.weight()); - Config cfg("TextEdit"); - cfg.setGroup("Font"); - cfg.writeEntry("Family",family); - cfg.writeEntry("Style",style); - cfg.writeEntry("Size",size); - cfg.writeEntry("CharSet",charSet); - - if(style.find("Italic",0,TRUE) != -1) { - selectedFont = fdb.font(family,"Regular",i_size,charSet); - selectedFont.setItalic(TRUE); //ya right - cfg.writeEntry("Italic","TRUE"); -// qDebug("Style is "+styleListBox->currentText()); - } else - cfg.writeEntry("Italic","FALSE"); - changedFonts=TRUE; - MultiLineEdit1->setFont( selectedFont); - MultiLineEdit1->update(); -} - 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 @@ -/**************************************************************************** -** Created: Sun Jan 27 11:02:59 2002 fileDialog.h -copyright 2002 by L.J. Potter ljp@llornkcor.com - -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -****************************************************************************/ -#ifndef FONTDIALOG_H -#define FONTDIALOG_H - -#include <qvariant.h> -#include <qdialog.h> -#include <qpe/fontdatabase.h> -#include <qfont.h> - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QLabel; -class QListBox; -class QListBoxItem; -class QPushButton; -class QGroupBox; -class QMultiLineEdit; - -class FontDialog : public QDialog// QWidget -{ - Q_OBJECT - -public: - FontDialog( QWidget * parent = 0, const char* name = 0 , bool modal=FALSE, WFlags fl = 0 ); - ~FontDialog(); - - QLabel *FontTextLabel4; - QGroupBox *FamilyGroup, *GroupBox2; - QListBox *familyListBox, *styleListBox, *sizeListBox; - QMultiLineEdit *MultiLineEdit1; - QPushButton *PushButtonOk,*PushButtonCancel; - QStringList families; - - FontDatabase fdb; - QString family, style, size; - QFont selectedFont; - bool changedFonts; - void populateLists(); - void clearListBoxes(); - void changeText(); -protected slots: - - void familyListBoxSlot(const QString &); - void styleListBoxSlot(const QString &); - void sizeListBoxSlot(const QString &); - - -}; - -#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 @@ -17,28 +17,29 @@ ** not clear to you. ** **********************************************************************/ // changes added by L. J. Potter Sun 02-17-2002 21:31:31 /* useAdvancedfeatures = 1) do not prompt on cancel, even if text is edited. 2) prompt user is .desktop file 3) prompt user for File Permissions on saveAs */ #include "textedit.h" #include "filePermissions.h" -#include "fontDialog.h" +//#include "fontDialog.h" #include <opie/ofileselector.h> #include <opie/ofiledialog.h> +#include <opie/ofontselector.h> #include <qpe/fontdatabase.h> #include <qpe/global.h> #include <qpe/fileselector.h> #include <qpe/applnk.h> #include <qpe/resource.h> #include <qpe/config.h> #include <qpe/qpeapplication.h> #include <qpe/qpemenubar.h> #include <qpe/qpetoolbar.h> #include <qpe/qcopenvelope_qws.h> @@ -48,24 +49,25 @@ #include <qaction.h> #include <qcolordialog.h> #include <qfileinfo.h> #include <qlineedit.h> #include <qmessagebox.h> #include <qobjectlist.h> #include <qpopupmenu.h> #include <qspinbox.h> #include <qtoolbutton.h> #include <qwidgetstack.h> #include <qcheckbox.h> #include <qcombo.h> +#include <qlayout.h> #include <unistd.h> #include <sys/stat.h> #include <stdlib.h> //getenv /* XPM */ static char * filesave_xpm[] = { "16 16 78 1", " c None", ". c #343434", "+ c #A0A0A0", @@ -303,87 +305,55 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) #ifndef QT_NO_CLIPBOARD a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); a->addTo( edit ); #endif a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); edit->insertSeparator(); a->addTo( bar ); a->addTo( edit ); - int defsize; - bool defb, defi, wrap; - - Config cfg("TextEdit"); - cfg.setGroup("View"); - defsize = cfg.readNumEntry("FontSize",10); - defb = cfg.readBoolEntry("Bold",FALSE); - defi = cfg.readBoolEntry("Italic",FALSE); - wrap = cfg.readBoolEntry("Wrap",TRUE); zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); zin->addTo( font ); zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); zout->addTo( font ); font->insertSeparator(); -#if 0 - QAction *ba = new QAction( tr("Bold"), QString::null, 0, this, 0 ); - connect( ba, SIGNAL( toggled(bool) ), this, SLOT( setBold(bool) ) ); - ba->setToggleAction(TRUE); - ba->addTo( font ); - - QAction *ia = new QAction( tr("Italic"), QString::null, 0, this, 0 ); - connect( ia, SIGNAL( toggled(bool) ), this, SLOT( setItalic(bool) ) ); - ia->setToggleAction(TRUE); - ia->addTo( font ); - - ba->setOn(defb); - ia->setOn(defi); - - font->insertSeparator(); -#endif - QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 ); connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) ); wa->setToggleAction(TRUE); wa->addTo( font ); font->insertSeparator(); font->insertItem(tr("Font"), this, SLOT(changeFont()) ); font->insertSeparator(); nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 ); connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) ); nStart->setToggleAction(TRUE); nStart->addTo( font ); nAdvanced = new QAction( tr("Advanced features"), QString::null, 0, this, 0 ); connect( nAdvanced, SIGNAL( toggled(bool) ), this, SLOT( doAdvanced(bool) ) ); nAdvanced->setToggleAction(TRUE); nAdvanced->addTo( font ); - if(cfg.readBoolEntry("AdvancedFeatures")) { - qDebug("using advanced features"); - useAdvancedFeatures = true; - nAdvanced->setOn(TRUE); - } else - useAdvancedFeatures = false; font->insertSeparator(); font->insertItem(tr("About"), this, SLOT( doAbout()) ); mb->insertItem( tr( "File" ), file ); mb->insertItem( tr( "Edit" ), edit ); mb->insertItem( tr( "View" ), font ); searchBar = new QPEToolBar(this); addToolBar( searchBar, "Search", QMainWindow::Top, TRUE ); @@ -406,69 +376,81 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) edit->insertSeparator(); a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); a->addTo( edit ); searchBar->hide(); editor = new QpeEditor( this ); setCentralWidget( editor ); editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); connect( editor, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) ); -// resize( 200, 300 ); + Config cfg("TextEdit"); + + cfg. setGroup ( "Font" ); -// setFontSize(defsize,TRUE); - FontDatabase fdb; - QFont defaultFont=editor->font(); - QFontInfo fontInfo(defaultFont); + QFont defaultFont = editor-> font ( ); - cfg.setGroup("Font"); - QString family = cfg.readEntry("Family", fontInfo.family()); - QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); - int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); - QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); + QString family = cfg. readEntry ( "Family", defaultFont. family ( )); + int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); + int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); + bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); - defaultFont = fdb.font(family,style,i_size,charSet); - editor->setFont( defaultFont); + defaultFont = QFont ( family, size, weight, italic ); + editor-> setFont ( defaultFont ); - wa->setOn(wrap); updateCaption(); - cfg.setGroup("View"); + cfg.setGroup ( "View" ); + + useAdvancedFeatures = cfg. readBoolEntry ( "AdvancedFeatures", false ); + + if ( useAdvancedFeatures ) + nAdvanced-> setOn ( true ); + + bool wrap = cfg. readBoolEntry ( "Wrap", true ); + wa-> setOn ( wrap ); + setWordWrap ( wrap ); + if(cfg.readEntry("startNew","TRUE") == "TRUE") { nStart->setOn(TRUE); fileNew(); } else { fileOpen(); } viewSelection = cfg.readNumEntry( "FileView", 0 ); } TextEdit::~TextEdit() { if( edited1 & !useAdvancedFeatures ) saveAs(); } void TextEdit::cleanUp() { -qDebug("cleanUp");// save(); - Config cfg("TextEdit"); - cfg.setGroup("View"); + qDebug("cleanUp");// save(); + + Config cfg ( "TextEdit" ); + cfg. setGroup ( "Font" ); QFont f = editor->font(); - cfg.writeEntry("FontSize",f.pointSize()); - cfg.writeEntry("Bold",f.bold()); - cfg.writeEntry("Italic",f.italic()); - cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth); - cfg.writeEntry( "FileView", viewSelection ); + cfg. writeEntry ( "Family", f. family ( )); + cfg. writeEntry ( "Size", f. pointSize ( )); + cfg. writeEntry ( "Weight", f. weight ( )); + cfg. writeEntry ( "Italic", f. italic ( )); + + cfg. setGroup ( "View" ); + cfg. writeEntry ( "Wrap", editor-> wordWrap ( ) == QMultiLineEdit::WidgetWidth ); + cfg. writeEntry ( "FileView", viewSelection ); + cfg. writeEntry ( "AdvancedFeatures", useAdvancedFeatures ); } void TextEdit::accept() { if( edited1) saveAs(); exit(0); } void TextEdit::zoomIn() { setFontSize(editor->font().pointSize()+1,FALSE); } @@ -891,44 +873,35 @@ void TextEdit::setDocument(const QString& fileref) { editor->setEdited(TRUE); edited1=FALSE; edited=TRUE; doSearchBar(); } void TextEdit::closeEvent( QCloseEvent *e ) { bFromDocView = FALSE; e->accept(); } void TextEdit::changeFont() { - FontDatabase fdb; - QFont defaultFont=editor->font(); - QFontInfo fontInfo(defaultFont); - Config cfg("TextEdit"); - cfg.setGroup("Font"); - QString family = cfg.readEntry("Family", fontInfo.family()); - QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); - int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); - QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); - - defaultFont = fdb.font(family,style,i_size,charSet); - - FontDialog *fontDlg; - fontDlg=new FontDialog(this,tr("FontDialog"),TRUE); + QDialog *d = new QDialog ( this, "FontDialog", true ); + d-> setCaption ( tr( "Choose font" )); + QBoxLayout *lay = new QVBoxLayout ( d ); + OFontSelector *ofs = new OFontSelector ( true, d ); + lay-> addWidget ( ofs ); + ofs-> setSelectedFont ( editor-> font ( )); - fontDlg->exec(); - - QFont myFont=fontDlg->selectedFont; - editor->setFont( myFont); - delete fontDlg; + d-> showMaximized ( ); + if ( d-> exec ( ) == QDialog::Accepted ) + editor-> setFont ( ofs-> selectedFont ( )); + delete d; } void TextEdit::editDelete() { 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) ) { case 0: if(doc) { doc->removeFiles(); clear(); setCaption( tr("Text Editor") ); } break; @@ -966,25 +939,22 @@ void TextEdit::receive(const QCString&msg, const QByteArray&) { } } void TextEdit::doAbout() { QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>" "2000 Trolltech AS, and<BR>" "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>" "and is licensed under the GPL")); } void TextEdit::doAdvanced(bool b) { useAdvancedFeatures=b; - Config cfg("TextEdit"); - cfg.setGroup("View"); - cfg.writeEntry("AdvancedFeatures",b); } void TextEdit::editPasteTimeDate() { #ifndef QT_NO_CLIPBOARD QClipboard *cb = QApplication::clipboard(); QDateTime dt = QDateTime::currentDateTime(); cb->setText( dt.toString()); editor->paste(); #endif } 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,17 +1,17 @@ TEMPLATE = app CONFIG += qt warn_on release DESTDIR = $(OPIEDIR)/bin -HEADERS = textedit.h fontDialog.h filePermissions.h -SOURCES = main.cpp textedit.cpp fontDialog.cpp filePermissions.cpp +HEADERS = textedit.h filePermissions.h +SOURCES = main.cpp textedit.cpp filePermissions.cpp INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopie TARGET = textedit TRANSLATIONS = ../../../i18n/de/textedit.ts \ ../../../i18n/en/textedit.ts \ ../../../i18n/es/textedit.ts \ ../../../i18n/fr/textedit.ts \ ../../../i18n/hu/textedit.ts \ ../../../i18n/ja/textedit.ts \ ../../../i18n/ko/textedit.ts \ |