annotate kdiff3/src/kreplacements/kreplacements.cpp @ 58:8af4bb9d9a5a

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