joachim99@8: /*************************************************************************** joachim99@8: kreplacements.cpp - description joachim99@8: ------------------- joachim99@8: begin : Sat Aug 3 2002 joachim99@69: copyright : (C) 2002-2006 by Joachim Eibl joachim99@69: email : joachim.eibl at 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@66: #include "common.h" joachim99@8: joachim99@8: #include joachim99@8: joachim99@8: #include joachim99@8: #include joachim99@75: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@75: #include joachim99@8: #include joachim99@8: #include joachim99@73: #include joachim99@70: #include joachim99@70: #include joachim99@75: #include joachim99@75: joachim99@75: #include joachim99@75: #include joachim99@75: #include joachim99@8: joachim99@8: #include joachim99@8: #include joachim99@8: #include joachim99@8: joachim99@66: 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@66: static KAboutData* s_pAboutData; joachim99@66: 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@95: #if defined(_WIN32) || defined(Q_OS_OS2) joachim99@95: QString exePath = QCoreApplication::applicationDirPath(); 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@95: #ifndef Q_OS_OS2 joachim99@99: char buf[256]; Chris@112: HINSTANCE hi = FindExecutableA( helpFile.fileName().toLocal8Bit(), helpFile.absolutePath().toLocal8Bit(), buf ); joachim99@34: if ( int(hi)<=32 ) joachim99@8: { joachim99@95: #endif joachim99@75: static QTextBrowser* pBrowser = 0; joachim99@8: if (pBrowser==0) joachim99@8: { joachim99@75: pBrowser = new QTextBrowser( 0 ); joachim99@8: pBrowser->setMinimumSize( 600, 400 ); joachim99@8: } joachim99@95: pBrowser->setSource(QUrl("file:///"+helpFile.filePath())); joachim99@8: pBrowser->show(); joachim99@95: #ifndef Q_OS_OS2 joachim99@8: } joachim99@8: else joachim99@8: { joachim99@8: QFileInfo prog( buf ); joachim99@80: QProcess::startDetached ( prog.filePath(), QStringList( "file:///"+helpFile.absoluteFilePath() ) ); joachim99@8: } joachim99@95: #endif joachim99@8: #else joachim99@75: static QTextBrowser* pBrowser = 0; joachim99@8: if (pBrowser==0) joachim99@8: { joachim99@75: pBrowser = new QTextBrowser( 0 ); joachim99@8: pBrowser->setMinimumSize( 600, 400 ); joachim99@8: } joachim99@75: pBrowser->setSource(QUrl("file://usr/local/share/doc/kdiff3/en/index.html")); joachim99@8: pBrowser->show(); joachim99@8: #endif joachim99@8: } joachim99@8: joachim99@92: QString getTranslationDir(const QString& locale) joachim99@53: { joachim99@95: #if defined(_WIN32) || defined(Q_OS_OS2) joachim99@53: QString exePath; joachim99@95: exePath = QCoreApplication::applicationDirPath(); joachim99@73: return exePath+"/translations"; joachim99@53: #else joachim99@92: return (QString)"/usr/share/locale/" + locale + "/LC_MESSAGES"; 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@58: return 0 == QMessageBox::warning( parent, caption, text, button1, button2, QString::null, 1, 1 ) ? 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@80: KPageDialog::KPageDialog( QWidget* parent ) joachim99@75: : QDialog( parent ) joachim99@8: { joachim99@75: setModal(true); joachim99@75: QVBoxLayout *pMainLayout = new QVBoxLayout(this); joachim99@75: m_pTabWidget = new QTabWidget(); joachim99@75: pMainLayout->addWidget(m_pTabWidget,1); joachim99@8: joachim99@75: QHBoxLayout* pButtonLayout = new QHBoxLayout(); joachim99@75: pMainLayout->addLayout( pButtonLayout ); joachim99@75: joachim99@75: pButtonLayout->addStretch(1); joachim99@75: QPushButton* pOk = new QPushButton( i18n("Ok") ); joachim99@80: connect( pOk, SIGNAL( clicked() ), this, SIGNAL(okClicked()) ); joachim99@75: pButtonLayout->addWidget( pOk ); joachim99@75: joachim99@75: QPushButton* pHelp = new QPushButton( i18n("Help") ); joachim99@80: connect( pHelp, SIGNAL( clicked() ), this, SLOT(slotHelpClicked())); joachim99@75: pButtonLayout->addWidget( pHelp ); joachim99@75: joachim99@75: QPushButton* pDefaults = new QPushButton( i18n("Defaults") ); joachim99@80: connect( pDefaults, SIGNAL( clicked() ), this, SIGNAL(defaultClicked()) ); joachim99@75: pButtonLayout->addWidget( pDefaults ); joachim99@75: joachim99@75: QPushButton* pCancel = new QPushButton( i18n("Cancel") ); joachim99@75: connect( pCancel, SIGNAL( clicked() ), this, SLOT(reject())); joachim99@75: pButtonLayout->addWidget( pCancel ); joachim99@8: } joachim99@8: joachim99@80: KPageDialog::~KPageDialog() joachim99@8: { joachim99@8: } joachim99@8: joachim99@80: void KPageDialog::incrementInitialSize ( const QSize& ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@80: void KPageDialog::setHelp(const QString&, const QString& ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@80: void KPageDialog::slotHelpClicked() joachim99@80: { joachim99@80: showHelp(); joachim99@80: } joachim99@8: joachim99@80: int KPageDialog::BarIcon(const QString& /*iconName*/, int ) joachim99@8: { joachim99@8: return 0; // Not used for replacement. joachim99@8: } joachim99@8: joachim99@8: joachim99@80: QFrame* KPageDialog::addPage( const QString& name, const QString& /*info*/, int ) joachim99@8: { joachim99@73: QFrame* p = new QFrame(); joachim99@71: p->setObjectName( name ); joachim99@75: m_pTabWidget->addTab( p, name ); joachim99@8: return p; joachim99@8: } joachim99@8: joachim99@80: void KPageDialog::addPage( KPageWidgetItem * p ) joachim99@80: { joachim99@80: m_pTabWidget->addTab( p->m_pWidget, p->m_title ); joachim99@80: } joachim99@80: joachim99@80: int KPageDialog::spacingHint() joachim99@8: { joachim99@75: return 3; joachim99@8: } joachim99@8: joachim99@80: KUrl KFileDialog::getSaveUrl( const QString &startDir, joachim99@68: const QString &filter, joachim99@68: QWidget *parent, const QString &caption) joachim99@8: { joachim99@75: QString s = QFileDialog::getSaveFileName(parent, caption, startDir, filter, 0/*, QFileDialog::DontUseNativeDialog*/); joachim99@80: return KUrl(s); joachim99@8: } joachim99@8: joachim99@80: KUrl KFileDialog::getOpenUrl( const QString & startDir, joachim99@8: const QString & filter, joachim99@8: QWidget * parent, joachim99@8: const QString & caption ) joachim99@8: { joachim99@75: QString s = QFileDialog::getOpenFileName(parent, caption, startDir, filter ); joachim99@80: return KUrl(s); joachim99@8: } joachim99@8: joachim99@80: KUrl KFileDialog::getExistingDirectoryUrl( const QString & startDir, joachim99@8: QWidget * parent, joachim99@8: const QString & caption) joachim99@8: { joachim99@75: QString s = QFileDialog::getExistingDirectory(parent, caption, startDir); joachim99@80: return KUrl(s); joachim99@8: } joachim99@8: joachim99@69: QString KFileDialog::getSaveFileName (const QString &startDir, joachim99@69: const QString &filter, joachim99@69: QWidget *parent, joachim99@69: const QString &caption) joachim99@69: { joachim99@75: return QFileDialog::getSaveFileName( parent, caption, startDir, filter ); joachim99@69: } joachim99@69: joachim99@8: joachim99@8: KToolBar::BarPosition KToolBar::barPos() joachim99@8: { joachim99@75: if ( m_pMainWindow->toolBarArea(this)==Qt::LeftToolBarArea ) return Left; joachim99@75: if ( m_pMainWindow->toolBarArea(this)==Qt::RightToolBarArea ) return Right; joachim99@75: if ( m_pMainWindow->toolBarArea(this)==Qt::BottomToolBarArea ) return Bottom; joachim99@75: if ( m_pMainWindow->toolBarArea(this)==Qt::TopToolBarArea ) return Top; joachim99@8: return Top; joachim99@8: } joachim99@8: joachim99@66: void KToolBar::setBarPos(BarPosition bp) joachim99@8: { joachim99@75: if ( bp == Left ) m_pMainWindow->addToolBar ( Qt::LeftToolBarArea, this ); joachim99@75: else if ( bp == Right ) m_pMainWindow->addToolBar ( Qt::RightToolBarArea, this ); joachim99@75: else if ( bp == Bottom ) m_pMainWindow->addToolBar ( Qt::BottomToolBarArea, this ); joachim99@75: else if ( bp == Top ) m_pMainWindow->addToolBar ( Qt::TopToolBarArea, this ); joachim99@8: } joachim99@8: joachim99@75: KToolBar::KToolBar( QMainWindow* parent ) joachim99@75: : QToolBar( parent ) joachim99@8: { joachim99@66: m_pMainWindow = parent; joachim99@8: } joachim99@8: joachim99@8: joachim99@80: KMainWindow::KMainWindow( QWidget* parent ) joachim99@75: : QMainWindow( parent ), m_actionCollection(this) joachim99@8: { joachim99@75: fileMenu = menuBar()->addMenu( i18n("&File") ); joachim99@75: editMenu = menuBar()->addMenu(i18n("&Edit") ); joachim99@75: directoryMenu = menuBar()->addMenu(i18n("&Directory") ); joachim99@51: dirCurrentItemMenu = 0; joachim99@51: dirCurrentSyncItemMenu = 0; joachim99@75: movementMenu = menuBar()->addMenu(i18n("&Movement") ); joachim99@75: diffMenu = menuBar()->addMenu(i18n("D&iffview") ); joachim99@75: mergeMenu = menuBar()->addMenu(i18n("&Merge") ); joachim99@75: windowsMenu = menuBar()->addMenu(i18n("&Window") ); joachim99@75: settingsMenu = menuBar()->addMenu(i18n("&Settings") ); joachim99@75: helpMenu = menuBar()->addMenu(i18n("&Help") ); joachim99@8: joachim99@8: m_pToolBar = new KToolBar(this); joachim99@80: addToolBar( m_pToolBar ); joachim99@8: joachim99@70: memberList = new QList; joachim99@8: memberList->append(this); 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@80: KStandardAction::help(this, SLOT(appHelpActivated()), actionCollection()); joachim99@80: KStandardAction::about(this, SLOT(slotAbout()), actionCollection()); joachim99@80: KStandardAction::aboutQt(actionCollection()); joachim99@8: } joachim99@8: joachim99@8: void KMainWindow::slotAbout() joachim99@8: { joachim99@73: QDialog d; joachim99@73: QVBoxLayout* l = new QVBoxLayout( &d ); joachim99@73: QTabWidget* pTabWidget = new QTabWidget; joachim99@73: l->addWidget( pTabWidget ); joachim99@73: joachim99@73: QPushButton* pOkButton = new QPushButton(i18n("Ok")); joachim99@73: connect( pOkButton, SIGNAL(clicked()), &d, SLOT(accept())); joachim99@73: l->addWidget( pOkButton ); joachim99@73: joachim99@75: d.setWindowTitle("About " + s_appName); joachim99@75: QTextBrowser* tb1 = new QTextBrowser(); joachim99@75: tb1->setWordWrapMode( QTextOption::NoWrap ); joachim99@66: tb1->setText( joachim99@66: s_appName + " Version " + s_version + joachim99@66: "\n\n" + s_description + joachim99@66: "\n\n" + s_copyright + joachim99@66: "\n\nHomepage: " + s_homepage + joachim99@66: "\n\nLicence: GNU GPL Version 2" joachim99@66: ); joachim99@73: pTabWidget->addTab(tb1,i18n("&About")); joachim99@66: joachim99@66: std::list::iterator i; joachim99@66: joachim99@66: QString s2; joachim99@66: for( i=s_pAboutData->m_authorList.begin(); i!=s_pAboutData->m_authorList.end(); ++i ) joachim99@66: { joachim99@66: if ( !i->m_name.isEmpty() ) s2 += i->m_name + "\n"; joachim99@66: if ( !i->m_task.isEmpty() ) s2 += " " + i->m_task + "\n"; joachim99@66: if ( !i->m_email.isEmpty() ) s2 += " " + i->m_email + "\n"; joachim99@66: if ( !i->m_weblink.isEmpty() ) s2 += " " + i->m_weblink + "\n"; joachim99@66: s2 += "\n"; joachim99@66: } joachim99@75: QTextBrowser* tb2 = new QTextBrowser(); joachim99@75: tb2->setWordWrapMode( QTextOption::NoWrap ); joachim99@66: tb2->setText(s2); joachim99@73: pTabWidget->addTab(tb2,i18n("A&uthor")); joachim99@66: joachim99@66: QString s3; joachim99@66: for( i=s_pAboutData->m_creditList.begin(); i!=s_pAboutData->m_creditList.end(); ++i ) joachim99@66: { joachim99@66: if ( !i->m_name.isEmpty() ) s3 += i->m_name + "\n"; joachim99@66: if ( !i->m_task.isEmpty() ) s3 += " " + i->m_task + "\n"; joachim99@66: if ( !i->m_email.isEmpty() ) s3 += " " + i->m_email + "\n"; joachim99@66: if ( !i->m_weblink.isEmpty() ) s3 += " " + i->m_weblink + "\n"; joachim99@66: s3 += "\n"; joachim99@66: } joachim99@75: QTextBrowser* tb3 = new QTextBrowser(); joachim99@75: tb3->setWordWrapMode( QTextOption::NoWrap ); joachim99@66: tb3->setText(s3); joachim99@73: pTabWidget->addTab(tb3,i18n("&Thanks To")); joachim99@66: joachim99@66: d.resize(400,300); joachim99@66: d.exec(); joachim99@66: /* 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@66: */ joachim99@8: } joachim99@8: joachim99@80: void KMainWindow::appHelpActivated() joachim99@8: { joachim99@8: showHelp(); joachim99@8: } joachim99@8: joachim99@69: joachim99@69: QString KStandardDirs::findResource(const QString& resource, const QString& /*appName*/) joachim99@69: { joachim99@69: if (resource=="config") joachim99@69: { joachim99@75: QString home = QDir::homePath(); joachim99@69: return home + "/.kdiff3rc"; joachim99@69: } joachim99@69: return QString(); joachim99@69: } joachim99@69: joachim99@80: KConfigGroupData::~KConfigGroupData() joachim99@8: { joachim99@80: QFile f(m_fileName); joachim99@80: if ( f.open( QIODevice::WriteOnly | QIODevice::Text ) ) joachim99@8: { // file opened successfully joachim99@80: QTextStream t( &f ); // use a text stream joachim99@80: save(t); joachim99@8: f.close(); joachim99@8: } joachim99@8: } joachim99@8: joachim99@80: KConfigGroup::KConfigGroup() joachim99@8: { joachim99@80: d = new KConfigGroupData; joachim99@80: } joachim99@80: joachim99@80: void KConfigGroup::readConfigFile( const QString& configFileName ) joachim99@80: { joachim99@80: if ( !configFileName.isEmpty() ) joachim99@80: { joachim99@80: d->m_fileName = configFileName; joachim99@80: } joachim99@80: else joachim99@80: { joachim99@80: d->m_fileName = KStandardDirs().findResource("config","kdiff3rc"); joachim99@80: } joachim99@80: joachim99@80: QFile f( d->m_fileName ); joachim99@80: if ( f.open(QIODevice::ReadOnly) ) joachim99@8: { // file opened successfully joachim99@80: QTextStream t( &f ); // use a text stream joachim99@80: d->load(t); joachim99@80: f.close(); joachim99@8: } joachim99@8: } joachim99@8: joachim99@80: KConfigGroup::~KConfigGroup() joachim99@8: { joachim99@8: } joachim99@8: joachim99@80: void KConfigGroup::setGroup(const QString&) joachim99@80: { joachim99@80: } joachim99@80: joachim99@80: KConfigGroup& KConfigGroup::group( const QString& ) joachim99@80: { joachim99@80: KApplication* pKApp = static_cast(QApplication::instance()); joachim99@80: return *pKApp->config(); joachim99@80: } joachim99@80: joachim99@80: static void initAction( QAction* pAction, QObject* receiver, const char* slot, KActionCollection* actionCollection, joachim99@80: const QString& name, bool bToggle, bool bMenu) joachim99@8: { joachim99@68: QString n(name); joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@8: if( slot!=0 ) joachim99@8: { joachim99@8: if (!bToggle) joachim99@80: QObject::connect(pAction, SIGNAL(triggered()), receiver, slot); joachim99@8: else joachim99@8: { joachim99@80: QObject::connect(pAction, SIGNAL(toggled(bool)), receiver, slot); joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: if (bMenu) joachim99@8: { joachim99@80: if( n[0]=='g') p->movementMenu->addAction( pAction ); joachim99@68: else if( n.left(16)=="dir_current_sync") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@75: p->dirCurrentItemMenu = p->directoryMenu->addMenu( i18n("Current Item Merge Operation") ); joachim99@75: p->dirCurrentSyncItemMenu = p->directoryMenu->addMenu( i18n("Current Item Sync Operation") ); joachim99@53: } joachim99@80: p->dirCurrentItemMenu->addAction( pAction ); joachim99@53: } joachim99@68: else if( n.left(11)=="dir_current") joachim99@53: { joachim99@53: if ( p->dirCurrentItemMenu==0 ) joachim99@53: { joachim99@75: p->dirCurrentItemMenu = p->directoryMenu->addMenu( i18n("Current Item Merge Operation") ); joachim99@75: p->dirCurrentSyncItemMenu = p->directoryMenu->addMenu( i18n("Current Item Sync Operation") ); joachim99@53: } joachim99@80: p->dirCurrentSyncItemMenu->addAction( pAction ); joachim99@53: } joachim99@80: else if( n.left(4)=="diff") p->diffMenu->addAction( pAction ); joachim99@80: else if( name[0]=='d') p->directoryMenu->addAction( pAction ); joachim99@80: else if( name[0]=='f') p->fileMenu->addAction( pAction ); joachim99@80: else if( name[0]=='w') p->windowsMenu->addAction( pAction ); joachim99@80: else p->mergeMenu->addAction( pAction ); joachim99@8: } joachim99@8: } joachim99@8: joachim99@80: KAction::KAction(const QString& name, KActionCollection* actionCollection ) joachim99@80: : QAction ( actionCollection->m_pMainWindow ) joachim99@80: { joachim99@80: initAction( this, 0,0, actionCollection, name, false, true ); joachim99@80: } joachim99@80: joachim99@80: KAction::KAction( KActionCollection* actionCollection ) joachim99@80: : QAction ( actionCollection->m_pMainWindow ) joachim99@80: { joachim99@80: } joachim99@68: joachim99@70: KAction::KAction(const QString& text, const QIcon& icon, int accel, joachim99@68: QObject* receiver, const char* slot, KActionCollection* actionCollection, joachim99@68: const char* name, bool bToggle, bool bMenu joachim99@68: ) joachim99@75: : QAction ( icon, text, actionCollection->m_pMainWindow ) joachim99@68: { joachim99@75: setObjectName(name); joachim99@75: setShortcut( accel ); joachim99@75: setCheckable( bToggle ); joachim99@68: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@75: if ( !icon.isNull() && p ) p->m_pToolBar->addAction( this ); joachim99@68: joachim99@80: initAction(this, receiver,slot,actionCollection,name,bToggle,bMenu); joachim99@68: } joachim99@68: joachim99@8: KAction::KAction(const QString& text, int accel, joachim99@51: QObject* receiver, const char* slot, KActionCollection* actionCollection, joachim99@68: const char* name, bool bToggle, bool bMenu joachim99@8: ) joachim99@75: : QAction ( text, actionCollection->m_pMainWindow ) joachim99@8: { joachim99@75: setObjectName(name); joachim99@75: setShortcut( accel ); joachim99@75: setCheckable( bToggle ); joachim99@80: initAction(this,receiver,slot,actionCollection,name,bToggle,bMenu); joachim99@8: } joachim99@8: joachim99@8: void KAction::setStatusText(const QString&) joachim99@8: { joachim99@8: } joachim99@8: joachim99@75: void KAction::plug(QMenu* menu) joachim99@8: { joachim99@75: menu->addAction( this ); joachim99@8: } joachim99@8: joachim99@80: void KAction::setIcon( const QIcon& icon ) joachim99@80: { joachim99@80: QAction::setIcon(icon); joachim99@80: if ( !icon.isNull() ) joachim99@80: { joachim99@80: KMainWindow* pMW = static_cast( parent() ); joachim99@80: pMW->toolBar()->addAction(this); joachim99@80: } joachim99@80: } joachim99@8: joachim99@80: joachim99@80: KToggleAction::KToggleAction( KActionCollection* actionCollection ) joachim99@80: : KAction( actionCollection ) joachim99@8: { joachim99@80: setCheckable(true); joachim99@8: } joachim99@8: joachim99@68: KToggleAction::KToggleAction(const QString& text, int accel, QObject* receiver, const char* slot, KActionCollection* actionCollection, const char* name, bool bMenu) joachim99@51: : KAction( text, accel, receiver, slot, actionCollection, name, true, bMenu) joachim99@8: { joachim99@8: } joachim99@8: joachim99@70: KToggleAction::KToggleAction(const QString& text, const QIcon& icon, int accel, KActionCollection* actionCollection, const char* 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@75: QAction::setChecked( bChecked ); joachim99@8: blockSignals( false ); joachim99@8: } joachim99@8: joachim99@8: joachim99@8: //static joachim99@80: KAction* KStandardAction::open( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: #include "../xpm/fileopen.xpm" joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@70: KAction* a = new KAction( i18n("Open"), QIcon(QPixmap(fileopen)), Qt::CTRL+Qt::Key_O, parent, slot, actionCollection, "open", false, false); joachim99@75: if(p){ p->fileMenu->addAction( a ); } joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::save( QWidget* parent, const char* slot, KActionCollection* actionCollection ) joachim99@8: { joachim99@8: #include "../xpm/filesave.xpm" joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@70: KAction* a = new KAction( i18n("Save"), QIcon(QPixmap(filesave)), Qt::CTRL+Qt::Key_S, parent, slot, actionCollection, "save", false, false); joachim99@75: if(p){ p->fileMenu->addAction( a ); } joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::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@75: if(p) p->fileMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::print( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@69: { joachim99@69: #include "../xpm/fileprint.xpm" joachim99@69: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@70: KAction* a = new KAction( i18n("Print..."), QIcon(QPixmap(fileprint)),Qt::CTRL+Qt::Key_P, parent, slot, actionCollection, "print", false, false); joachim99@75: if(p) p->fileMenu->addAction( a ); joachim99@69: return a; joachim99@69: } joachim99@69: joachim99@80: KAction* KStandardAction::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@75: if(p) p->fileMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::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@75: if(p) p->editMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::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@75: if(p) p->editMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::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@75: if(p) p->editMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::selectAll( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@69: { joachim99@69: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@69: KAction* a = new KAction( i18n("Select All"), Qt::CTRL+Qt::Key_A, parent, slot, actionCollection, "selectall", false, false ); joachim99@75: if(p) p->editMenu->addAction( a ); joachim99@69: return a; joachim99@69: } joachim99@69: joachim99@80: KToggleAction* KStandardAction::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@75: if(p) p->settingsMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KToggleAction* KStandardAction::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@75: if(p) p->settingsMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::preferences( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@80: KAction* a = new KAction( i18n("&Configure %1...",QString("KDiff3")), 0, parent, slot, actionCollection, "settings", false, false ); joachim99@75: if(p) p->settingsMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@80: KAction* KStandardAction::keyBindings( QWidget*, const char*, KActionCollection*) joachim99@8: { joachim99@8: return 0; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::about( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@69: KAction* a = new KAction( i18n("About")+" KDiff3", 0, parent, slot, actionCollection, "about_kdiff3", false, false ); joachim99@75: if(p) p->helpMenu->addAction( a ); joachim99@69: return a; joachim99@69: } joachim99@69: joachim99@80: KAction* KStandardAction::aboutQt( KActionCollection* actionCollection ) joachim99@69: { joachim99@69: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@69: KAction* a = new KAction( i18n("About")+" Qt", 0, qApp, SLOT(aboutQt()), actionCollection, "about_qt", false, false ); joachim99@75: if(p) p->helpMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::help( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@80: KAction* a = new KAction( i18n("Help"), Qt::Key_F1, parent, slot, actionCollection, "help-contents", false, false ); joachim99@75: if(p) p->helpMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@80: KAction* KStandardAction::find( QWidget* parent, const char* slot, KActionCollection* actionCollection) joachim99@8: { joachim99@8: KMainWindow* p = actionCollection->m_pMainWindow; joachim99@80: KAction* a = new KAction( i18n("Find"), Qt::CTRL+Qt::Key_F, parent, slot, actionCollection, "edit-find", false, false ); joachim99@75: if(p) p->editMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KStandardAction::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@75: if(p) p->editMenu->addAction( a ); joachim99@8: return a; joachim99@8: } joachim99@8: joachim99@80: KAction* KActionCollection::addAction(const QString& name ) joachim99@80: { joachim99@80: return new KAction( name, this ); joachim99@80: } joachim99@8: joachim99@80: void KActionCollection::addAction( const QString& name, QAction* pAction ) joachim99@80: { joachim99@80: initAction( pAction, 0,0,this,name,false,true); joachim99@80: } joachim99@8: joachim99@80: KFontChooser::KFontChooser( QWidget* pParent ) joachim99@8: : QWidget(pParent) joachim99@8: { joachim99@8: m_pParent = pParent; joachim99@75: 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@95: #ifndef QT_NO_PRINTER joachim99@69: KPrinter::KPrinter() joachim99@69: { joachim99@69: } joachim99@75: QList KPrinter::pageList() joachim99@69: { joachim99@75: QList vl; joachim99@69: int to = toPage(); joachim99@69: for(int i=fromPage(); i<=to; ++i) joachim99@69: { joachim99@69: vl.push_back(i); joachim99@69: } joachim99@69: return vl; joachim99@69: } joachim99@69: void KPrinter::setCurrentPage(int) joachim99@69: { joachim99@69: } joachim99@69: void KPrinter::setPageSelection(e_PageSelection) joachim99@69: { joachim99@69: } joachim99@95: #endif joachim99@69: joachim99@80: QPixmap KIconLoader::loadIcon( const QString&, int, int ) joachim99@8: { joachim99@8: return QPixmap(); joachim99@8: } joachim99@8: joachim99@80: KAboutData::KAboutData(const QByteArray &appName, const QByteArray & /*catalogName*/, const KLocalizedString & /*programName*/, joachim99@80: const QByteArray &version, const KLocalizedString &shortDescription, LicenseKey /*licenseType*/, joachim99@80: const KLocalizedString ©rightStatement, const KLocalizedString & /*text*/, joachim99@80: const QByteArray &homePageAddress, const QByteArray &bugsEmailAddress) joachim99@8: { joachim99@80: s_copyright = copyrightStatement; joachim99@80: s_email = bugsEmailAddress; joachim99@8: s_appName = appName; joachim99@80: s_description = shortDescription; joachim99@8: s_version = version; joachim99@80: s_homepage = homePageAddress; joachim99@8: } joachim99@8: joachim99@80: KAboutData::KAboutData( const QString& /*name*/, const QString& /*appName*/, const QString& /*appName2*/, const QString& /*version*/ ) joachim99@8: { joachim99@8: } joachim99@8: joachim99@80: void KAboutData::addAuthor(const QString& name, const QString& task, const QString& email, const QString& weblink) joachim99@8: { joachim99@66: m_authorList.push_back( AboutDataEntry( name, task, email, weblink) ); joachim99@66: } joachim99@66: joachim99@80: void KAboutData::addCredit(const QString& name, const QString& task, const QString& email, const QString& weblink) joachim99@66: { joachim99@66: m_creditList.push_back( AboutDataEntry( name, task, email, weblink) ); 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@80: joachim99@80: struct KCmdLineOptionsItem joachim99@80: { joachim99@80: QString name; joachim99@80: QString description; joachim99@80: int def; joachim99@80: }; joachim99@80: static QList s_options; joachim99@8: joachim99@102: static std::vector s_vOption; joachim99@80: static std::vector s_vArg; joachim99@80: joachim99@80: KCmdLineOptions& KCmdLineOptions::add( const QString& name, const QString& description ) joachim99@80: { joachim99@80: KCmdLineOptionsItem i; joachim99@80: i.name = name; joachim99@80: i.description = description; joachim99@80: i.def = 0; joachim99@80: s_options.push_back(i); joachim99@80: return *this; joachim99@80: } joachim99@8: joachim99@8: KCmdLineArgs* KCmdLineArgs::parsedArgs() // static joachim99@8: { joachim99@51: return &s_cmdLineArgs; joachim99@8: } joachim99@8: joachim99@66: void KCmdLineArgs::init( int argc, char**argv, KAboutData* pAboutData ) // static joachim99@8: { joachim99@8: s_argc = argc; joachim99@8: s_argv = argv; joachim99@66: s_pAboutData = pAboutData; joachim99@8: } joachim99@8: joachim99@80: void KCmdLineArgs::addCmdLineOptions( const KCmdLineOptions& /*options*/ ) // static joachim99@8: { joachim99@80: //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@80: return 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@80: QString optName = s_options[j].name; joachim99@80: int pos = optName.indexOf( ' ' ); joachim99@80: int len = pos==-1 ? optName.length() : pos; joachim99@8: joachim99@80: if( s == optName.left( len ) ) 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@80: QStringList 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@80: QString optName = s_options[j].name; joachim99@80: int pos = optName.indexOf( ' ' ); joachim99@80: int len = pos==-1 ? optName.length() : pos; joachim99@8: joachim99@80: if( s == optName.left( len ) ) joachim99@8: { joachim99@8: return s_vOption[j]; joachim99@8: } joachim99@8: } joachim99@8: joachim99@8: assert(false); joachim99@80: return QStringList(); 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@80: QString optName = s_options[j].name; joachim99@80: if( s == 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@80: 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@80: //setStyle( new QWindowsStyle ); // doesn't show checkmarks on checkable icons in menu joachim99@80: joachim99@8: int nofOptions=0; joachim99@8: int nofArgs=0; joachim99@8: int i=0; joachim99@80: while( i < s_options.size() ) joachim99@8: { joachim99@80: if ( s_options[i].name[0]=='[' ) joachim99@8: nofArgs++; joachim99@8: else joachim99@8: nofOptions++; joachim99@8: joachim99@8: ++i; joachim99@8: } joachim99@8: joachim99@102: QStringList args = QCoreApplication::arguments(); joachim99@69: // First find the option "-config" or "--config" to allow loading of options joachim99@69: QString configFileName; joachim99@102: for( i=1; i0 && ( (arg[1]=='-' && len2-2==len && optName.left(len) == arg.mid(2,len)) || joachim99@99: (len2-1==len && optName.left(len) == arg.mid(1,len)) )) joachim99@8: { joachim99@80: if (s_options[j].description == 0) // alias, because without description. joachim99@8: { joachim99@8: ++j; joachim99@80: optName = s_options[j].name; joachim99@80: pos = optName.indexOf( ' ' ); joachim99@8: } joachim99@102: if (pos!=-1){ ++i; s_vOption[j].append( args[i] ); } //use param joachim99@80: else { s_vOption[j].append("1"); } //set state joachim99@8: break; joachim99@8: } joachim99@8: } joachim99@8: if (j==nofOptions) joachim99@8: { joachim99@58: QString s; joachim99@80: s = QString("Unknown option: ") + arg + "\n"; joachim99@69: s += "If KDiff3 should ignore this option, run KDiff3 normally and edit\n" joachim99@69: "the \"Command line options to ignore\" in the \"Integration Settings\".\n\n"; joachim99@8: joachim99@58: s += "KDiff3-Usage when starting via commandline: \n"; joachim99@58: s += "- Comparing 2 files:\t\tkdiff3 file1 file2\n"; joachim99@58: s += "- Merging 2 files: \t\tkdiff3 file1 file2 -o outputfile\n"; joachim99@58: s += "- Comparing 3 files:\t\tkdiff3 file1 file2 file3\n"; joachim99@58: s += "- Merging 3 files: \t\tkdiff3 file1 file2 file3 -o outputfile\n"; joachim99@58: s += " Note that file1 will be treated as base of file2 and file3.\n"; joachim99@58: s += "\n"; joachim99@58: s += "If you start without arguments, then a dialog will appear\n"; joachim99@58: s += "where you can select your files via a filebrowser.\n"; joachim99@58: s += "\n"; joachim99@66: joachim99@66: s += "Options:\n"; joachim99@66: joachim99@66: j=0; joachim99@66: int pos=s.length(); joachim99@66: for( j=0; j1 ) s += "-"; joachim99@66: } joachim99@80: s += s_options[j].name; joachim99@66: s += QString().fill(' ', minMaxLimiter( 20 - ((int)s.length()-pos), 3, 20 ) ); joachim99@80: s += s_options[j].description; joachim99@66: s +="\n"; joachim99@66: pos=s.length(); joachim99@66: } joachim99@66: else joachim99@66: { joachim99@66: s += "-"; joachim99@80: if ( s_options[j].name.length()>1 ) s += "-"; joachim99@80: s += s_options[j].name; joachim99@66: s += ", "; joachim99@66: } joachim99@66: } joachim99@69: joachim99@69: s += "\n"+i18n("For more documentation, see the help-menu or the subdirectory doc.")+"\n"; joachim99@95: #if defined(_WIN32) || defined(Q_OS_OS2) joachim99@58: // A windows program has no console joachim99@69: if ( 0==QMessageBox::information(0, i18n("KDiff3-Usage"), s, i18n("Ignore"),i18n("Exit") ) ) joachim99@69: continue; joachim99@58: #else joachim99@75: std::cerr << s.toLatin1().constData() << std::endl; joachim99@58: #endif joachim99@69: joachim99@8: ::exit(-1); joachim99@8: } joachim99@8: } joachim99@8: else joachim99@80: s_vArg.push_back( arg ); joachim99@8: } joachim99@8: } joachim99@8: joachim99@80: KConfigGroup* KApplication::config() joachim99@8: { joachim99@8: return &m_config; joachim99@8: } joachim99@8: joachim99@8: bool KApplication::isRestored() joachim99@8: { joachim99@8: return false; joachim99@8: } joachim99@8: joachim99@8: KApplication* KApplication::kApplication() joachim99@8: { joachim99@8: return kapp; joachim99@8: } joachim99@8: joachim99@8: KIconLoader* KApplication::iconLoader() joachim99@8: { joachim99@8: return &m_iconLoader; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: namespace KIO joachim99@8: { joachim99@80: SimpleJob* mkdir( KUrl ){return 0;} joachim99@80: SimpleJob* rmdir( KUrl ){return 0;} joachim99@80: SimpleJob* file_delete( KUrl, int ){return 0;} joachim99@80: FileCopyJob* file_move( KUrl, KUrl, int, int ) {return 0;} joachim99@80: FileCopyJob* file_copy( KUrl, KUrl, int, int ) {return 0;} joachim99@80: CopyJob* link( KUrl, KUrl, bool ) {return 0;} joachim99@80: ListJob* listRecursive( KUrl, bool, bool ){return 0;} joachim99@80: ListJob* listDir( KUrl, bool, bool ){return 0;} joachim99@80: StatJob* stat( KUrl, bool, int, int ){return 0;} joachim99@80: TransferJob* get( KUrl, int ){return (TransferJob*)0;} joachim99@80: TransferJob* put( KUrl, int, int ){return (TransferJob*)0;} joachim99@8: }; joachim99@8: joachim99@8: KActionCollection* KParts::Part::actionCollection() joachim99@8: { joachim99@8: return 0; joachim99@8: } joachim99@8: joachim99@8: KApplication* KParts::Part::instance() joachim99@8: { joachim99@8: return kapp; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: KLibLoader* KLibLoader::self() joachim99@8: { joachim99@8: static KLibLoader ll; joachim99@8: return ≪ joachim99@8: } joachim99@8: joachim99@8: extern "C" void* init_libkdiff3part(); joachim99@8: KLibFactory* KLibLoader::factory(QString const&) joachim99@8: { joachim99@8: return (KLibFactory*) init_libkdiff3part(); joachim99@8: } joachim99@8: joachim99@68: QObject* KLibFactory::create(QObject* pParent, const QString& name, const QString& classname ) joachim99@8: { joachim99@8: KParts::Factory* f = dynamic_cast(this); joachim99@8: if (f!=0) Chris@111: return f->createPartObject( (QWidget*)pParent, name.toLatin1(), Chris@111: pParent, name.toLatin1(), Chris@111: classname.toLatin1(), QStringList() ); joachim99@8: else joachim99@8: return 0; joachim99@8: } joachim99@8: joachim99@8: joachim99@8: joachim99@58: joachim99@80: //#include "kreplacements.moc"