lib Library API Documentation

applicationspelltest.cpp

00001 
00002 #include "applicationspelltest.h"
00003 #include "applicationspelltest.moc"
00004 
00005 #include <qtoolbar.h>
00006 #include <qtoolbutton.h>
00007 #include <qpopupmenu.h>
00008 #include <qmenubar.h>
00009 #include <qstatusbar.h>
00010 #include <qmessagebox.h>
00011 #include <qapplication.h>
00012 #include <qaccel.h>
00013 #include <qtextstream.h>
00014 #include <qpainter.h>
00015 #include <qmultilineedit.h>
00016 #include "koSpell.h"
00017 #include <kdebug.h>
00018 #include <qlayout.h>
00019 
00020 ApplicationWindowSpell::ApplicationWindowSpell()
00021     : QMainWindow( 0, "Spell test", WDestructiveClose )
00022 {
00023     QToolBar * fileTools = new QToolBar( this, "file operations" );
00024     fileTools->setLabel( "File Operations" );
00025 
00026     file = new QPopupMenu( this );
00027     menuBar()->insertItem( "&File", file );
00028 
00029 
00030     file->insertItem( "Spell text", this, SLOT(slotSpellText()));
00031     m_modalSpellCheckMenuIndex = file->insertItem( "Modal Spell text", this, SLOT(slotModalSpellText()));
00032 
00033     file->insertItem( "Config", this, SLOT(slotConfigSpellText()));
00034 
00035     file->insertItem( "Quit", this, SLOT(close()));
00036 
00037     multi = new QMultiLineEdit( this, "editor" );
00038     connect( multi, SIGNAL( selectionChanged ()),this, SLOT( slotSelectionChanged()));
00039     multi->setFocus();
00040     setCentralWidget( multi );
00041     resize( 450, 600 );
00042     m_spell = 0L;
00043     m_spellConfig=new KOSpellConfig();
00044     file->setItemEnabled( m_modalSpellCheckMenuIndex, false );
00045 }
00046 
00047 
00048 ApplicationWindowSpell::~ApplicationWindowSpell()
00049 {
00050     delete m_spell;
00051     delete m_spellConfig;
00052 }
00053 
00054 void ApplicationWindowSpell::slotSelectionChanged()
00055 {
00056     file->setItemEnabled( m_modalSpellCheckMenuIndex, multi->hasSelectedText () );
00057 }
00058 
00059 void ApplicationWindowSpell::slotModalSpellText()
00060 {
00061     QString text = multi->selectedText();
00062     if ( !text.isEmpty() )
00063     {
00064         kdDebug(30006)<<" text :"<<text<<endl;
00065         KOSpell::modalCheck( text, 0L );
00066         kdDebug(30006)<<" after : text :"<<text<<endl;
00067     }
00068 }
00069 
00070 void ApplicationWindowSpell::slotSpellText()
00071 {
00072     if ( m_spell )
00073         return;
00074     m_spell =KOSpell::createKoSpell( this, "test" ,0L,0L,m_spellConfig, true, true );
00075 //new KOSpell(this, "test" ,m_spellConfig, true, true);
00076 
00077     QObject::connect( m_spell, SIGNAL( death() ),
00078                       this, SLOT( spellCheckerFinished() ) );
00079     QObject::connect( m_spell, SIGNAL( misspelling( const QString &, const QStringList &, unsigned int ) ),
00080                       this, SLOT( spellCheckerMisspelling( const QString &, const QStringList &, unsigned int ) ) );
00081     QObject::connect( m_spell, SIGNAL( corrected( const QString &, const QString &, unsigned int ) ),
00082                       this, SLOT( spellCheckerCorrected( const QString &, const QString &, unsigned int ) ) );
00083     QObject::connect( m_spell, SIGNAL( done( const QString & ) ),
00084                       this, SLOT( spellCheckerDone( const QString & ) ) );
00085     QObject::connect( m_spell, SIGNAL( ignoreall (const QString & ) ),
00086                       this, SLOT( spellCheckerIgnoreAll( const QString & ) ) );
00087 
00088     QObject::connect( m_spell, SIGNAL( replaceall( const QString &, const QString & )),
00089                       this, SLOT( spellCheckerReplaceAll( const QString &,const QString & )));
00090     bool result = m_spell->check( multi->text());
00091     if ( !result)
00092     {
00093         delete m_spell;
00094         m_spell=0L;
00095     }
00096 }
00097 
00098 void ApplicationWindowSpell::slotConfigSpellText()
00099 {
00100     spellConfig *conf = new spellConfig( this,this );
00101     conf->exec();
00102     delete conf;
00103 }
00104 
00105 
00106 void ApplicationWindowSpell::spellCheckerFinished()
00107 {
00108     kdDebug(30006)<<" void ApplicationWindowSpell::spellCheckerFinished() \n";
00109     delete m_spell;
00110     m_spell= 0L;
00111 }
00112 
00113 void ApplicationWindowSpell::spellCheckerMisspelling( const QString &text, const QStringList &, unsigned int pos)
00114 {
00115     kdDebug(30006)<<" void ApplicationWindowSpell::spellCheckerMisspelling( const QString &text, const QStringList &, unsigned int ) :"<<text<<" pos :"<<pos<<endl;
00116 //todo fix me parag id !!!!
00117     kdDebug(30006)<<" pos :"<<pos<<" text :"<<text<<" text.length() :"<<text.length()<<endl;
00118     unsigned int l = 0;
00119     unsigned int cnt = 0;
00120     posToRowCol (pos, l, cnt);
00121     multi->setSelection(l, cnt, l, cnt+text.length());
00122 }
00123 
00124 void ApplicationWindowSpell::spellCheckerCorrected( const QString &orig , const QString & newWord , unsigned int pos )
00125 {
00126     if( orig != newWord )
00127     {
00128         unsigned int l = 0;
00129         unsigned int cnt = 0;
00130         kdDebug(30006)<<"void ApplicationWindowSpell::spellCheckerCorrected( const QString &, const QString &, unsigned int ) :"<<orig<<" new :"<<newWord<<" pos :"<<pos <<endl;
00131         posToRowCol (pos, l, cnt);
00132         multi->setSelection(l, cnt, l, cnt+orig.length());
00133         multi->removeSelectedText();
00134         multi->insert(newWord);
00135     }
00136 }
00137 
00138 void  ApplicationWindowSpell::posToRowCol(unsigned int pos, unsigned int &line, unsigned int &col)
00139 {
00140   for (line = 0; line < static_cast<uint>(multi->lines()) && col <= pos; line++)
00141   {
00142     col += multi->paragraphLength(line)+1;
00143   }
00144   line--;
00145   col = pos - col + multi->paragraphLength(line) + 1;
00146 }
00147 
00148 
00149 void ApplicationWindowSpell::spellCheckerDone( const QString & text)
00150 {
00151     kdDebug(30006)<<"void ApplicationWindowSpell::spellCheckerDone( const QString & ) :"<<text<<endl;
00152 }
00153 
00154 void ApplicationWindowSpell::spellCheckerIgnoreAll( const QString &text )
00155 {
00156     kdDebug(30006)<<"void ApplicationWindowSpell::spellCheckerIgnoreAll( const QString & ) :"<<text<<endl;
00157 }
00158 
00159 void ApplicationWindowSpell::spellCheckerReplaceAll( const QString &  text,  const QString & replace)
00160 {
00161     kdDebug(30006)<<" void ApplicationWindowSpell::spellCheckerReplaceAll( const QString &  ,  const QString & ) :"<<text<<" replace:"<<replace<< endl;
00162 }
00163 
00164 void ApplicationWindowSpell::closeEvent( QCloseEvent* ce )
00165 {
00166     ce->accept();
00167 }
00168 
00169 void ApplicationWindowSpell::changeConfig( KOSpellConfig _kspell)
00170 {
00171     if(m_spellConfig==0)
00172         m_spellConfig=new KOSpellConfig();
00173   m_spellConfig->setNoRootAffix(_kspell.noRootAffix ());
00174   m_spellConfig->setRunTogether(_kspell.runTogether ());
00175   m_spellConfig->setDictionary(_kspell.dictionary ());
00176   m_spellConfig->setDictFromList(_kspell.dictFromList());
00177   m_spellConfig->setEncoding(_kspell.encoding());
00178 }
00179 
00180 
00181 spellConfig::spellConfig( QWidget* parent,ApplicationWindowSpell *_spell )
00182     : KDialogBase( parent, "urldialog", true, "config",
00183                    KDialogBase::Ok|KDialogBase::Cancel, KDialogBase::Ok, true )
00184 {
00185     m_spell = _spell;
00186     QWidget *page = new QWidget( this );
00187     setMainWidget(page);
00188     QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
00189 
00190     config = new KOSpellConfig( page );
00191     topLayout->addWidget( config );
00192     connect(this, SIGNAL(okClicked()),this,SLOT(slotApply()));
00193 }
00194 
00195 void spellConfig::slotApply()
00196 {
00197     m_spell->changeConfig(*config);
00198 }
00199 
KDE Logo
This file is part of the documentation for lib Library Version 1.3.5.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Nov 17 13:19:21 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2003