annotate kdiff3/src/kreplacements/kreplacements.cpp @ 71:88d8fab8691a

Fixed widget parent warning.
author joachim99
date Tue, 18 Apr 2006 20:45:59 +0000
parents 5bbfe4784324
children f7dad0aa6146
rev   line source
joachim99@8 1 /***************************************************************************
joachim99@8 2 kreplacements.cpp - description
joachim99@8 3 -------------------
joachim99@8 4 begin : Sat Aug 3 2002
joachim99@69 5 copyright : (C) 2002-2006 by Joachim Eibl
joachim99@69 6 email : joachim.eibl at gmx.de
joachim99@8 7 ***************************************************************************/
joachim99@8 8
joachim99@8 9 /***************************************************************************
joachim99@8 10 * *
joachim99@8 11 * This program is free software; you can redistribute it and/or modify *
joachim99@8 12 * it under the terms of the GNU General Public License as published by *
joachim99@8 13 * the Free Software Foundation; either version 2 of the License, or *
joachim99@8 14 * (at your option) any later version. *
joachim99@8 15 * *
joachim99@8 16 ***************************************************************************/
joachim99@8 17
joachim99@8 18
joachim99@8 19 #include "kreplacements.h"
joachim99@66 20 #include "common.h"
joachim99@8 21
joachim99@8 22 #include <assert.h>
joachim99@8 23
joachim99@8 24 #include <qnamespace.h>
joachim99@8 25 #include <qmessagebox.h>
joachim99@70 26 #include <q3popupmenu.h>
joachim99@8 27 #include <qmenubar.h>
joachim99@8 28 #include <qpainter.h>
joachim99@8 29 #include <qcolordialog.h>
joachim99@8 30 #include <qfontdialog.h>
joachim99@8 31 #include <qlabel.h>
joachim99@70 32 #include <q3textbrowser.h>
joachim99@8 33 #include <qtextstream.h>
joachim99@8 34 #include <qlayout.h>
joachim99@70 35 #include <q3dockarea.h>
joachim99@70 36 //Added by qt3to4:
joachim99@70 37 #include <QPaintEvent>
joachim99@70 38 #include <Q3VBoxLayout>
joachim99@70 39 #include <Q3Frame>
joachim99@70 40 #include <Q3CString>
joachim99@70 41 #include <Q3ValueList>
joachim99@70 42 #include <QPixmap>
joachim99@8 43
joachim99@8 44 #include <vector>
joachim99@8 45 #include <iostream>
joachim99@8 46 #include <algorithm>
joachim99@8 47
joachim99@66 48
joachim99@8 49 static QString s_copyright;
joachim99@8 50 static QString s_email;
joachim99@8 51 static QString s_description;
joachim99@8 52 static QString s_appName;
joachim99@8 53 static QString s_version;
joachim99@8 54 static QString s_homepage;
joachim99@66 55 static KAboutData* s_pAboutData;
joachim99@66 56
joachim99@8 57
joachim99@8 58 #ifdef _WIN32
joachim99@8 59 #include <process.h>
joachim99@8 60 #include <windows.h>
joachim99@8 61 #endif
joachim99@8 62
joachim99@8 63 static void showHelp()
joachim99@8 64 {
joachim99@8 65 #ifdef _WIN32
joachim99@8 66 char buf[200];
joachim99@8 67 int r= SearchPathA( 0, ".", 0, sizeof(buf), buf, 0 );
joachim99@8 68
joachim99@8 69 QString exePath;
joachim99@8 70 if (r!=0) { exePath = buf; }
joachim99@8 71 else { exePath = "."; }
joachim99@8 72
joachim99@34 73 QFileInfo helpFile( exePath + "\\doc\\en\\index.html" );
joachim99@34 74 if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\..\\doc\\en\\index.html" ); }
joachim99@34 75 if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\doc\\index.html" ); }
joachim99@34 76 if ( ! helpFile.exists() ) { helpFile.setFile( exePath + "\\..\\doc\\index.html" ); }
joachim99@8 77 if ( ! helpFile.exists() )
joachim99@8 78 {
joachim99@34 79 QMessageBox::warning( 0, "KDiff3 documentation not found",
joachim99@34 80 "Couldn't find the documentation. \n\n"
joachim99@34 81 "The documentation can also be found at the homepage:\n\n "
joachim99@34 82 " http://kdiff3.sourceforge.net/");
joachim99@34 83 return;
joachim99@8 84 }
joachim99@8 85
joachim99@68 86 HINSTANCE hi = FindExecutableA( helpFile.fileName().ascii(), helpFile.dirPath(true).ascii(), buf );
joachim99@34 87 if ( int(hi)<=32 )
joachim99@8 88 {
joachim99@70 89 static Q3TextBrowser* pBrowser = 0;
joachim99@8 90 if (pBrowser==0)
joachim99@8 91 {
joachim99@70 92 pBrowser = new Q3TextBrowser( 0 );
joachim99@8 93 pBrowser->setMinimumSize( 600, 400 );
joachim99@8 94 }
joachim99@8 95 pBrowser->setSource(helpFile.filePath());
joachim99@8 96 pBrowser->show();
joachim99@8 97 }
joachim99@8 98 else
joachim99@8 99 {
joachim99@8 100 QFileInfo prog( buf );
joachim99@68 101 _spawnlp( _P_NOWAIT , prog.filePath().ascii(), prog.fileName().ascii(), ("file:///"+helpFile.absFilePath()).ascii(), NULL );
joachim99@8 102 }
joachim99@8 103
joachim99@8 104 #else
joachim99@70 105 static Q3TextBrowser* pBrowser = 0;
joachim99@8 106 if (pBrowser==0)
joachim99@8 107 {
joachim99@70 108 pBrowser = new Q3TextBrowser( 0 );
joachim99@8 109 pBrowser->setMinimumSize( 600, 400 );
joachim99@8 110 }
joachim99@8 111 pBrowser->setSource("/usr/local/share/doc/kdiff3/en/index.html");
joachim99@8 112 pBrowser->show();
joachim99@8 113 #endif
joachim99@8 114 }
joachim99@8 115
joachim99@53 116 QString getTranslationDir()
joachim99@53 117 {
joachim99@53 118 #ifdef _WIN32
joachim99@53 119 char buf[200];
joachim99@53 120 int r= SearchPathA( 0, ".", 0, sizeof(buf), buf, 0 );
joachim99@53 121
joachim99@53 122 QString exePath;
joachim99@53 123 if (r!=0) { exePath = buf; }
joachim99@53 124 else { exePath = "."; }
joachim99@53 125 return exePath;
joachim99@53 126 #else
joachim99@53 127 return ".";
joachim99@53 128 #endif
joachim99@53 129 }
joachim99@8 130
joachim99@8 131 // static
joachim99@8 132 void KMessageBox::error( QWidget* parent, const QString& text, const QString& caption )
joachim99@8 133 {
joachim99@8 134 QMessageBox::critical( parent, caption, text );
joachim99@8 135 }
joachim99@8 136
joachim99@8 137 int KMessageBox::warningContinueCancel( QWidget* parent, const QString& text, const QString& caption,
joachim99@8 138 const QString& button1 )
joachim99@8 139 {
joachim99@34 140 return 0 == QMessageBox::warning( parent, caption, text, button1, "Cancel" ) ? Continue : Cancel;
joachim99@8 141 }
joachim99@8 142
joachim99@8 143 void KMessageBox::sorry( QWidget* parent, const QString& text, const QString& caption )
joachim99@8 144 {
joachim99@8 145 QMessageBox::information( parent, caption, text );
joachim99@8 146 }
joachim99@8 147
joachim99@8 148 void KMessageBox::information( QWidget* parent, const QString& text, const QString& caption )
joachim99@8 149 {
joachim99@8 150 QMessageBox::information( parent, caption, text );
joachim99@8 151 }
joachim99@8 152
joachim99@8 153 int KMessageBox::warningYesNo( QWidget* parent, const QString& text, const QString& caption,
joachim99@8 154 const QString& button1, const QString& button2 )
joachim99@8 155 {
joachim99@58 156 return 0 == QMessageBox::warning( parent, caption, text, button1, button2, QString::null, 1, 1 ) ? Yes : No;
joachim99@8 157 }
joachim99@8 158
joachim99@8 159 int KMessageBox::warningYesNoCancel( QWidget* parent, const QString& text, const QString& caption,
joachim99@8 160 const QString& button1, const QString& button2 )
joachim99@8 161 {
joachim99@34 162 int val = QMessageBox::warning( parent, caption, text,
joachim99@53 163 button1, button2, i18n("Cancel") );
joachim99@8 164 if ( val==0 ) return Yes;
joachim99@8 165 if ( val==1 ) return No;
joachim99@8 166 else return Cancel;
joachim99@8 167 }
joachim99@8 168
joachim99@8 169
joachim99@68 170 KDialogBase::KDialogBase( int, const QString& caption, int, int, QWidget* parent, const char* name,
joachim99@8 171 bool /*modal*/, bool )
joachim99@70 172 : Q3TabDialog( parent, name, true /* modal */ )
joachim99@8 173 {
joachim99@8 174 setCaption( caption );
joachim99@8 175 setDefaultButton();
joachim99@8 176 setHelpButton();
joachim99@8 177 setCancelButton();
joachim99@8 178 //setApplyButton();
joachim99@8 179 setOkButton();
joachim99@8 180 setDefaultButton();
joachim99@8 181
joachim99@8 182 connect( this, SIGNAL( defaultButtonPressed() ), this, SLOT(slotDefault()) );
joachim99@8 183 connect( this, SIGNAL( helpButtonPressed() ), this, SLOT(slotHelp()));
joachim99@8 184 connect( this, SIGNAL( applyButtonPressed() ), this, SLOT( slotApply() ));
joachim99@8 185 }
joachim99@8 186
joachim99@8 187 KDialogBase::~KDialogBase()
joachim99@8 188 {
joachim99@8 189 }
joachim99@8 190
joachim99@8 191 void KDialogBase::incInitialSize ( const QSize& )
joachim99@8 192 {
joachim99@8 193 }
joachim99@8 194
joachim99@8 195 void KDialogBase::setHelp(const QString&, const QString& )
joachim99@8 196 {
joachim99@8 197 }
joachim99@8 198
joachim99@8 199
joachim99@8 200 int KDialogBase::BarIcon(const QString& /*iconName*/, int )
joachim99@8 201 {
joachim99@8 202 return 0; // Not used for replacement.
joachim99@8 203 }
joachim99@8 204
joachim99@8 205
joachim99@70 206 Q3VBox* KDialogBase::addVBoxPage( const QString& name, const QString& /*info*/, int )
joachim99@8 207 {
joachim99@70 208 Q3VBox* p = new Q3VBox(this, name.ascii());
joachim99@8 209 addTab( p, name );
joachim99@8 210 return p;
joachim99@8 211 }
joachim99@8 212
joachim99@70 213 Q3Frame* KDialogBase::addPage( const QString& name, const QString& /*info*/, int )
joachim99@8 214 {
joachim99@71 215 Q3Frame* p = new Q3Frame(0);
joachim99@71 216 p->setObjectName( name );
joachim99@8 217 addTab( p, name );
joachim99@8 218 return p;
joachim99@8 219 }
joachim99@8 220
joachim99@8 221 int KDialogBase::spacingHint()
joachim99@8 222 {
joachim99@8 223 return 5;
joachim99@8 224 }
joachim99@8 225
joachim99@8 226 static bool s_inAccept = false;
joachim99@8 227 static bool s_bAccepted = false;
joachim99@8 228 void KDialogBase::accept()
joachim99@8 229 {
joachim99@8 230 if( ! s_inAccept )
joachim99@8 231 {
joachim99@8 232 s_bAccepted = false;
joachim99@8 233 s_inAccept = true;
joachim99@8 234 slotOk();
joachim99@8 235 s_inAccept = false;
joachim99@8 236 if ( s_bAccepted )
joachim99@70 237 Q3TabDialog::accept();
joachim99@8 238 }
joachim99@8 239 else
joachim99@8 240 {
joachim99@8 241 s_bAccepted = true;
joachim99@8 242 }
joachim99@8 243 }
joachim99@8 244
joachim99@8 245 void KDialogBase::slotDefault( )
joachim99@8 246 {
joachim99@8 247 }
joachim99@8 248 void KDialogBase::slotOk()
joachim99@8 249 {
joachim99@8 250 }
joachim99@8 251 void KDialogBase::slotCancel( )
joachim99@8 252 {
joachim99@8 253 }
joachim99@8 254 void KDialogBase::slotApply( )
joachim99@8 255 {
joachim99@8 256 emit applyClicked();
joachim99@8 257 }
joachim99@8 258 void KDialogBase::slotHelp( )
joachim99@8 259 {
joachim99@8 260 showHelp();
joachim99@8 261 }
joachim99@8 262
joachim99@8 263 KURL KFileDialog::getSaveURL( const QString &startDir,
joachim99@68 264 const QString &filter,
joachim99@68 265 QWidget *parent, const QString &caption)
joachim99@8 266 {
joachim99@70 267 QString s = Q3FileDialog::getSaveFileName(startDir, filter, parent, 0, caption);
joachim99@8 268 return KURL(s);
joachim99@8 269 }
joachim99@8 270
joachim99@8 271 KURL KFileDialog::getOpenURL( const QString & startDir,
joachim99@8 272 const QString & filter,
joachim99@8 273 QWidget * parent,
joachim99@8 274 const QString & caption )
joachim99@8 275 {
joachim99@70 276 QString s = Q3FileDialog::getOpenFileName(startDir, filter, parent, 0, caption);
joachim99@8 277 return KURL(s);
joachim99@8 278 }
joachim99@8 279
joachim99@8 280 KURL KFileDialog::getExistingURL( const QString & startDir,
joachim99@8 281 QWidget * parent,
joachim99@8 282 const QString & caption)
joachim99@8 283 {
joachim99@70 284 QString s = Q3FileDialog::getExistingDirectory(startDir, parent, 0, caption);
joachim99@8 285 return KURL(s);
joachim99@8 286 }
joachim99@8 287
joachim99@69 288 QString KFileDialog::getSaveFileName (const QString &startDir,
joachim99@69 289 const QString &filter,
joachim99@69 290 QWidget *parent,
joachim99@69 291 const QString &caption)
joachim99@69 292 {
joachim99@70 293 return Q3FileDialog::getSaveFileName( startDir, filter, parent, 0, caption );
joachim99@69 294 }
joachim99@69 295
joachim99@8 296
joachim99@8 297 KToolBar::BarPosition KToolBar::barPos()
joachim99@8 298 {
joachim99@66 299 if ( m_pMainWindow->leftDock()->hasDockWindow(this) ) return Left;
joachim99@66 300 if ( m_pMainWindow->rightDock()->hasDockWindow(this) ) return Right;
joachim99@66 301 if ( m_pMainWindow->topDock()->hasDockWindow(this) ) return Top;
joachim99@66 302 if ( m_pMainWindow->bottomDock()->hasDockWindow(this) ) return Bottom;
joachim99@8 303 return Top;
joachim99@8 304 }
joachim99@8 305
joachim99@66 306 void KToolBar::setBarPos(BarPosition bp)
joachim99@8 307 {
joachim99@70 308 if ( bp == Left ) m_pMainWindow->moveDockWindow( this, Qt::DockLeft );
joachim99@70 309 else if ( bp == Right ) m_pMainWindow->moveDockWindow( this, Qt::DockRight );
joachim99@70 310 else if ( bp == Bottom ) m_pMainWindow->moveDockWindow( this, Qt::DockBottom );
joachim99@70 311 else if ( bp == Top ) m_pMainWindow->moveDockWindow( this, Qt::DockTop );
joachim99@8 312 }
joachim99@8 313
joachim99@70 314 KToolBar::KToolBar( Q3MainWindow* parent )
joachim99@70 315 : Q3ToolBar( parent )
joachim99@8 316 {
joachim99@66 317 m_pMainWindow = parent;
joachim99@8 318 }
joachim99@8 319
joachim99@8 320
joachim99@68 321 KMainWindow::KMainWindow( QWidget* parent, const char* name )
joachim99@70 322 : Q3MainWindow( parent, name ), m_actionCollection(this)
joachim99@8 323 {
joachim99@70 324 fileMenu = new Q3PopupMenu();
joachim99@53 325 menuBar()->insertItem(i18n("&File"), fileMenu);
joachim99@70 326 editMenu = new Q3PopupMenu();
joachim99@53 327 menuBar()->insertItem(i18n("&Edit"), editMenu);
joachim99@70 328 directoryMenu = new Q3PopupMenu();
joachim99@53 329 menuBar()->insertItem(i18n("&Directory"), directoryMenu);
joachim99@51 330 dirCurrentItemMenu = 0;
joachim99@51 331 dirCurrentSyncItemMenu = 0;
joachim99@70 332 movementMenu = new Q3PopupMenu();
joachim99@53 333 menuBar()->insertItem(i18n("&Movement"), movementMenu);
joachim99@70 334 diffMenu = new Q3PopupMenu();
joachim99@66 335 menuBar()->insertItem(i18n("D&iffview"), diffMenu);
joachim99@70 336 mergeMenu = new Q3PopupMenu();
joachim99@53 337 menuBar()->insertItem(i18n("&Merge"), mergeMenu);
joachim99@70 338 windowsMenu = new Q3PopupMenu();
joachim99@53 339 menuBar()->insertItem(i18n("&Window"), windowsMenu);
joachim99@70 340 settingsMenu = new Q3PopupMenu();
joachim99@53 341 menuBar()->insertItem(i18n("&Settings"), settingsMenu);
joachim99@70 342 helpMenu = new Q3PopupMenu();
joachim99@53 343 menuBar()->insertItem(i18n("&Help"), helpMenu);
joachim99@8 344
joachim99@8 345 m_pToolBar = new KToolBar(this);
joachim99@8 346
joachim99@70 347 memberList = new QList<KMainWindow*>;
joachim99@8 348 memberList->append(this);
joachim99@8 349 }
joachim99@8 350
joachim99@8 351 KToolBar* KMainWindow::toolBar(const QString&)
joachim99@8 352 {
joachim99@8 353 return m_pToolBar;
joachim99@8 354 }
joachim99@8 355
joachim99@8 356 KActionCollection* KMainWindow::actionCollection()
joachim99@8 357 {
joachim99@8 358 return &m_actionCollection;
joachim99@8 359 }
joachim99@8 360
joachim99@8 361 void KMainWindow::createGUI()
joachim99@8 362 {
joachim99@8 363 KStdAction::help(this, SLOT(slotHelp()), actionCollection());
joachim99@8 364 KStdAction::about(this, SLOT(slotAbout()), actionCollection());
joachim99@69 365 KStdAction::aboutQt(actionCollection());
joachim99@8 366 }
joachim99@8 367
joachim99@8 368 void KMainWindow::slotAbout()
joachim99@8 369 {
joachim99@70 370 Q3TabDialog d;
joachim99@66 371 d.setCaption("About " + s_appName);
joachim99@70 372 Q3TextBrowser* tb1 = new Q3TextBrowser(&d);
joachim99@70 373 tb1->setWordWrap( Q3TextEdit::NoWrap );
joachim99@66 374 tb1->setText(
joachim99@66 375 s_appName + " Version " + s_version +
joachim99@66 376 "\n\n" + s_description +
joachim99@66 377 "\n\n" + s_copyright +
joachim99@66 378 "\n\nHomepage: " + s_homepage +
joachim99@66 379 "\n\nLicence: GNU GPL Version 2"
joachim99@66 380 );
joachim99@66 381 d.addTab(tb1,i18n("&About"));
joachim99@66 382
joachim99@66 383 std::list<KAboutData::AboutDataEntry>::iterator i;
joachim99@66 384
joachim99@66 385 QString s2;
joachim99@66 386 for( i=s_pAboutData->m_authorList.begin(); i!=s_pAboutData->m_authorList.end(); ++i )
joachim99@66 387 {
joachim99@66 388 if ( !i->m_name.isEmpty() ) s2 += i->m_name + "\n";
joachim99@66 389 if ( !i->m_task.isEmpty() ) s2 += " " + i->m_task + "\n";
joachim99@66 390 if ( !i->m_email.isEmpty() ) s2 += " " + i->m_email + "\n";
joachim99@66 391 if ( !i->m_weblink.isEmpty() ) s2 += " " + i->m_weblink + "\n";
joachim99@66 392 s2 += "\n";
joachim99@66 393 }
joachim99@70 394 Q3TextBrowser* tb2 = new Q3TextBrowser(&d);
joachim99@70 395 tb2->setWordWrap( Q3TextEdit::NoWrap );
joachim99@66 396 tb2->setText(s2);
joachim99@66 397 d.addTab(tb2,i18n("A&uthor"));
joachim99@66 398
joachim99@66 399 QString s3;
joachim99@66 400 for( i=s_pAboutData->m_creditList.begin(); i!=s_pAboutData->m_creditList.end(); ++i )
joachim99@66 401 {
joachim99@66 402 if ( !i->m_name.isEmpty() ) s3 += i->m_name + "\n";
joachim99@66 403 if ( !i->m_task.isEmpty() ) s3 += " " + i->m_task + "\n";
joachim99@66 404 if ( !i->m_email.isEmpty() ) s3 += " " + i->m_email + "\n";
joachim99@66 405 if ( !i->m_weblink.isEmpty() ) s3 += " " + i->m_weblink + "\n";
joachim99@66 406 s3 += "\n";
joachim99@66 407 }
joachim99@70 408 Q3TextBrowser* tb3 = new Q3TextBrowser(&d);
joachim99@70 409 tb3->setWordWrap( Q3TextEdit::NoWrap );
joachim99@66 410 tb3->setText(s3);
joachim99@66 411 d.addTab(tb3,i18n("&Thanks To"));
joachim99@66 412
joachim99@66 413 d.resize(400,300);
joachim99@66 414 d.exec();
joachim99@66 415 /*
joachim99@8 416 QMessageBox::information(
joachim99@8 417 this,
joachim99@8 418 "About " + s_appName,
joachim99@8 419 s_appName + " Version " + s_version +
joachim99@8 420 "\n\n" + s_description +
joachim99@8 421 "\n\n" + s_copyright +
joachim99@8 422 "\n\nHomepage: " + s_homepage +
joachim99@8 423 "\n\nLicence: GNU GPL Version 2"
joachim99@8 424 );
joachim99@66 425 */
joachim99@8 426 }
joachim99@8 427
joachim99@8 428 void KMainWindow::slotHelp()
joachim99@8 429 {
joachim99@8 430 showHelp();
joachim99@8 431 }
joachim99@8 432
joachim99@69 433
joachim99@69 434 QString KStandardDirs::findResource(const QString& resource, const QString& /*appName*/)
joachim99@69 435 {
joachim99@69 436 if (resource=="config")
joachim99@69 437 {
joachim99@69 438 QString home = QDir::homeDirPath();
joachim99@69 439 return home + "/.kdiff3rc";
joachim99@69 440 }
joachim99@69 441 return QString();
joachim99@69 442 }
joachim99@69 443
joachim99@8 444 KConfig::KConfig()
joachim99@8 445 {
joachim99@69 446 }
joachim99@69 447
joachim99@69 448 void KConfig::readConfigFile( const QString& configFileName )
joachim99@69 449 {
joachim99@69 450 if ( !configFileName.isEmpty() )
joachim99@69 451 {
joachim99@69 452 m_fileName = configFileName;
joachim99@69 453 }
joachim99@69 454 else
joachim99@69 455 {
joachim99@69 456 m_fileName = KStandardDirs().findResource("config","kdiff3rc");
joachim99@69 457 }
joachim99@8 458
joachim99@8 459 QFile f( m_fileName );
joachim99@70 460 if ( f.open(QIODevice::ReadOnly) )
joachim99@8 461 { // file opened successfully
joachim99@69 462 QTextStream t( &f ); // use a text stream
joachim99@69 463 load(t);
joachim99@8 464 f.close();
joachim99@8 465 }
joachim99@8 466 }
joachim99@8 467
joachim99@8 468 KConfig::~KConfig()
joachim99@8 469 {
joachim99@8 470 QFile f(m_fileName);
joachim99@70 471 if ( f.open( QIODevice::WriteOnly | QIODevice::Text ) )
joachim99@8 472 { // file opened successfully
joachim99@8 473 QTextStream t( &f ); // use a text stream
joachim99@69 474 save(t);
joachim99@8 475 f.close();
joachim99@8 476 }
joachim99@8 477 }
joachim99@8 478
joachim99@8 479 void KConfig::setGroup(const QString&)
joachim99@8 480 {
joachim99@8 481 }
joachim99@8 482
joachim99@68 483 void KAction::init(QObject* receiver, const char* slot, KActionCollection* actionCollection,
joachim99@68 484 const char* name, bool bToggle, bool bMenu)
joachim99@8 485 {
joachim99@68 486 QString n(name);
joachim99@8 487 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@8 488 if( slot!=0 )
joachim99@8 489 {
joachim99@8 490 if (!bToggle)
joachim99@8 491 connect(this, SIGNAL(activated()), receiver, slot);
joachim99@8 492 else
joachim99@8 493 {
joachim99@8 494 connect(this, SIGNAL(toggled(bool)), receiver, slot);
joachim99@8 495 }
joachim99@8 496 }
joachim99@8 497
joachim99@8 498 if (bMenu)
joachim99@8 499 {
joachim99@68 500 if( n[0]=='g') addTo( p->movementMenu );
joachim99@68 501 else if( n.left(16)=="dir_current_sync")
joachim99@53 502 {
joachim99@53 503 if ( p->dirCurrentItemMenu==0 )
joachim99@53 504 {
joachim99@70 505 p->dirCurrentItemMenu = new Q3PopupMenu();
joachim99@53 506 p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu);
joachim99@70 507 p->dirCurrentSyncItemMenu = new Q3PopupMenu();
joachim99@53 508 p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu);
joachim99@53 509 }
joachim99@53 510 addTo( p->dirCurrentItemMenu );
joachim99@53 511 }
joachim99@68 512 else if( n.left(11)=="dir_current")
joachim99@53 513 {
joachim99@53 514 if ( p->dirCurrentItemMenu==0 )
joachim99@53 515 {
joachim99@70 516 p->dirCurrentItemMenu = new Q3PopupMenu();
joachim99@53 517 p->directoryMenu->insertItem(i18n("Current Item Merge Operation"), p->dirCurrentItemMenu);
joachim99@70 518 p->dirCurrentSyncItemMenu = new Q3PopupMenu();
joachim99@53 519 p->directoryMenu->insertItem(i18n("Current Item Sync Operation"), p->dirCurrentSyncItemMenu);
joachim99@53 520 }
joachim99@53 521 addTo( p->dirCurrentSyncItemMenu );
joachim99@53 522 }
joachim99@68 523 else if( n.left(4)=="diff") addTo( p->diffMenu );
joachim99@8 524 else if( name[0]=='d') addTo( p->directoryMenu );
joachim99@8 525 else if( name[0]=='f') addTo( p->fileMenu );
joachim99@8 526 else if( name[0]=='w') addTo( p->windowsMenu );
joachim99@8 527 else addTo( p->mergeMenu );
joachim99@8 528 }
joachim99@8 529 }
joachim99@8 530
joachim99@68 531
joachim99@70 532 KAction::KAction(const QString& text, const QIcon& icon, int accel,
joachim99@68 533 QObject* receiver, const char* slot, KActionCollection* actionCollection,
joachim99@68 534 const char* name, bool bToggle, bool bMenu
joachim99@68 535 )
joachim99@70 536 : QAction ( icon, text, accel, actionCollection->m_pMainWindow, name )
joachim99@68 537 {
joachim99@70 538 setToggleAction( bToggle );
joachim99@68 539 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@68 540 if ( !icon.isNull() && p ) this->addTo( p->m_pToolBar );
joachim99@68 541
joachim99@68 542 init(receiver,slot,actionCollection,name,bToggle,bMenu);
joachim99@68 543 }
joachim99@68 544
joachim99@8 545 KAction::KAction(const QString& text, int accel,
joachim99@51 546 QObject* receiver, const char* slot, KActionCollection* actionCollection,
joachim99@68 547 const char* name, bool bToggle, bool bMenu
joachim99@8 548 )
joachim99@70 549 : QAction ( text, accel, actionCollection->m_pMainWindow, name )
joachim99@8 550 {
joachim99@70 551 setToggleAction( bToggle );
joachim99@68 552 init(receiver,slot,actionCollection,name,bToggle,bMenu);
joachim99@8 553 }
joachim99@8 554
joachim99@8 555 void KAction::setStatusText(const QString&)
joachim99@8 556 {
joachim99@8 557 }
joachim99@8 558
joachim99@70 559 void KAction::plug(Q3PopupMenu* menu)
joachim99@8 560 {
joachim99@8 561 addTo(menu);
joachim99@8 562 }
joachim99@8 563
joachim99@8 564
joachim99@70 565 KToggleAction::KToggleAction(const QString& text, const QIcon& icon, int accel, QObject* receiver, const char* slot, KActionCollection* actionCollection, const char* name, bool bMenu)
joachim99@51 566 : KAction( text, icon, accel, receiver, slot, actionCollection, name, true, bMenu)
joachim99@8 567 {
joachim99@8 568 }
joachim99@8 569
joachim99@68 570 KToggleAction::KToggleAction(const QString& text, int accel, QObject* receiver, const char* slot, KActionCollection* actionCollection, const char* name, bool bMenu)
joachim99@51 571 : KAction( text, accel, receiver, slot, actionCollection, name, true, bMenu)
joachim99@8 572 {
joachim99@8 573 }
joachim99@8 574
joachim99@70 575 KToggleAction::KToggleAction(const QString& text, const QIcon& icon, int accel, KActionCollection* actionCollection, const char* name, bool bMenu)
joachim99@8 576 : KAction( text, icon, accel, 0, 0, actionCollection, name, true, bMenu)
joachim99@8 577 {
joachim99@8 578 }
joachim99@8 579
joachim99@8 580 void KToggleAction::setChecked(bool bChecked)
joachim99@8 581 {
joachim99@8 582 blockSignals( true );
joachim99@8 583 setOn( bChecked );
joachim99@8 584 blockSignals( false );
joachim99@8 585 }
joachim99@8 586
joachim99@8 587 bool KToggleAction::isChecked()
joachim99@8 588 {
joachim99@8 589 return isOn();
joachim99@8 590 }
joachim99@8 591
joachim99@8 592
joachim99@8 593
joachim99@8 594 //static
joachim99@8 595 KAction* KStdAction::open( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 596 {
joachim99@8 597 #include "../xpm/fileopen.xpm"
joachim99@8 598 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@70 599 KAction* a = new KAction( i18n("Open"), QIcon(QPixmap(fileopen)), Qt::CTRL+Qt::Key_O, parent, slot, actionCollection, "open", false, false);
joachim99@8 600 if(p){ a->addTo( p->fileMenu ); }
joachim99@8 601 return a;
joachim99@8 602 }
joachim99@8 603
joachim99@8 604 KAction* KStdAction::save( QWidget* parent, const char* slot, KActionCollection* actionCollection )
joachim99@8 605 {
joachim99@8 606 #include "../xpm/filesave.xpm"
joachim99@8 607 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@70 608 KAction* a = new KAction( i18n("Save"), QIcon(QPixmap(filesave)), Qt::CTRL+Qt::Key_S, parent, slot, actionCollection, "save", false, false);
joachim99@8 609 if(p){ a->addTo( p->fileMenu ); }
joachim99@8 610 return a;
joachim99@8 611 }
joachim99@8 612
joachim99@8 613 KAction* KStdAction::saveAs( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 614 {
joachim99@8 615 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 616 KAction* a = new KAction( i18n("Save As..."), 0, parent, slot, actionCollection, "saveas", false, false);
joachim99@8 617 if(p) a->addTo( p->fileMenu );
joachim99@8 618 return a;
joachim99@8 619 }
joachim99@8 620
joachim99@69 621 KAction* KStdAction::print( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@69 622 {
joachim99@69 623 #include "../xpm/fileprint.xpm"
joachim99@69 624 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@70 625 KAction* a = new KAction( i18n("Print..."), QIcon(QPixmap(fileprint)),Qt::CTRL+Qt::Key_P, parent, slot, actionCollection, "print", false, false);
joachim99@69 626 if(p) a->addTo( p->fileMenu );
joachim99@69 627 return a;
joachim99@69 628 }
joachim99@69 629
joachim99@8 630 KAction* KStdAction::quit( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 631 {
joachim99@8 632 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 633 KAction* a = new KAction( i18n("Quit"), Qt::CTRL+Qt::Key_Q, parent, slot, actionCollection, "quit", false, false);
joachim99@8 634 if(p) a->addTo( p->fileMenu );
joachim99@8 635 return a;
joachim99@8 636 }
joachim99@8 637
joachim99@8 638 KAction* KStdAction::cut( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 639 {
joachim99@8 640 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 641 KAction* a = new KAction( i18n("Cut"), Qt::CTRL+Qt::Key_X, parent, slot, actionCollection, "cut", false, false );
joachim99@8 642 if(p) a->addTo( p->editMenu );
joachim99@8 643 return a;
joachim99@8 644 }
joachim99@8 645
joachim99@8 646 KAction* KStdAction::copy( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 647 {
joachim99@8 648 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 649 KAction* a = new KAction( i18n("Copy"), Qt::CTRL+Qt::Key_C, parent, slot, actionCollection, "copy", false, false );
joachim99@8 650 if(p) a->addTo( p->editMenu );
joachim99@8 651 return a;
joachim99@8 652 }
joachim99@8 653
joachim99@8 654 KAction* KStdAction::paste( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 655 {
joachim99@8 656 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 657 KAction* a = new KAction( i18n("Paste"), Qt::CTRL+Qt::Key_V, parent, slot, actionCollection, "paste", false, false );
joachim99@8 658 if(p) a->addTo( p->editMenu );
joachim99@8 659 return a;
joachim99@8 660 }
joachim99@8 661
joachim99@69 662 KAction* KStdAction::selectAll( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@69 663 {
joachim99@69 664 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@69 665 KAction* a = new KAction( i18n("Select All"), Qt::CTRL+Qt::Key_A, parent, slot, actionCollection, "selectall", false, false );
joachim99@69 666 if(p) a->addTo( p->editMenu );
joachim99@69 667 return a;
joachim99@69 668 }
joachim99@69 669
joachim99@8 670 KToggleAction* KStdAction::showToolbar( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 671 {
joachim99@8 672 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 673 KToggleAction* a = new KToggleAction( i18n("Show Toolbar"), 0, parent, slot, actionCollection, "showtoolbar", false );
joachim99@8 674 if(p) a->addTo( p->settingsMenu );
joachim99@8 675 return a;
joachim99@8 676 }
joachim99@8 677
joachim99@8 678 KToggleAction* KStdAction::showStatusbar( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 679 {
joachim99@8 680 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 681 KToggleAction* a = new KToggleAction( i18n("Show &Statusbar"), 0, parent, slot, actionCollection, "showstatusbar", false );
joachim99@8 682 if(p) a->addTo( p->settingsMenu );
joachim99@8 683 return a;
joachim99@8 684 }
joachim99@8 685
joachim99@8 686 KAction* KStdAction::preferences( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 687 {
joachim99@8 688 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 689 KAction* a = new KAction( i18n("&Configure %1...").arg("KDiff3"), 0, parent, slot, actionCollection, "settings", false, false );
joachim99@8 690 if(p) a->addTo( p->settingsMenu );
joachim99@8 691 return a;
joachim99@8 692 }
joachim99@8 693 KAction* KStdAction::keyBindings( QWidget*, const char*, KActionCollection*)
joachim99@8 694 {
joachim99@8 695 return 0;
joachim99@8 696 }
joachim99@8 697
joachim99@8 698 KAction* KStdAction::about( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 699 {
joachim99@8 700 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@69 701 KAction* a = new KAction( i18n("About")+" KDiff3", 0, parent, slot, actionCollection, "about_kdiff3", false, false );
joachim99@69 702 if(p) a->addTo( p->helpMenu );
joachim99@69 703 return a;
joachim99@69 704 }
joachim99@69 705
joachim99@69 706 KAction* KStdAction::aboutQt( KActionCollection* actionCollection )
joachim99@69 707 {
joachim99@69 708 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@69 709 KAction* a = new KAction( i18n("About")+" Qt", 0, qApp, SLOT(aboutQt()), actionCollection, "about_qt", false, false );
joachim99@8 710 if(p) a->addTo( p->helpMenu );
joachim99@8 711 return a;
joachim99@8 712 }
joachim99@8 713
joachim99@8 714 KAction* KStdAction::help( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 715 {
joachim99@8 716 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 717 KAction* a = new KAction( i18n("Help"), Qt::Key_F1, parent, slot, actionCollection, "help", false, false );
joachim99@8 718 if(p) a->addTo( p->helpMenu );
joachim99@8 719 return a;
joachim99@8 720 }
joachim99@8 721 KAction* KStdAction::find( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 722 {
joachim99@8 723 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 724 KAction* a = new KAction( i18n("Find"), Qt::CTRL+Qt::Key_F, parent, slot, actionCollection, "find", false, false );
joachim99@8 725 if(p) a->addTo( p->editMenu );
joachim99@8 726 return a;
joachim99@8 727 }
joachim99@8 728
joachim99@8 729 KAction* KStdAction::findNext( QWidget* parent, const char* slot, KActionCollection* actionCollection)
joachim99@8 730 {
joachim99@8 731 KMainWindow* p = actionCollection->m_pMainWindow;
joachim99@53 732 KAction* a = new KAction( i18n("Find Next"), Qt::Key_F3, parent, slot, actionCollection, "findNext", false, false );
joachim99@8 733 if(p) a->addTo( p->editMenu );
joachim99@8 734 return a;
joachim99@8 735 }
joachim99@8 736
joachim99@8 737
joachim99@8 738
joachim99@8 739
joachim99@8 740 KFontChooser::KFontChooser( QWidget* pParent, const QString& /*name*/, bool, const QStringList&, bool, int )
joachim99@8 741 : QWidget(pParent)
joachim99@8 742 {
joachim99@8 743 m_pParent = pParent;
joachim99@70 744 Q3VBoxLayout* pLayout = new Q3VBoxLayout( this );
joachim99@53 745 m_pSelectFont = new QPushButton(i18n("Select Font"), this );
joachim99@8 746 connect(m_pSelectFont, SIGNAL(clicked()), this, SLOT(slotSelectFont()));
joachim99@8 747 pLayout->addWidget(m_pSelectFont);
joachim99@8 748
joachim99@8 749 m_pLabel = new QLabel( "", this );
joachim99@8 750 m_pLabel->setFont( m_font );
joachim99@8 751 m_pLabel->setMinimumWidth(200);
joachim99@8 752 m_pLabel->setText( "The quick brown fox jumps over the river\n"
joachim99@8 753 "but the little red hen escapes with a shiver.\n"
joachim99@8 754 ":-)");
joachim99@8 755 pLayout->addWidget(m_pLabel);
joachim99@8 756 }
joachim99@8 757
joachim99@8 758 QFont KFontChooser::font()
joachim99@8 759 {
joachim99@8 760 return m_font;//QFont("courier",10);
joachim99@8 761 }
joachim99@8 762
joachim99@8 763 void KFontChooser::setFont( const QFont& font, bool )
joachim99@8 764 {
joachim99@8 765 m_font = font;
joachim99@8 766 m_pLabel->setFont( m_font );
joachim99@8 767 //update();
joachim99@8 768 }
joachim99@8 769
joachim99@8 770 void KFontChooser::slotSelectFont()
joachim99@8 771 {
joachim99@8 772 for(;;)
joachim99@8 773 {
joachim99@8 774 bool bOk;
joachim99@8 775 m_font = QFontDialog::getFont(&bOk, m_font );
joachim99@8 776 m_pLabel->setFont( m_font );
joachim99@8 777 QFontMetrics fm(m_font);
joachim99@8 778
joachim99@8 779 // Variable width font.
joachim99@8 780 if ( fm.width('W')!=fm.width('i') )
joachim99@8 781 {
joachim99@8 782 int result = KMessageBox::warningYesNo(m_pParent, i18n(
joachim99@8 783 "You selected a variable width font.\n\n"
joachim99@8 784 "Because this program doesn't handle variable width fonts\n"
joachim99@8 785 "correctly, you might experience problems while editing.\n\n"
joachim99@8 786 "Do you want to continue or do you want to select another font."),
joachim99@8 787 i18n("Incompatible font."),
joachim99@8 788 i18n("Continue at my own risk"), i18n("Select another font"));
joachim99@8 789 if (result==KMessageBox::Yes)
joachim99@8 790 return;
joachim99@8 791 }
joachim99@8 792 else
joachim99@8 793 return;
joachim99@8 794 }
joachim99@8 795 }
joachim99@8 796
joachim99@8 797
joachim99@8 798 KColorButton::KColorButton(QWidget* parent)
joachim99@8 799 : QPushButton(parent)
joachim99@8 800 {
joachim99@8 801 connect( this, SIGNAL(clicked()), this, SLOT(slotClicked()));
joachim99@8 802 }
joachim99@8 803
joachim99@8 804 QColor KColorButton::color()
joachim99@8 805 {
joachim99@8 806 return m_color;
joachim99@8 807 }
joachim99@8 808
joachim99@8 809 void KColorButton::setColor( const QColor& color )
joachim99@8 810 {
joachim99@8 811 m_color = color;
joachim99@8 812 update();
joachim99@8 813 }
joachim99@8 814
joachim99@8 815 void KColorButton::paintEvent( QPaintEvent* e )
joachim99@8 816 {
joachim99@8 817 QPushButton::paintEvent(e);
joachim99@8 818 QPainter p(this);
joachim99@8 819
joachim99@8 820 int w = width();
joachim99@8 821 int h = height();
joachim99@8 822 p.fillRect( 10, 5, w-20, h-10, m_color );
joachim99@8 823 p.drawRect( 10, 5, w-20, h-10 );
joachim99@8 824 }
joachim99@8 825
joachim99@8 826 void KColorButton::slotClicked()
joachim99@8 827 {
joachim99@8 828 // Under Windows ChooseColor() should be used. (Nicer if few colors exist.)
joachim99@8 829 QColor c = QColorDialog::getColor ( m_color, this );
joachim99@8 830 if ( c.isValid() ) m_color = c;
joachim99@8 831 update();
joachim99@8 832 }
joachim99@8 833
joachim99@69 834 KPrinter::KPrinter()
joachim99@69 835 {
joachim99@69 836 }
joachim99@70 837 Q3ValueList<int> KPrinter::pageList()
joachim99@69 838 {
joachim99@70 839 Q3ValueList<int> vl;
joachim99@69 840 int to = toPage();
joachim99@69 841 for(int i=fromPage(); i<=to; ++i)
joachim99@69 842 {
joachim99@69 843 vl.push_back(i);
joachim99@69 844 }
joachim99@69 845 return vl;
joachim99@69 846 }
joachim99@69 847 void KPrinter::setCurrentPage(int)
joachim99@69 848 {
joachim99@69 849 }
joachim99@69 850 void KPrinter::setPageSelection(e_PageSelection)
joachim99@69 851 {
joachim99@69 852 }
joachim99@69 853
joachim99@69 854
joachim99@8 855 QPixmap KIconLoader::loadIcon( const QString&, int )
joachim99@8 856 {
joachim99@8 857 return QPixmap();
joachim99@8 858 }
joachim99@8 859
joachim99@8 860 KAboutData::KAboutData( const QString& /*name*/, const QString& appName, const QString& version,
joachim99@8 861 const QString& description, int,
joachim99@8 862 const QString& copyright, int, const QString& homepage, const QString& email)
joachim99@8 863 {
joachim99@8 864 s_copyright = copyright;
joachim99@8 865 s_email = email;
joachim99@8 866 s_appName = appName;
joachim99@8 867 s_description = description;
joachim99@8 868 s_version = version;
joachim99@8 869 s_homepage = homepage;
joachim99@8 870 }
joachim99@8 871
joachim99@51 872 KAboutData::KAboutData( const QString& /*name*/, const QString& /*appName*/, const QString& /*version*/ )
joachim99@8 873 {
joachim99@8 874 }
joachim99@8 875
joachim99@66 876 void KAboutData::addAuthor(const char* name, const char* task, const char* email, const char* weblink)
joachim99@8 877 {
joachim99@66 878 m_authorList.push_back( AboutDataEntry( name, task, email, weblink) );
joachim99@66 879 }
joachim99@66 880
joachim99@66 881 void KAboutData::addCredit(const char* name, const char* task, const char* email, const char* weblink)
joachim99@66 882 {
joachim99@66 883 m_creditList.push_back( AboutDataEntry( name, task, email, weblink) );
joachim99@8 884 }
joachim99@8 885
joachim99@8 886 /* Option structure: e.g.:
joachim99@8 887 { "m", 0, 0 },
joachim99@8 888 { "merge", I18N_NOOP("Automatically merge the input."), 0 },
joachim99@8 889 { "o", 0, 0 },
joachim99@8 890 { "output file", I18N_NOOP("Output file. Implies -m. E.g.: -o newfile.txt"), 0 },
joachim99@8 891 { "+[File1]", I18N_NOOP("file1 to open (base)"), 0 },
joachim99@8 892 { "+[File2]", I18N_NOOP("file2 to open"), 0 },
joachim99@8 893 { "+[File3]", I18N_NOOP("file3 to open"), 0 },
joachim99@8 894 */
joachim99@8 895 ////////////////
joachim99@8 896 static KCmdLineArgs s_cmdLineArgs;
joachim99@8 897 static int s_argc;
joachim99@8 898 static char** s_argv;
joachim99@8 899 static KCmdLineOptions* s_pOptions;
joachim99@8 900
joachim99@8 901 static std::vector<QCStringList> s_vOption;
joachim99@8 902 static std::vector<const char*> s_vArg;
joachim99@8 903
joachim99@8 904 KCmdLineArgs* KCmdLineArgs::parsedArgs() // static
joachim99@8 905 {
joachim99@51 906 return &s_cmdLineArgs;
joachim99@8 907 }
joachim99@8 908
joachim99@66 909 void KCmdLineArgs::init( int argc, char**argv, KAboutData* pAboutData ) // static
joachim99@8 910 {
joachim99@8 911 s_argc = argc;
joachim99@8 912 s_argv = argv;
joachim99@66 913 s_pAboutData = pAboutData;
joachim99@8 914 }
joachim99@8 915
joachim99@8 916 void KCmdLineArgs::addCmdLineOptions( KCmdLineOptions* options ) // static
joachim99@8 917 {
joachim99@8 918 s_pOptions = options;
joachim99@8 919 }
joachim99@8 920
joachim99@8 921 int KCmdLineArgs::count()
joachim99@8 922 {
joachim99@8 923 return s_vArg.size();
joachim99@8 924 }
joachim99@8 925
joachim99@8 926 QString KCmdLineArgs::arg(int idx)
joachim99@8 927 {
joachim99@58 928 return QString::fromLocal8Bit( s_vArg[idx] );
joachim99@8 929 }
joachim99@8 930
joachim99@8 931 void KCmdLineArgs::clear()
joachim99@8 932 {
joachim99@8 933 }
joachim99@8 934
joachim99@8 935 QString KCmdLineArgs::getOption( const QString& s )
joachim99@8 936 {
joachim99@8 937 // Find the option
joachim99@8 938 int j=0;
joachim99@8 939 for( j=0; j<(int)s_vOption.size(); ++j )
joachim99@8 940 {
joachim99@69 941 const char* optName = s_pOptions[j].name;
joachim99@8 942 const char* pos = strchr( optName,' ' );
joachim99@8 943 int len = pos==0 ? strlen( optName ) : pos - optName;
joachim99@8 944
joachim99@70 945 if( s == (const char*)( Q3CString( optName, len+1) ) )
joachim99@8 946 {
joachim99@8 947 return s_vOption[j].isEmpty() ? QString() : s_vOption[j].last();
joachim99@8 948 }
joachim99@8 949 }
joachim99@8 950 assert(false);
joachim99@8 951 return QString();
joachim99@8 952 }
joachim99@8 953
joachim99@8 954 QCStringList KCmdLineArgs::getOptionList( const QString& s )
joachim99@8 955 {
joachim99@8 956 // Find the option
joachim99@8 957 int j=0;
joachim99@8 958 for( j=0; j<(int)s_vOption.size(); ++j )
joachim99@8 959 {
joachim99@69 960 const char* optName = s_pOptions[j].name;
joachim99@8 961 const char* pos = strchr( optName,' ' );
joachim99@8 962 int len = pos==0 ? strlen( optName ) : pos - optName;
joachim99@8 963
joachim99@70 964 if( s == (const char*)( Q3CString( optName, len+1) ) )
joachim99@8 965 {
joachim99@8 966 return s_vOption[j];
joachim99@8 967 }
joachim99@8 968 }
joachim99@8 969
joachim99@8 970 assert(false);
joachim99@8 971 return QCStringList();
joachim99@8 972 }
joachim99@8 973
joachim99@8 974 bool KCmdLineArgs::isSet(const QString& s)
joachim99@8 975 {
joachim99@8 976 // Find the option
joachim99@8 977 int j=0;
joachim99@8 978 for( j=0; j<(int)s_vOption.size(); ++j )
joachim99@8 979 {
joachim99@69 980 const char* optName = s_pOptions[j].name;
joachim99@8 981 if( s == QString( optName ) )
joachim99@8 982 {
joachim99@8 983 return ! s_vOption[j].isEmpty();
joachim99@8 984 }
joachim99@8 985 }
joachim99@8 986 assert(false);
joachim99@8 987 return false;
joachim99@8 988 }
joachim99@8 989
joachim99@8 990 ///////////////////
joachim99@8 991 KApplication* kapp;
joachim99@8 992
joachim99@8 993 KApplication::KApplication()
joachim99@8 994 : QApplication( s_argc,s_argv )
joachim99@8 995 {
joachim99@8 996 kapp = this;
joachim99@8 997
joachim99@8 998 int nofOptions=0;
joachim99@8 999 int nofArgs=0;
joachim99@8 1000 int i=0;
joachim99@69 1001 while( s_pOptions[i].name != 0 )
joachim99@8 1002 {
joachim99@69 1003 if ( s_pOptions[i].name[0]=='[' )
joachim99@8 1004 nofArgs++;
joachim99@8 1005 else
joachim99@8 1006 nofOptions++;
joachim99@8 1007
joachim99@8 1008 ++i;
joachim99@8 1009 }
joachim99@8 1010
joachim99@69 1011 // First find the option "-config" or "--config" to allow loading of options
joachim99@69 1012 QString configFileName;
joachim99@69 1013 for( i=1; i<s_argc-1; ++i )
joachim99@69 1014 {
joachim99@69 1015 QString arg = s_argv[i];
joachim99@69 1016 if ( arg == "-config" || arg == "--config" )
joachim99@69 1017 {
joachim99@69 1018 configFileName = s_argv[i+1];
joachim99@69 1019 }
joachim99@69 1020 }
joachim99@69 1021 m_config.readConfigFile(configFileName);
joachim99@69 1022
joachim99@70 1023 QStringList ignorableCmdLineOptionsList = m_config.readListEntry("IgnorableCmdLineOptions", QStringList("-u;-query;-html;-abort"), '|');
joachim99@69 1024 QString ignorableCmdLineOptions;
joachim99@69 1025 if ( !ignorableCmdLineOptionsList.isEmpty() )
joachim99@69 1026 ignorableCmdLineOptions = ignorableCmdLineOptionsList.front() + ";";
joachim99@69 1027
joachim99@8 1028 s_vOption.resize(nofOptions);
joachim99@8 1029
joachim99@8 1030 for( i=1; i<s_argc; ++i )
joachim99@8 1031 {
joachim99@8 1032 if ( s_argv[i][0]=='-' ) // An option
joachim99@8 1033 {
joachim99@69 1034 if ( ignorableCmdLineOptions.contains(QString(s_argv[i])+";") )
joachim99@69 1035 continue;
joachim99@8 1036 // Find the option
joachim99@8 1037 int j=0;
joachim99@8 1038 for( j=0; j<nofOptions; ++j )
joachim99@8 1039 {
joachim99@69 1040 const char* optName = s_pOptions[j].name;
joachim99@8 1041 const char* pos = strchr( optName,' ' );
joachim99@8 1042 int len = pos==0 ? strlen( optName ) : pos - optName;
joachim99@69 1043 int len2 = strlen(s_argv[i]);
joachim99@8 1044
joachim99@69 1045 if( len>0 && ( s_argv[i][1]=='-' && len2-2==len && memcmp( &s_argv[i][2], optName, len )==0 ||
joachim99@69 1046 len2-1==len && memcmp( &s_argv[i][1], optName, len )==0 ))
joachim99@8 1047 {
joachim99@69 1048 if (s_pOptions[j].description == 0) // alias, because without description.
joachim99@8 1049 {
joachim99@8 1050 ++j;
joachim99@69 1051 optName = s_pOptions[j].name;
joachim99@8 1052 pos = strchr( optName,' ' );
joachim99@8 1053 }
joachim99@8 1054 if (pos!=0){ ++i; s_vOption[j].append(s_argv[i]); } //use param
joachim99@8 1055 else { s_vOption[j].append("1"); } //set state
joachim99@8 1056 break;
joachim99@8 1057 }
joachim99@8 1058 }
joachim99@8 1059 if (j==nofOptions)
joachim99@8 1060 {
joachim99@58 1061 QString s;
joachim99@70 1062 s = QString("Unknown option: ") + QString(s_argv[i]) + "\n";
joachim99@69 1063 s += "If KDiff3 should ignore this option, run KDiff3 normally and edit\n"
joachim99@69 1064 "the \"Command line options to ignore\" in the \"Integration Settings\".\n\n";
joachim99@8 1065
joachim99@58 1066 s += "KDiff3-Usage when starting via commandline: \n";
joachim99@58 1067 s += "- Comparing 2 files:\t\tkdiff3 file1 file2\n";
joachim99@58 1068 s += "- Merging 2 files: \t\tkdiff3 file1 file2 -o outputfile\n";
joachim99@58 1069 s += "- Comparing 3 files:\t\tkdiff3 file1 file2 file3\n";
joachim99@58 1070 s += "- Merging 3 files: \t\tkdiff3 file1 file2 file3 -o outputfile\n";
joachim99@58 1071 s += " Note that file1 will be treated as base of file2 and file3.\n";
joachim99@58 1072 s += "\n";
joachim99@58 1073 s += "If you start without arguments, then a dialog will appear\n";
joachim99@58 1074 s += "where you can select your files via a filebrowser.\n";
joachim99@58 1075 s += "\n";
joachim99@66 1076
joachim99@66 1077 s += "Options:\n";
joachim99@66 1078
joachim99@66 1079 j=0;
joachim99@66 1080 int pos=s.length();
joachim99@66 1081 for( j=0; j<nofOptions; ++j )
joachim99@66 1082 {
joachim99@69 1083 if ( s_pOptions[j].description!=0 )
joachim99@66 1084 {
joachim99@69 1085 if (s_pOptions[j].name[0]!='+')
joachim99@66 1086 {
joachim99@66 1087 s += "-";
joachim99@69 1088 if ( strlen(s_pOptions[j].name)>1 ) s += "-";
joachim99@66 1089 }
joachim99@69 1090 s += s_pOptions[j].name;
joachim99@66 1091 s += QString().fill(' ', minMaxLimiter( 20 - ((int)s.length()-pos), 3, 20 ) );
joachim99@69 1092 s += s_pOptions[j].description;
joachim99@66 1093 s +="\n";
joachim99@66 1094 pos=s.length();
joachim99@66 1095 }
joachim99@66 1096 else
joachim99@66 1097 {
joachim99@66 1098 s += "-";
joachim99@69 1099 if ( strlen(s_pOptions[j].name)>1 ) s += "-";
joachim99@69 1100 s += s_pOptions[j].name;
joachim99@66 1101 s += ", ";
joachim99@66 1102 }
joachim99@66 1103 }
joachim99@69 1104
joachim99@69 1105 s += "\n"+i18n("For more documentation, see the help-menu or the subdirectory doc.")+"\n";
joachim99@69 1106 #ifdef _WIN32
joachim99@58 1107 // A windows program has no console
joachim99@69 1108 if ( 0==QMessageBox::information(0, i18n("KDiff3-Usage"), s, i18n("Ignore"),i18n("Exit") ) )
joachim99@69 1109 continue;
joachim99@58 1110 #else
joachim99@58 1111 std::cerr << s.latin1() << std::endl;
joachim99@58 1112 #endif
joachim99@69 1113
joachim99@8 1114 ::exit(-1);
joachim99@8 1115 }
joachim99@8 1116 }
joachim99@8 1117 else
joachim99@8 1118 s_vArg.push_back( s_argv[i] );
joachim99@8 1119 }
joachim99@8 1120 }
joachim99@8 1121
joachim99@8 1122 KConfig* KApplication::config()
joachim99@8 1123 {
joachim99@8 1124 return &m_config;
joachim99@8 1125 }
joachim99@8 1126
joachim99@8 1127 bool KApplication::isRestored()
joachim99@8 1128 {
joachim99@8 1129 return false;
joachim99@8 1130 }
joachim99@8 1131
joachim99@8 1132 KApplication* KApplication::kApplication()
joachim99@8 1133 {
joachim99@8 1134 return kapp;
joachim99@8 1135 }
joachim99@8 1136
joachim99@8 1137 KIconLoader* KApplication::iconLoader()
joachim99@8 1138 {
joachim99@8 1139 return &m_iconLoader;
joachim99@8 1140 }
joachim99@8 1141
joachim99@8 1142
joachim99@8 1143 namespace KIO
joachim99@8 1144 {
joachim99@8 1145 SimpleJob* mkdir( KURL ){return 0;}
joachim99@8 1146 SimpleJob* rmdir( KURL ){return 0;}
joachim99@8 1147 SimpleJob* file_delete( KURL, bool ){return 0;}
joachim99@8 1148 FileCopyJob* file_move( KURL, KURL, int, bool, bool, bool ) {return 0;}
joachim99@8 1149 FileCopyJob* file_copy( KURL, KURL, int, bool, bool, bool ) {return 0;}
joachim99@8 1150 CopyJob* link( KURL, KURL, bool ) {return 0;}
joachim99@8 1151 ListJob* listRecursive( KURL, bool, bool ){return 0;}
joachim99@8 1152 ListJob* listDir( KURL, bool, bool ){return 0;}
joachim99@8 1153 StatJob* stat( KURL, bool, int, bool ){return 0;}
joachim99@8 1154 TransferJob* get( KURL, bool, bool ){return (TransferJob*)0;}
joachim99@8 1155 TransferJob* put( KURL, int, bool, bool, bool ){return (TransferJob*)0;}
joachim99@8 1156 };
joachim99@8 1157
joachim99@8 1158 KActionCollection* KParts::Part::actionCollection()
joachim99@8 1159 {
joachim99@8 1160 return 0;
joachim99@8 1161 }
joachim99@8 1162
joachim99@8 1163 KApplication* KParts::Part::instance()
joachim99@8 1164 {
joachim99@8 1165 return kapp;
joachim99@8 1166 }
joachim99@8 1167
joachim99@8 1168
joachim99@8 1169 KLibLoader* KLibLoader::self()
joachim99@8 1170 {
joachim99@8 1171 static KLibLoader ll;
joachim99@8 1172 return &ll;
joachim99@8 1173 }
joachim99@8 1174
joachim99@8 1175 extern "C" void* init_libkdiff3part();
joachim99@8 1176 KLibFactory* KLibLoader::factory(QString const&)
joachim99@8 1177 {
joachim99@8 1178 return (KLibFactory*) init_libkdiff3part();
joachim99@8 1179 }
joachim99@8 1180
joachim99@68 1181 QObject* KLibFactory::create(QObject* pParent, const QString& name, const QString& classname )
joachim99@8 1182 {
joachim99@8 1183 KParts::Factory* f = dynamic_cast<KParts::Factory*>(this);
joachim99@8 1184 if (f!=0)
joachim99@68 1185 return f->createPartObject( (QWidget*)pParent, name.ascii(),
joachim99@68 1186 pParent, name.ascii(),
joachim99@68 1187 classname.ascii(), QStringList() );
joachim99@8 1188 else
joachim99@8 1189 return 0;
joachim99@8 1190 }
joachim99@8 1191
joachim99@8 1192
joachim99@8 1193
joachim99@58 1194
joachim99@8 1195 #include "kreplacements.moc"