joachim99@8: /*************************************************************************** joachim99@8: kreplacements.cpp - description joachim99@8: ------------------- joachim99@8: begin : Sat Aug 3 2002 joachim99@8: copyright : (C) 2002-2003 by Joachim Eibl joachim99@8: email : joachim.eibl@gmx.de joachim99@8: ***************************************************************************/ joachim99@8: joachim99@8: /*************************************************************************** joachim99@8: * * joachim99@8: * This program is free software; you can redistribute it and/or modify * joachim99@8: * it under the terms of the GNU General Public License as published by * joachim99@8: * the Free Software Foundation; either version 2 of the License, or * joachim99@8: * (at your option) any later version. * joachim99@8: * * joachim99@8: ***************************************************************************/ joachim99@8: joachim99@8: joachim99@8: #include "kreplacements.h" joachim99@8: joachim99@8: #include joachim99@8: joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: joachim99@8: static QString s_copyright; joachim99@8: static QString s_email; joachim99@8: static QString s_description; joachim99@8: static QString s_appName; joachim99@8: static QString s_version; joachim99@8: static QString s_homepage; joachim99@8: joachim99@8: #ifdef _WIN32 joachim99@8: #include joachim99@8: #include joachim99@8: #endif joachim99@8: joachim99@8: static void showHelp() joachim99@8: { joachim99@8: #ifdef _WIN32 joachim99@8: char buf[200]; joachim99@8: int r= SearchPathA( 0, ".", 0, sizeof(buf), buf, 0 ); joachim99@8: joachim99@8: QString exePath; joachim99@8: if (r!=0) { exePath = buf; } joachim99@8: else { exePath = "."; } joachim99@8: joachim99@34: QFileInfo helpFile( exePath + "\\doc\\en\\index.html" ); joachim99@34: if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\..\\doc\\en\\index.html" ); } joachim99@34: if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\doc\\index.html" ); } joachim99@34: if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\..\\doc\\index.html" ); } joachim99@8: if ( ! helpFile.exists() ) joachim99@8: { joachim99@34: QMessageBox::warning( 0, "KDiff3 documentation not found", joachim99@34: "Couldn't find the documentation. \n\n" joachim99@34: "The documentation can also be found at the homepage:\n\n " joachim99@34: " http://kdiff3.sourceforge.net/"); joachim99@34: return; joachim99@8: } joachim99@8: joachim99@8: HINSTANCE hi = FindExecutableA( helpFile.fileName(), helpFile.dirPath(true), buf ); joachim99@34: if ( int(hi)<=32 ) joachim99@8: { joachim99@8: static QTextBrowser* pBrowser = 0; joachim99@8: if (pBrowser==0) joachim99@8: { joachim99@8: pBrowser = new QTextBrowser( 0 ); joachim99@8: pBrowser->setMinimumSize( 600, 400 ); joachim99@8: } joachim99@8: pBrowser->setSource(helpFile.filePath()); joachim99@8: pBrowser->show(); joachim99@8: } joachim99@8: else joachim99@8: { joachim99@8: QFileInfo prog( buf ); joachim99@51: _spawnlp( _P_NOWAIT , prog.filePath(), prog.fileName(), (const char*)("file:///"+helpFile.absFilePath()), NULL ); joachim99@8: } joachim99@8: joachim99@8: #else joachim99@8: static QTextBrowser* pBrowser = 0; joachim99@8: if (pBrowser==0) joachim99@8: { joachim99@8: pBrowser = new QTextBrowser( 0 ); joachim99@8: pBrowser->setMinimumSize( 600, 400 ); joachim99@8: } joachim99@8: pBrowser->setSource("/usr/local/share/doc/kdiff3/en/index.html"); joachim99@8: pBrowser->show(); joachim99@8: #endif joachim99@8: } joachim99@8: joachim99@53: QString getTranslationDir() joachim99@53: { joachim99@53: #ifdef _WIN32 joachim99@53: char buf[200]; joachim99@53: int r= SearchPathA( 0, ".", 0, sizeof(buf), buf, 0 ); joachim99@53: joachim99@53: QString exePath; joachim99@53: if (r!=0) { exePath = buf; } joachim99@53: else { exePath = "."; } joachim99@53: return exePath; joachim99@53: #else joachim99@53: return "."; joachim99@53: #endif joachim99@53: } joachim99@8: joachim99@8: // static joachim99@8: void KMessageBox::error( QWidget* parent, const QString& text, const QString& caption ) joachim99@8: { joachim99@8: QMessageBox::critical( parent, caption, text ); joachim99@8: } joachim99@8: joachim99@8: int KMessageBox::warningContinueCancel( QWidget* parent, const QString& text, const QString& caption, joachim99@8: const QString& button1 ) joachim99@8: { joachim99@34: return 0 == QMessageBox::warning( parent, caption, text, button1, "Cancel" ) ? Continue : Cancel; joachim99@8: } joachim99@8: joachim99@8: void KMessageBox::sorry( QWidget* parent, const QString& text, const QString& caption ) joachim99@8: { joachim99@8: QMessageBox::information( parent, caption, text ); joachim99@8: } joachim99@8: joachim99@8: void KMessageBox::information( QWidget* parent, const QString& text, const QString& caption ) joachim99@8: { joachim99@8: QMessageBox::information( parent, caption, text ); joachim99@8: } joachim99@8: joachim99@8: int KMessageBox::warningYesNo( QWidget* parent, const QString& text, const QString& caption, joachim99@8: const QString& button1, const QString& button2 ) joachim99@8: { joachim99@8: return 0 == QMessageBox::warning( parent, caption, text, button1, button2 ) ? Yes : No; joachim99@8: } joachim99@8: joachim99@8: int KMessageBox::warningYesNoCancel( QWidget* parent, const QString& text, const QString& caption, joachim99@8: const QString& button1, const QString& button2 ) joachim99@8: { joachim99@34: int val = QMessageBox::warning( parent, caption, text, joachim99@53: button1, button2, i18n("Cancel") ); joachim99@8: if ( val==0 ) return Yes; joachim99@8: if ( val==1 ) return No; joachim99@8: else return Cancel; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KDialogBase::KDialogBase( int, const QString& caption, int, int, QWidget* parent, const QString& name, joachim99@8: bool /*modal*/, bool ) joachim99@8: : QTabDialog( parent, name, true /* modal */ ) joachim99@8: { joachim99@8: setCaption( caption ); joachim99@8: setDefaultButton(); joachim99@8: setHelpButton(); joachim99@8: setCancelButton(); joachim99@8: //setApplyButton(); joachim99@8: setOkButton(); joachim99@8: setDefaultButton(); joachim99@8: joachim99@8: connect( this, SIGNAL( defaultButtonPressed() ), this, SLOT(slotDefault()) ); joachim99@8: connect( this, SIGNAL( helpButtonPressed() ), this, SLOT(slotHelp())); joachim99@8: connect( this, SIGNAL( applyButtonPressed() ), this, SLOT( slotApply() )); joachim99@8: } joachim99@8: joachim99@8: KDialogBase::~KDialogBase() joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: void KDialogBase::incInitialSize ( const QSize& ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: void KDialogBase::setHelp(const QString&, const QString& ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: joachim99@8: int KDialogBase::BarIcon(const QString& /*iconName*/, int ) joachim99@8: { joachim99@8: return 0; // Not used for replacement. joachim99@8: } joachim99@8: joachim99@8: joachim99@8: QVBox* KDialogBase::addVBoxPage( const QString& name, const QString& /*info*/, int ) joachim99@8: { joachim99@8: QVBox* p = new QVBox(this, name); joachim99@8: addTab( p, name ); joachim99@8: return p; joachim99@8: } joachim99@8: joachim99@8: QFrame* KDialogBase::addPage( const QString& name, const QString& /*info*/, int ) joachim99@8: { joachim99@8: QFrame* p = new QFrame( this, name ); joachim99@8: addTab( p, name ); joachim99@8: return p; joachim99@8: } joachim99@8: joachim99@8: int KDialogBase::spacingHint() joachim99@8: { joachim99@8: return 5; joachim99@8: } joachim99@8: joachim99@8: static bool s_inAccept = false; joachim99@8: static bool s_bAccepted = false; joachim99@8: void KDialogBase::accept() joachim99@8: { joachim99@8: if( ! s_inAccept ) joachim99@8: { joachim99@8: s_bAccepted = false; joachim99@8: s_inAccept = true; joachim99@8: slotOk(); joachim99@8: s_inAccept = false; joachim99@8: if ( s_bAccepted ) joachim99@8: QTabDialog::accept(); joachim99@8: } joachim99@8: else joachim99@8: { joachim99@8: s_bAccepted = true; joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: void KDialogBase::slotDefault( ) joachim99@8: { joachim99@8: } joachim99@8: void KDialogBase::slotOk() joachim99@8: { joachim99@8: } joachim99@8: void KDialogBase::slotCancel( ) joachim99@8: { joachim99@8: } joachim99@8: void KDialogBase::slotApply( ) joachim99@8: { joachim99@8: emit applyClicked(); joachim99@8: } joachim99@8: void KDialogBase::slotHelp( ) joachim99@8: { joachim99@8: showHelp(); joachim99@8: } joachim99@8: joachim99@8: KURL KFileDialog::getSaveURL( const QString &startDir, joachim99@8: const QString &filter, joachim99@8: QWidget *parent, const QString &caption) joachim99@8: { joachim99@8: QString s = QFileDialog::getSaveFileName(startDir, filter, parent, caption); joachim99@8: return KURL(s); joachim99@8: } joachim99@8: joachim99@8: KURL KFileDialog::getOpenURL( const QString & startDir, joachim99@8: const QString & filter, joachim99@8: QWidget * parent, joachim99@8: const QString & caption ) joachim99@8: { joachim99@8: QString s = QFileDialog::getOpenFileName(startDir, filter, parent, caption); joachim99@8: return KURL(s); joachim99@8: } joachim99@8: joachim99@8: KURL KFileDialog::getExistingURL( const QString & startDir, joachim99@8: QWidget * parent, joachim99@8: const QString & caption) joachim99@8: { joachim99@8: QString s = QFileDialog::getExistingDirectory(startDir, parent, caption); joachim99@8: return KURL(s); joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KToolBar::BarPosition KToolBar::barPos() joachim99@8: { joachim99@8: return Top; joachim99@8: } joachim99@8: joachim99@8: void KToolBar::setBarPos(BarPosition) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: KToolBar::KToolBar( QMainWindow* parent ) joachim99@8: : QToolBar( parent ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KMainWindow::KMainWindow( QWidget* parent, const QString& name ) joachim99@8: : QMainWindow( parent, name ), m_actionCollection(this) joachim99@8: { joachim99@8: fileMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&File"), fileMenu); joachim99@8: editMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Edit"), editMenu); joachim99@8: directoryMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Directory"), directoryMenu); joachim99@51: dirCurrentItemMenu = 0; joachim99@51: dirCurrentSyncItemMenu = 0; joachim99@8: movementMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Movement"), movementMenu); joachim99@8: mergeMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Merge"), mergeMenu); joachim99@8: windowsMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Window"), windowsMenu); joachim99@8: settingsMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Settings"), settingsMenu); joachim99@8: helpMenu = new QPopupMenu(); joachim99@53: menuBar()->insertItem(i18n("&Help"), helpMenu); joachim99@8: joachim99@8: m_pToolBar = new KToolBar(this); joachim99@8: joachim99@8: memberList = new QList; joachim99@8: memberList->append(this); joachim99@8: connect( qApp, SIGNAL(lastWindowClosed()), this, SLOT(quit())); joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::closeEvent(QCloseEvent*e) joachim99@8: { joachim99@8: if ( queryClose() ) joachim99@8: { joachim99@8: e->accept(); joachim99@8: } joachim99@8: else joachim99@8: e->ignore(); joachim99@8: } joachim99@8: joachim99@8: bool KMainWindow::event( QEvent* e ) joachim99@8: { joachim99@8: return QMainWindow::event(e); joachim99@8: } joachim99@8: joachim99@8: KToolBar* KMainWindow::toolBar(const QString&) joachim99@8: { joachim99@8: return m_pToolBar; joachim99@8: } joachim99@8: joachim99@8: KActionCollection* KMainWindow::actionCollection() joachim99@8: { joachim99@8: return &m_actionCollection; joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::createGUI() joachim99@8: { joachim99@8: KStdAction::help(this, SLOT(slotHelp()), actionCollection()); joachim99@8: KStdAction::about(this, SLOT(slotAbout()), actionCollection()); joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::quit() joachim99@8: { joachim99@8: if ( queryExit() ) joachim99@8: { joachim99@8: qApp->quit(); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::slotAbout() joachim99@8: { joachim99@8: QMessageBox::information( joachim99@8: this, joachim99@8: "About " + s_appName, joachim99@8: s_appName + " Version " + s_version + joachim99@8: "\n\n" + s_description + joachim99@8: "\n\n" + s_copyright + joachim99@8: "\n\nHomepage: " + s_homepage + joachim99@8: "\n\nLicence: GNU GPL Version 2" joachim99@8: ); joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::slotHelp() joachim99@8: { joachim99@8: showHelp(); joachim99@8: } joachim99@8: joachim99@8: KConfig::KConfig() joachim99@8: { joachim99@8: QString home = QDir::homeDirPath(); joachim99@8: m_fileName = home + "/.kdiff3rc"; joachim99@8: joachim99@8: QFile f( m_fileName ); joachim99@8: if ( f.open(IO_ReadOnly) ) joachim99@8: { // file opened successfully joachim99@8: QTextStream t( &f ); // use a text stream joachim99@8: while ( !t.eof() ) joachim99@8: { // until end of file... joachim99@8: QString s = t.readLine(); // line of text excluding '\n' joachim99@8: int pos = s.find('='); joachim99@8: if( pos > 0 ) // seems not to have a tag joachim99@8: { joachim99@8: QString key = s.left(pos); joachim99@8: QString val = s.mid(pos+1); joachim99@8: m_map[key] = val; joachim99@8: } joachim99@8: } joachim99@8: f.close(); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: KConfig::~KConfig() joachim99@8: { joachim99@8: QFile f(m_fileName); joachim99@8: if ( f.open( IO_WriteOnly | IO_Translate ) ) joachim99@8: { // file opened successfully joachim99@8: QTextStream t( &f ); // use a text stream joachim99@8: std::map::iterator i; joachim99@8: for( i=m_map.begin(); i!=m_map.end(); ++i) joachim99@8: { joachim99@8: QString key = i->first; joachim99@8: QString val = i->second; joachim99@8: t << key << "=" << val << "\n"; joachim99@8: } joachim99@8: f.close(); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: void KConfig::setGroup(const QString&) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: static QString numStr(int n) joachim99@8: { joachim99@8: QString s; joachim99@8: s.setNum( n ); joachim99@8: return s; joachim99@8: } joachim99@8: joachim99@8: static QString subSection( const QString& s, int idx, char sep ) joachim99@8: { joachim99@8: int pos=0; joachim99@8: while( idx>0 ) joachim99@8: { joachim99@8: pos = s.find( sep, pos ); joachim99@8: --idx; joachim99@8: if (pos<0) break; joachim99@8: ++pos; joachim99@8: } joachim99@8: if ( pos>=0 ) joachim99@8: { joachim99@8: int pos2 = s.find( sep, pos ); joachim99@8: if ( pos2>0 ) joachim99@8: return s.mid(pos, pos2-pos); joachim99@8: else joachim99@8: return s.mid(pos); joachim99@8: } joachim99@8: joachim99@8: return ""; joachim99@8: } joachim99@8: joachim99@8: static int num( QString& s, int idx ) joachim99@8: { joachim99@8: return subSection( s, idx, ',').toInt(); joachim99@8: joachim99@8: //return s.section(',', idx, idx).toInt(); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QFont& v ) joachim99@8: { joachim99@8: //m_map[k] = v.toString(); joachim99@8: m_map[k] = v.family() + "," + QString::number(v.pointSize()); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QColor& v ) joachim99@8: { joachim99@8: m_map[k] = numStr(v.red()) + "," + numStr(v.green()) + "," + numStr(v.blue()); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QSize& v ) joachim99@8: { joachim99@8: m_map[k] = numStr(v.width()) + "," + numStr(v.height()); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QPoint& v ) joachim99@8: { joachim99@8: m_map[k] = numStr(v.x()) + "," + numStr(v.y()); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, int v ) joachim99@8: { joachim99@8: m_map[k] = numStr(v); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, bool v ) joachim99@8: { joachim99@8: m_map[k] = numStr(v); joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QString& v ) joachim99@8: { joachim99@8: m_map[k] = v; joachim99@8: } joachim99@8: joachim99@8: void KConfig::writeEntry(const QString& k, const QStringList& v, char separator ) joachim99@8: { joachim99@8: QString s; joachim99@8: joachim99@8: QStringList::ConstIterator i = v.begin(); joachim99@8: for( i=v.begin(); i!= v.end(); ++i ) joachim99@8: { joachim99@8: s += *i; joachim99@8: joachim99@8: if ( !(*i).isEmpty() ) joachim99@8: s += separator; joachim99@8: } joachim99@8: joachim99@8: m_map[k] = s; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: QFont KConfig::readFontEntry(const QString& k, QFont* defaultVal ) joachim99@8: { joachim99@8: QFont f = *defaultVal; joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: f.setFamily( subSection( i->second, 0, ',' ) ); joachim99@8: f.setPointSize( subSection( i->second, 1, ',' ).toInt() ); joachim99@8: //f.fromString(i->second); joachim99@8: } joachim99@8: joachim99@8: return f; joachim99@8: } joachim99@8: joachim99@8: QColor KConfig::readColorEntry(const QString& k, QColor* defaultVal ) joachim99@8: { joachim99@8: QColor c= *defaultVal; joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: QString s = i->second; joachim99@8: c = QColor( num(s,0),num(s,1),num(s,2) ); joachim99@8: } joachim99@8: joachim99@8: return c; joachim99@8: } joachim99@8: joachim99@8: QSize KConfig::readSizeEntry(const QString& k) joachim99@8: { joachim99@8: QSize size(640,400); joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: joachim99@8: QString s = i->second; joachim99@8: size = QSize( num(s,0),num(s,1) ); joachim99@8: } joachim99@8: joachim99@8: return size; joachim99@8: } joachim99@8: joachim99@8: QPoint KConfig::readPointEntry(const QString& k) joachim99@8: { joachim99@8: QPoint point(0,0); joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: QString s = i->second; joachim99@8: point = QPoint( num(s,0),num(s,1) ); joachim99@8: } joachim99@8: joachim99@8: return point; joachim99@8: } joachim99@8: joachim99@8: bool KConfig::readBoolEntry(const QString& k, bool bDefault ) joachim99@8: { joachim99@8: bool b = bDefault; joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: QString s = i->second; joachim99@8: b = (bool)num(s,0); joachim99@8: } joachim99@8: joachim99@8: return b; joachim99@8: } joachim99@8: joachim99@8: int KConfig::readNumEntry(const QString& k, int iDefault ) joachim99@8: { joachim99@8: int ival = iDefault; joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: QString s = i->second; joachim99@8: ival = num(s,0); joachim99@8: } joachim99@8: joachim99@8: return ival; joachim99@8: } joachim99@8: joachim99@8: QString KConfig::readEntry(const QString& k, const QString& sDefault ) joachim99@8: { joachim99@8: QString sval = sDefault; joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: sval = i->second; joachim99@8: } joachim99@8: joachim99@8: return sval; joachim99@8: } joachim99@8: joachim99@8: QStringList KConfig::readListEntry(const QString& k, char /*separator*/ ) joachim99@8: { joachim99@8: QStringList strList; joachim99@8: joachim99@8: std::map::iterator i = m_map.find( k ); joachim99@8: if ( i!=m_map.end() ) joachim99@8: { joachim99@8: QString s = i->second; joachim99@8: int idx=0; joachim99@8: for(;;) joachim99@8: { joachim99@8: QString sec = subSection( s, idx, '|' ); //s.section('|',idx,idx); joachim99@8: if ( sec.isEmpty() ) joachim99@8: break; joachim99@8: else joachim99@8: strList.append(sec); joachim99@8: ++idx; joachim99@8: } joachim99@8: } joachim99@8: return strList; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KAction::KAction(const QString& text, const QIconSet& icon, int accel, joachim99@51: QObject* receiver, const char* slot, KActionCollection* actionCollection, joachim99@8: const QString& name, bool bToggle, bool bMenu joachim99@8: ) joachim99@8: : QAction ( text, icon, text, accel, actionCollection->m_pMainWindow, name, bToggle ) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@8: if( slot!=0 ) joachim99@8: { joachim99@8: if (!bToggle) joachim99@8: connect(this, SIGNAL(activated()), receiver, slot); joachim99@8: else joachim99@8: { joachim99@8: connect(this, SIGNAL(toggled(bool)), receiver, slot); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: if ( !icon.isNull() && p ) this->addTo( p->m_pToolBar ); joachim99@8: joachim99@8: if (bMenu) joachim99@8: { joachim99@8: if( name[0]=='g') addTo( p->movementMenu ); joachim99@51: else if( name.left(16)=="dir_current_sync") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@53: p->dirCurrentItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu); joachim99@51: p->dirCurrentSyncItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu); joachim99@53: } joachim99@53: addTo( p->dirCurrentItemMenu ); joachim99@53: } joachim99@51: else if( name.left(11)=="dir_current") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@53: p->dirCurrentItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu); joachim99@51: p->dirCurrentSyncItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu); joachim99@53: } joachim99@53: addTo( p->dirCurrentSyncItemMenu ); joachim99@53: } joachim99@8: else if( name[0]=='d') addTo( p->directoryMenu ); joachim99@8: else if( name[0]=='f') addTo( p->fileMenu ); joachim99@8: else if( name[0]=='w') addTo( p->windowsMenu ); joachim99@8: else addTo( p->mergeMenu ); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: KAction::KAction(const QString& text, int accel, joachim99@51: QObject* receiver, const char* slot, KActionCollection* actionCollection, joachim99@8: const QString& name, bool bToggle, bool bMenu joachim99@8: ) joachim99@8: : QAction ( text, text, accel, actionCollection->m_pMainWindow, name, bToggle ) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@8: if( slot!=0 ) joachim99@8: { joachim99@8: if (!bToggle) joachim99@8: connect(this, SIGNAL(activated()), receiver, slot); joachim99@8: else joachim99@8: { joachim99@8: connect(this, SIGNAL(toggled(bool)), receiver, slot); joachim99@8: } joachim99@8: } joachim99@8: if (bMenu) joachim99@8: { joachim99@8: if( name[0]=='g') addTo( p->movementMenu ); joachim99@51: else if( name.left(16)=="dir_current_sync") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@53: p->dirCurrentItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu); joachim99@51: p->dirCurrentSyncItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu); joachim99@53: } joachim99@53: addTo( p->dirCurrentItemMenu ); joachim99@53: } joachim99@51: else if( name.left(11)=="dir_current") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@53: p->dirCurrentItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu); joachim99@51: p->dirCurrentSyncItemMenu = new QPopupMenu(); joachim99@53: p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu); joachim99@53: } joachim99@53: addTo( p->dirCurrentSyncItemMenu ); joachim99@53: } joachim99@8: else if( name[0]=='d') addTo( p->directoryMenu ); joachim99@8: else if( name[0]=='f') addTo( p->fileMenu ); joachim99@8: else if( name[0]=='w') addTo( p->windowsMenu ); joachim99@8: else addTo( p->mergeMenu ); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: void KAction::setStatusText(const QString&) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: void KAction::plug(QPopupMenu* menu) joachim99@8: { joachim99@8: addTo(menu); joachim99@8: } joachim99@8: joachim99@8: joachim99@51: KToggleAction::KToggleAction(const QString& text, const QIconSet& icon, int accel, QObject* receiver, const char* slot, KActionCollection* actionCollection, const QString& name, bool bMenu) joachim99@51: : KAction( text, icon, accel, receiver, slot, actionCollection, name, true, bMenu) joachim99@8: { joachim99@8: } joachim99@8: joachim99@51: KToggleAction::KToggleAction(const QString& text, int accel, QObject* receiver, const char* slot, KActionCollection* actionCollection, const QString& name, bool bMenu) joachim99@51: : KAction( text, accel, receiver, slot, actionCollection, name, true, bMenu) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: KToggleAction::KToggleAction(const QString& text, const QIconSet& icon, int accel, KActionCollection* actionCollection, const QString& name, bool bMenu) joachim99@8: : KAction( text, icon, accel, 0, 0, actionCollection, name, true, bMenu) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: void KToggleAction::setChecked(bool bChecked) joachim99@8: { joachim99@8: blockSignals( true ); joachim99@8: setOn( bChecked ); joachim99@8: blockSignals( false ); joachim99@8: } joachim99@8: joachim99@8: bool KToggleAction::isChecked() joachim99@8: { joachim99@8: return isOn(); joachim99@8: } joachim99@8: joachim99@8: joachim99@8: joachim99@8: //static joachim99@8: KAction* KStdAction::open( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: #include "../xpm/fileopen.xpm" joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Open"), QIconSet(QPixmap(fileopen)), Qt::CTRL+Qt::Key_O, parent, slot, actionCollection, "open", false, false); joachim99@8: if(p){ a->addTo( p->fileMenu ); } joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::save( QWidget* parent, const char* slot, KActionCollection* actionCollection ) joachim99@8: { joachim99@8: #include "../xpm/filesave.xpm" joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Save"), QIconSet(QPixmap(filesave)), Qt::CTRL+Qt::Key_S, parent, slot, actionCollection, "save", false, false); joachim99@8: if(p){ a->addTo( p->fileMenu ); } joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::saveAs( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Save As..."), 0, parent, slot, actionCollection, "saveas", false, false); joachim99@8: if(p) a->addTo( p->fileMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::quit( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Quit"), Qt::CTRL+Qt::Key_Q, parent, slot, actionCollection, "quit", false, false); joachim99@8: if(p) a->addTo( p->fileMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::cut( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Cut"), Qt::CTRL+Qt::Key_X, parent, slot, actionCollection, "cut", false, false ); joachim99@8: if(p) a->addTo( p->editMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::copy( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Copy"), Qt::CTRL+Qt::Key_C, parent, slot, actionCollection, "copy", false, false ); joachim99@8: if(p) a->addTo( p->editMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::paste( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Paste"), Qt::CTRL+Qt::Key_V, parent, slot, actionCollection, "paste", false, false ); joachim99@8: if(p) a->addTo( p->editMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KToggleAction* KStdAction::showToolbar( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KToggleAction* a = new KToggleAction( i18n("Show Toolbar"), 0, parent, slot, actionCollection, "showtoolbar", false ); joachim99@8: if(p) a->addTo( p->settingsMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KToggleAction* KStdAction::showStatusbar( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KToggleAction* a = new KToggleAction( i18n("Show &Statusbar"), 0, parent, slot, actionCollection, "showstatusbar", false ); joachim99@8: if(p) a->addTo( p->settingsMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::preferences( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("&Configure %1...").arg("KDiff3"), 0, parent, slot, actionCollection, "settings", false, false ); joachim99@8: if(p) a->addTo( p->settingsMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: KAction* KStdAction::keyBindings( QWidget*, const char*, KActionCollection*) joachim99@8: { joachim99@8: return 0; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::about( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("About"), 0, parent, slot, actionCollection, "about", false, false ); joachim99@8: if(p) a->addTo( p->helpMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::help( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Help"), Qt::Key_F1, parent, slot, actionCollection, "help", false, false ); joachim99@8: if(p) a->addTo( p->helpMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: KAction* KStdAction::find( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Find"), Qt::CTRL+Qt::Key_F, parent, slot, actionCollection, "find", false, false ); joachim99@8: if(p) a->addTo( p->editMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: KAction* KStdAction::findNext( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@53: KAction* a = new KAction( i18n("Find Next"), Qt::Key_F3, parent, slot, actionCollection, "findNext", false, false ); joachim99@8: if(p) a->addTo( p->editMenu ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: joachim99@8: joachim99@8: KFontChooser::KFontChooser( QWidget* pParent, const QString& /*name*/, bool, const QStringList&, bool, int ) joachim99@8: : QWidget(pParent) joachim99@8: { joachim99@8: m_pParent = pParent; joachim99@8: QVBoxLayout* pLayout = new QVBoxLayout( this ); joachim99@53: m_pSelectFont = new QPushButton(i18n("Select Font"), this ); joachim99@8: connect(m_pSelectFont, SIGNAL(clicked()), this, SLOT(slotSelectFont())); joachim99@8: pLayout->addWidget(m_pSelectFont); joachim99@8: joachim99@8: m_pLabel = new QLabel( "", this ); joachim99@8: m_pLabel->setFont( m_font ); joachim99@8: m_pLabel->setMinimumWidth(200); joachim99@8: m_pLabel->setText( "The quick brown fox jumps over the river\n" joachim99@8: "but the little red hen escapes with a shiver.\n" joachim99@8: ":-)"); joachim99@8: pLayout->addWidget(m_pLabel); joachim99@8: } joachim99@8: joachim99@8: QFont KFontChooser::font() joachim99@8: { joachim99@8: return m_font;//QFont("courier",10); joachim99@8: } joachim99@8: joachim99@8: void KFontChooser::setFont( const QFont& font, bool ) joachim99@8: { joachim99@8: m_font = font; joachim99@8: m_pLabel->setFont( m_font ); joachim99@8: //update(); joachim99@8: } joachim99@8: joachim99@8: void KFontChooser::slotSelectFont() joachim99@8: { joachim99@8: for(;;) joachim99@8: { joachim99@8: bool bOk; joachim99@8: m_font = QFontDialog::getFont(&bOk, m_font ); joachim99@8: m_pLabel->setFont( m_font ); joachim99@8: QFontMetrics fm(m_font); joachim99@8: joachim99@8: // Variable width font. joachim99@8: if ( fm.width('W')!=fm.width('i') ) joachim99@8: { joachim99@8: int result = KMessageBox::warningYesNo(m_pParent, i18n( joachim99@8: "You selected a variable width font.\n\n" joachim99@8: "Because this program doesn't handle variable width fonts\n" joachim99@8: "correctly, you might experience problems while editing.\n\n" joachim99@8: "Do you want to continue or do you want to select another font."), joachim99@8: i18n("Incompatible font."), joachim99@8: i18n("Continue at my own risk"), i18n("Select another font")); joachim99@8: if (result==KMessageBox::Yes) joachim99@8: return; joachim99@8: } joachim99@8: else joachim99@8: return; joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KColorButton::KColorButton(QWidget* parent) joachim99@8: : QPushButton(parent) joachim99@8: { joachim99@8: connect( this, SIGNAL(clicked()), this, SLOT(slotClicked())); joachim99@8: } joachim99@8: joachim99@8: QColor KColorButton::color() joachim99@8: { joachim99@8: return m_color; joachim99@8: } joachim99@8: joachim99@8: void KColorButton::setColor( const QColor& color ) joachim99@8: { joachim99@8: m_color = color; joachim99@8: update(); joachim99@8: } joachim99@8: joachim99@8: void KColorButton::paintEvent( QPaintEvent* e ) joachim99@8: { joachim99@8: QPushButton::paintEvent(e); joachim99@8: QPainter p(this); joachim99@8: joachim99@8: int w = width(); joachim99@8: int h = height(); joachim99@8: p.fillRect( 10, 5, w-20, h-10, m_color ); joachim99@8: p.drawRect( 10, 5, w-20, h-10 ); joachim99@8: } joachim99@8: joachim99@8: void KColorButton::slotClicked() joachim99@8: { joachim99@8: // Under Windows ChooseColor() should be used. (Nicer if few colors exist.) joachim99@8: QColor c = QColorDialog::getColor ( m_color, this ); joachim99@8: if ( c.isValid() ) m_color = c; joachim99@8: update(); joachim99@8: } joachim99@8: joachim99@8: QPixmap KIconLoader::loadIcon( const QString&, int ) joachim99@8: { joachim99@8: return QPixmap(); joachim99@8: } joachim99@8: joachim99@8: KAboutData::KAboutData( const QString& /*name*/, const QString& appName, const QString& version, joachim99@8: const QString& description, int, joachim99@8: const QString& copyright, int, const QString& homepage, const QString& email) joachim99@8: { joachim99@8: s_copyright = copyright; joachim99@8: s_email = email; joachim99@8: s_appName = appName; joachim99@8: s_description = description; joachim99@8: s_version = version; joachim99@8: s_homepage = homepage; joachim99@8: } joachim99@8: joachim99@51: KAboutData::KAboutData( const QString& /*name*/, const QString& /*appName*/, const QString& /*version*/ ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: void KAboutData::addAuthor(const QString& /*name*/, int, const QString& /*email*/) joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: /* Option structure: e.g.: joachim99@8: { "m", 0, 0 }, joachim99@8: { "merge", I18N_NOOP("Automatically merge the input."), 0 }, joachim99@8: { "o", 0, 0 }, joachim99@8: { "output file", I18N_NOOP("Output file. Implies -m. E.g.: -o newfile.txt"), 0 }, joachim99@8: { "+[File1]", I18N_NOOP("file1 to open (base)"), 0 }, joachim99@8: { "+[File2]", I18N_NOOP("file2 to open"), 0 }, joachim99@8: { "+[File3]", I18N_NOOP("file3 to open"), 0 }, joachim99@8: */ joachim99@8: //////////////// joachim99@8: static KCmdLineArgs s_cmdLineArgs; joachim99@8: static int s_argc; joachim99@8: static char** s_argv; joachim99@8: static KCmdLineOptions* s_pOptions; joachim99@8: joachim99@8: static std::vector s_vOption; joachim99@8: static std::vector s_vArg; joachim99@8: joachim99@8: KCmdLineArgs* KCmdLineArgs::parsedArgs() // static joachim99@8: { joachim99@51: return &s_cmdLineArgs; joachim99@8: } joachim99@8: joachim99@8: void KCmdLineArgs::init( int argc, char**argv, KAboutData* ) // static joachim99@8: { joachim99@8: s_argc = argc; joachim99@8: s_argv = argv; joachim99@8: } joachim99@8: joachim99@8: void KCmdLineArgs::addCmdLineOptions( KCmdLineOptions* options ) // static joachim99@8: { joachim99@8: s_pOptions = options; joachim99@8: } joachim99@8: joachim99@8: int KCmdLineArgs::count() joachim99@8: { joachim99@8: return s_vArg.size(); joachim99@8: } joachim99@8: joachim99@8: QString KCmdLineArgs::arg(int idx) joachim99@8: { joachim99@8: return QString(s_vArg[idx]); joachim99@8: } joachim99@8: joachim99@8: void KCmdLineArgs::clear() joachim99@8: { joachim99@8: } joachim99@8: joachim99@8: QString KCmdLineArgs::getOption( const QString& s ) joachim99@8: { joachim99@8: // Find the option joachim99@8: int j=0; joachim99@8: for( j=0; j<(int)s_vOption.size(); ++j ) joachim99@8: { joachim99@8: const char* optName = s_pOptions[j].shortName; joachim99@8: const char* pos = strchr( optName,' ' ); joachim99@8: int len = pos==0 ? strlen( optName ) : pos - optName; joachim99@8: joachim99@8: if( s == (const char*)( QCString( optName, len+1) ) ) joachim99@8: { joachim99@8: return s_vOption[j].isEmpty() ? QString() : s_vOption[j].last(); joachim99@8: } joachim99@8: } joachim99@8: assert(false); joachim99@8: return QString(); joachim99@8: } joachim99@8: joachim99@8: QCStringList KCmdLineArgs::getOptionList( const QString& s ) joachim99@8: { joachim99@8: // Find the option joachim99@8: int j=0; joachim99@8: for( j=0; j<(int)s_vOption.size(); ++j ) joachim99@8: { joachim99@8: const char* optName = s_pOptions[j].shortName; joachim99@8: const char* pos = strchr( optName,' ' ); joachim99@8: int len = pos==0 ? strlen( optName ) : pos - optName; joachim99@8: joachim99@8: if( s == (const char*)( QCString( optName, len+1) ) ) joachim99@8: { joachim99@8: return s_vOption[j]; joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: assert(false); joachim99@8: return QCStringList(); joachim99@8: } joachim99@8: joachim99@8: bool KCmdLineArgs::isSet(const QString& s) joachim99@8: { joachim99@8: // Find the option joachim99@8: int j=0; joachim99@8: for( j=0; j<(int)s_vOption.size(); ++j ) joachim99@8: { joachim99@8: const char* optName = s_pOptions[j].shortName; joachim99@8: if( s == QString( optName ) ) joachim99@8: { joachim99@8: return ! s_vOption[j].isEmpty(); joachim99@8: } joachim99@8: } joachim99@8: assert(false); joachim99@8: return false; joachim99@8: } joachim99@8: joachim99@8: /////////////////// joachim99@8: KApplication* kapp; joachim99@8: joachim99@8: KApplication::KApplication() joachim99@8: : QApplication( s_argc,s_argv ) joachim99@8: { joachim99@8: kapp = this; joachim99@8: joachim99@8: int nofOptions=0; joachim99@8: int nofArgs=0; joachim99@8: int i=0; joachim99@8: while( s_pOptions[i].shortName != 0 ) joachim99@8: { joachim99@8: if ( s_pOptions[i].shortName[0]=='[' ) joachim99@8: nofArgs++; joachim99@8: else joachim99@8: nofOptions++; joachim99@8: joachim99@8: ++i; joachim99@8: } joachim99@8: joachim99@8: s_vOption.resize(nofOptions); joachim99@8: joachim99@8: for( i=1; i0 && ( s_argv[i][1]=='-' && memcmp( &s_argv[i][2], optName, len )==0 || joachim99@8: memcmp( &s_argv[i][1], optName, len )==0 )) joachim99@8: { joachim99@8: if (s_pOptions[j].longName == 0) // alias, because without description. joachim99@8: { joachim99@8: ++j; joachim99@8: optName = s_pOptions[j].shortName; joachim99@8: pos = strchr( optName,' ' ); joachim99@8: } joachim99@8: if (pos!=0){ ++i; s_vOption[j].append(s_argv[i]); } //use param joachim99@8: else { s_vOption[j].append("1"); } //set state joachim99@8: break; joachim99@8: } joachim99@8: } joachim99@8: if (j==nofOptions) joachim99@8: { joachim99@8: using std::cerr; joachim99@8: using std::endl; joachim99@8: cerr << "Unknown option: " << s_argv[i] << endl<(this); joachim99@8: if (f!=0) joachim99@8: return f->createPartObject( (QWidget*)pParent, name, joachim99@8: pParent, name, joachim99@8: classname, QStringList() ); joachim99@8: else joachim99@8: return 0; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: joachim99@8: #include "kreplacements.moc"