annotate kdiff3/src/optiondialog.cpp @ 68:d7cafcda8c99

KDiff3 0.9.87
author joachim99
date Mon, 31 Jan 2005 22:30:47 +0000
parents efe33e938730
children 8febbfb1148c
rev   line source
joachim99@8 1 /*
joachim99@8 2 * kdiff3 - Text Diff And Merge Tool
joachim99@8 3 * This file only: Copyright (C) 2002 Joachim Eibl, joachim.eibl@gmx.de
joachim99@8 4 *
joachim99@8 5 * This program is free software; you can redistribute it and/or modify
joachim99@8 6 * it under the terms of the GNU General Public License as published by
joachim99@8 7 * the Free Software Foundation; either version 2 of the License, or
joachim99@8 8 * (at your option) any later version.
joachim99@8 9 *
joachim99@8 10 * This program is distributed in the hope that it will be useful,
joachim99@8 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
joachim99@8 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
joachim99@8 13 * GNU General Public License for more details.
joachim99@8 14 *
joachim99@8 15 * You should have received a copy of the GNU General Public License
joachim99@8 16 * along with this program; if not, write to the Free Software
joachim99@8 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
joachim99@8 18 *
joachim99@8 19 */
joachim99@8 20
joachim99@8 21 #include <qcheckbox.h>
joachim99@8 22 #include <qcombobox.h>
joachim99@8 23 #include <qfont.h>
joachim99@8 24 #include <qframe.h>
joachim99@8 25 #include <qlayout.h>
joachim99@8 26 #include <qlabel.h>
joachim99@8 27 #include <qlineedit.h>
joachim99@8 28 #include <qvbox.h>
joachim99@8 29 #include <qvalidator.h>
joachim99@8 30 #include <qtooltip.h>
joachim99@58 31 #include <qtextcodec.h>
joachim99@66 32 #include <qradiobutton.h>
joachim99@66 33 #include <qvbuttongroup.h>
joachim99@8 34
joachim99@8 35 #include <kapplication.h>
joachim99@8 36 #include <kcolorbtn.h>
joachim99@8 37 #include <kfontdialog.h> // For KFontChooser
joachim99@8 38 #include <kiconloader.h>
joachim99@8 39 #include <klocale.h>
joachim99@8 40 #include <kconfig.h>
joachim99@8 41 #include <kmessagebox.h>
joachim99@8 42 //#include <kkeydialog.h>
joachim99@58 43 #include <map>
joachim99@8 44
joachim99@8 45 #include "optiondialog.h"
joachim99@8 46 #include "diff.h"
joachim99@8 47
joachim99@66 48 #ifndef KREPLACEMENTS_H
joachim99@66 49 #include <kglobalsettings.h>
joachim99@66 50 #endif
joachim99@66 51
joachim99@8 52 void OptionDialog::addOptionItem(OptionItem* p)
joachim99@8 53 {
joachim99@8 54 m_optionItemList.push_back(p);
joachim99@8 55 }
joachim99@8 56
joachim99@8 57 class OptionItem
joachim99@8 58 {
joachim99@8 59 public:
joachim99@8 60 OptionItem( OptionDialog* pOptionDialog, QString saveName )
joachim99@8 61 {
joachim99@8 62 assert(pOptionDialog!=0);
joachim99@8 63 pOptionDialog->addOptionItem( this );
joachim99@8 64 m_saveName = saveName;
joachim99@8 65 }
joachim99@8 66 virtual ~OptionItem(){}
joachim99@8 67 virtual void setToDefault()=0;
joachim99@8 68 virtual void setToCurrent()=0;
joachim99@8 69 virtual void apply()=0;
joachim99@8 70 virtual void write(KConfig*)=0;
joachim99@8 71 virtual void read(KConfig*)=0;
joachim99@8 72 protected:
joachim99@8 73 QString m_saveName;
joachim99@8 74 };
joachim99@8 75
joachim99@8 76 class OptionCheckBox : public QCheckBox, public OptionItem
joachim99@8 77 {
joachim99@8 78 public:
joachim99@8 79 OptionCheckBox( QString text, bool bDefaultVal, const QString& saveName, bool* pbVar,
joachim99@8 80 QWidget* pParent, OptionDialog* pOD )
joachim99@8 81 : QCheckBox( text, pParent ), OptionItem( pOD, saveName )
joachim99@8 82 {
joachim99@8 83 m_pbVar = pbVar;
joachim99@8 84 m_bDefaultVal = bDefaultVal;
joachim99@8 85 }
joachim99@8 86 void setToDefault(){ setChecked( m_bDefaultVal ); }
joachim99@8 87 void setToCurrent(){ setChecked( *m_pbVar ); }
joachim99@8 88 void apply() { *m_pbVar = isChecked(); }
joachim99@8 89 void write(KConfig* config){ config->writeEntry(m_saveName, *m_pbVar ); }
joachim99@8 90 void read (KConfig* config){ *m_pbVar = config->readBoolEntry( m_saveName, *m_pbVar ); }
joachim99@8 91 private:
joachim99@8 92 OptionCheckBox( const OptionCheckBox& ); // private copy constructor without implementation
joachim99@8 93 bool* m_pbVar;
joachim99@8 94 bool m_bDefaultVal;
joachim99@8 95 };
joachim99@8 96
joachim99@66 97 class OptionRadioButton : public QRadioButton, public OptionItem
joachim99@66 98 {
joachim99@66 99 public:
joachim99@66 100 OptionRadioButton( QString text, bool bDefaultVal, const QString& saveName, bool* pbVar,
joachim99@66 101 QWidget* pParent, OptionDialog* pOD )
joachim99@66 102 : QRadioButton( text, pParent ), OptionItem( pOD, saveName )
joachim99@66 103 {
joachim99@66 104 m_pbVar = pbVar;
joachim99@66 105 m_bDefaultVal = bDefaultVal;
joachim99@66 106 }
joachim99@66 107 void setToDefault(){ setChecked( m_bDefaultVal ); }
joachim99@66 108 void setToCurrent(){ setChecked( *m_pbVar ); }
joachim99@66 109 void apply() { *m_pbVar = isChecked(); }
joachim99@66 110 void write(KConfig* config){ config->writeEntry(m_saveName, *m_pbVar ); }
joachim99@66 111 void read (KConfig* config){ *m_pbVar = config->readBoolEntry( m_saveName, *m_pbVar ); }
joachim99@66 112 private:
joachim99@66 113 OptionRadioButton( const OptionRadioButton& ); // private copy constructor without implementation
joachim99@66 114 bool* m_pbVar;
joachim99@66 115 bool m_bDefaultVal;
joachim99@66 116 };
joachim99@66 117
joachim99@51 118 class OptionToggleAction : public OptionItem
joachim99@51 119 {
joachim99@51 120 public:
joachim99@51 121 OptionToggleAction( bool bDefaultVal, const QString& saveName, bool* pbVar, OptionDialog* pOD )
joachim99@51 122 : OptionItem( pOD, saveName )
joachim99@51 123 {
joachim99@51 124 m_pbVar = pbVar;
joachim99@51 125 *m_pbVar = bDefaultVal;
joachim99@51 126 }
joachim99@51 127 void setToDefault(){}
joachim99@51 128 void setToCurrent(){}
joachim99@51 129 void apply() {}
joachim99@51 130 void write(KConfig* config){ config->writeEntry(m_saveName, *m_pbVar ); }
joachim99@51 131 void read (KConfig* config){ *m_pbVar = config->readBoolEntry( m_saveName, *m_pbVar ); }
joachim99@51 132 private:
joachim99@51 133 OptionToggleAction( const OptionToggleAction& ); // private copy constructor without implementation
joachim99@51 134 bool* m_pbVar;
joachim99@51 135 };
joachim99@51 136
joachim99@51 137
joachim99@8 138 class OptionColorButton : public KColorButton, public OptionItem
joachim99@8 139 {
joachim99@8 140 public:
joachim99@8 141 OptionColorButton( QColor defaultVal, const QString& saveName, QColor* pVar, QWidget* pParent, OptionDialog* pOD )
joachim99@8 142 : KColorButton( pParent ), OptionItem( pOD, saveName )
joachim99@8 143 {
joachim99@8 144 m_pVar = pVar;
joachim99@8 145 m_defaultVal = defaultVal;
joachim99@8 146 }
joachim99@8 147 void setToDefault(){ setColor( m_defaultVal ); }
joachim99@8 148 void setToCurrent(){ setColor( *m_pVar ); }
joachim99@8 149 void apply() { *m_pVar = color(); }
joachim99@8 150 void write(KConfig* config){ config->writeEntry(m_saveName, *m_pVar ); }
joachim99@8 151 void read (KConfig* config){ *m_pVar = config->readColorEntry( m_saveName, m_pVar ); }
joachim99@8 152 private:
joachim99@8 153 OptionColorButton( const OptionColorButton& ); // private copy constructor without implementation
joachim99@8 154 QColor* m_pVar;
joachim99@8 155 QColor m_defaultVal;
joachim99@8 156 };
joachim99@8 157
joachim99@58 158 class OptionLineEdit : public QComboBox, public OptionItem
joachim99@8 159 {
joachim99@8 160 public:
joachim99@8 161 OptionLineEdit( const QString& defaultVal, const QString& saveName, QString* pVar,
joachim99@8 162 QWidget* pParent, OptionDialog* pOD )
joachim99@58 163 : QComboBox( pParent ), OptionItem( pOD, saveName )
joachim99@8 164 {
joachim99@8 165 m_pVar = pVar;
joachim99@8 166 m_defaultVal = defaultVal;
joachim99@58 167 m_list.push_back(defaultVal);
joachim99@58 168 setEditable(true);
joachim99@8 169 }
joachim99@58 170 void setToDefault(){ setCurrentText( m_defaultVal ); }
joachim99@58 171 void setToCurrent(){ setCurrentText( *m_pVar ); }
joachim99@58 172 void apply() { *m_pVar = currentText(); insertText(); }
joachim99@58 173 void write(KConfig* config){ config->writeEntry( m_saveName, m_list, '|' ); }
joachim99@58 174 void read (KConfig* config){
joachim99@58 175 m_list = config->readListEntry( m_saveName, '|' );
joachim99@58 176 if ( !m_list.isEmpty() ) *m_pVar = m_list.front();
joachim99@58 177 clear();
joachim99@58 178 insertStringList(m_list);
joachim99@58 179 }
joachim99@8 180 private:
joachim99@58 181 void insertText()
joachim99@58 182 { // Check if the text exists. If yes remove it and
joachim99@58 183 QString current = currentText();
joachim99@58 184 m_list.remove( current );
joachim99@58 185 m_list.push_front( current );
joachim99@58 186 clear();
joachim99@58 187 if ( m_list.count()>10 ) m_list.erase( m_list.at(10), m_list.end() );
joachim99@58 188 insertStringList(m_list);
joachim99@58 189 }
joachim99@8 190 OptionLineEdit( const OptionLineEdit& ); // private copy constructor without implementation
joachim99@8 191 QString* m_pVar;
joachim99@8 192 QString m_defaultVal;
joachim99@58 193 QStringList m_list;
joachim99@8 194 };
joachim99@8 195
joachim99@8 196 #if defined QT_NO_VALIDATOR
joachim99@8 197 #error No validator
joachim99@8 198 #endif
joachim99@8 199 class OptionIntEdit : public QLineEdit, public OptionItem
joachim99@8 200 {
joachim99@8 201 public:
joachim99@8 202 OptionIntEdit( int defaultVal, const QString& saveName, int* pVar, int rangeMin, int rangeMax,
joachim99@8 203 QWidget* pParent, OptionDialog* pOD )
joachim99@8 204 : QLineEdit( pParent ), OptionItem( pOD, saveName )
joachim99@8 205 {
joachim99@8 206 m_pVar = pVar;
joachim99@8 207 m_defaultVal = defaultVal;
joachim99@51 208 QIntValidator* v = new QIntValidator(this);
joachim99@8 209 v->setRange( rangeMin, rangeMax );
joachim99@8 210 setValidator( v );
joachim99@8 211 }
joachim99@8 212 void setToDefault(){ QString s; s.setNum(m_defaultVal); setText( s ); }
joachim99@8 213 void setToCurrent(){ QString s; s.setNum(*m_pVar); setText( s ); }
joachim99@8 214 void apply() { const QIntValidator* v=static_cast<const QIntValidator*>(validator());
joachim99@8 215 *m_pVar = minMaxLimiter( text().toInt(), v->bottom(), v->top());
joachim99@8 216 setText( QString::number(*m_pVar) ); }
joachim99@8 217 void write(KConfig* config){ config->writeEntry(m_saveName, *m_pVar ); }
joachim99@8 218 void read (KConfig* config){ *m_pVar = config->readNumEntry( m_saveName, *m_pVar ); }
joachim99@8 219 private:
joachim99@8 220 OptionIntEdit( const OptionIntEdit& ); // private copy constructor without implementation
joachim99@8 221 int* m_pVar;
joachim99@8 222 int m_defaultVal;
joachim99@8 223 };
joachim99@8 224
joachim99@51 225 class OptionComboBox : public QComboBox, public OptionItem
joachim99@51 226 {
joachim99@51 227 public:
joachim99@58 228 OptionComboBox( int defaultVal, const QString& saveName, int* pVarNum,
joachim99@51 229 QWidget* pParent, OptionDialog* pOD )
joachim99@51 230 : QComboBox( pParent ), OptionItem( pOD, saveName )
joachim99@51 231 {
joachim99@58 232 m_pVarNum = pVarNum;
joachim99@58 233 m_pVarStr = 0;
joachim99@51 234 m_defaultVal = defaultVal;
joachim99@51 235 setEditable(false);
joachim99@51 236 }
joachim99@58 237 OptionComboBox( int defaultVal, const QString& saveName, QString* pVarStr,
joachim99@58 238 QWidget* pParent, OptionDialog* pOD )
joachim99@58 239 : QComboBox( pParent ), OptionItem( pOD, saveName )
joachim99@58 240 {
joachim99@58 241 m_pVarNum = 0;
joachim99@58 242 m_pVarStr = pVarStr;
joachim99@58 243 m_defaultVal = defaultVal;
joachim99@58 244 setEditable(false);
joachim99@58 245 }
joachim99@58 246 void setToDefault()
joachim99@58 247 {
joachim99@58 248 setCurrentItem( m_defaultVal );
joachim99@58 249 if (m_pVarStr!=0){ *m_pVarStr=currentText(); }
joachim99@58 250 }
joachim99@58 251 void setToCurrent()
joachim99@58 252 {
joachim99@58 253 if (m_pVarNum!=0) setCurrentItem( *m_pVarNum );
joachim99@58 254 else setText( *m_pVarStr );
joachim99@58 255 }
joachim99@58 256 void apply()
joachim99@58 257 {
joachim99@58 258 if (m_pVarNum!=0){ *m_pVarNum = currentItem(); }
joachim99@58 259 else { *m_pVarStr = currentText(); }
joachim99@58 260 }
joachim99@58 261 void write(KConfig* config)
joachim99@58 262 {
joachim99@58 263 if (m_pVarStr!=0) config->writeEntry(m_saveName, *m_pVarStr );
joachim99@58 264 else config->writeEntry(m_saveName, *m_pVarNum );
joachim99@58 265 }
joachim99@58 266 void read (KConfig* config)
joachim99@58 267 {
joachim99@58 268 if (m_pVarStr!=0) setText( config->readEntry( m_saveName, currentText() ) );
joachim99@58 269 else *m_pVarNum = config->readNumEntry( m_saveName, *m_pVarNum );
joachim99@58 270 }
joachim99@51 271 private:
joachim99@51 272 OptionComboBox( const OptionIntEdit& ); // private copy constructor without implementation
joachim99@58 273 int* m_pVarNum;
joachim99@58 274 QString* m_pVarStr;
joachim99@51 275 int m_defaultVal;
joachim99@58 276
joachim99@58 277 void setText(const QString& s)
joachim99@58 278 {
joachim99@58 279 // Find the string in the combobox-list, don't change the value if nothing fits.
joachim99@58 280 for( int i=0; i<count(); ++i )
joachim99@58 281 {
joachim99@58 282 if ( text(i)==s )
joachim99@58 283 {
joachim99@58 284 if (m_pVarNum!=0) *m_pVarNum = i;
joachim99@58 285 if (m_pVarStr!=0) *m_pVarStr = s;
joachim99@58 286 setCurrentItem(i);
joachim99@58 287 return;
joachim99@58 288 }
joachim99@58 289 }
joachim99@58 290 }
joachim99@51 291 };
joachim99@8 292
joachim99@68 293 class OptionEncodingComboBox : public QComboBox, public OptionItem
joachim99@68 294 {
joachim99@68 295 std::vector<QTextCodec*> m_codecVec;
joachim99@68 296 QTextCodec** m_ppVarCodec;
joachim99@68 297 public:
joachim99@68 298 OptionEncodingComboBox( const QString& saveName, QTextCodec** ppVarCodec,
joachim99@68 299 QWidget* pParent, OptionDialog* pOD )
joachim99@68 300 : QComboBox( pParent ), OptionItem( pOD, saveName )
joachim99@68 301 {
joachim99@68 302 m_ppVarCodec = ppVarCodec;
joachim99@68 303 insertCodec( i18n("Unicode, 8 bit"), QTextCodec::codecForName("UTF-8") );
joachim99@68 304 insertCodec( i18n("Unicode"), QTextCodec::codecForName("iso-10646-UCS-2") );
joachim99@68 305 insertCodec( i18n("Latin1"), QTextCodec::codecForName("iso 8859-1") );
joachim99@68 306
joachim99@68 307 // First sort codec names:
joachim99@68 308 std::map<QString, QTextCodec*> names;
joachim99@68 309 int i;
joachim99@68 310 for(i=0;;++i)
joachim99@68 311 {
joachim99@68 312 QTextCodec* c = QTextCodec::codecForIndex(i);
joachim99@68 313 if ( c==0 ) break;
joachim99@68 314 else names[QString(c->name()).upper()]=c;
joachim99@68 315 }
joachim99@68 316
joachim99@68 317 std::map<QString, QTextCodec*>::iterator it;
joachim99@68 318 for(it=names.begin();it!=names.end();++it)
joachim99@68 319 {
joachim99@68 320 insertCodec( "", it->second );
joachim99@68 321 }
joachim99@68 322
joachim99@68 323 QToolTip::add( this, i18n(
joachim99@68 324 "Change this if non-ASCII characters are not displayed correctly."
joachim99@68 325 ));
joachim99@68 326 }
joachim99@68 327 void insertCodec( const QString& visibleCodecName, QTextCodec* c )
joachim99@68 328 {
joachim99@68 329 if (c!=0)
joachim99@68 330 {
joachim99@68 331 for( unsigned int i=0; i<m_codecVec.size(); ++i )
joachim99@68 332 {
joachim99@68 333 if ( c==m_codecVec[i] )
joachim99@68 334 return; // don't insert any codec twice
joachim99@68 335 }
joachim99@68 336 insertItem( visibleCodecName.isEmpty() ? QString(c->name()) : visibleCodecName+" ("+c->name()+")", m_codecVec.size() );
joachim99@68 337 m_codecVec.push_back( c );
joachim99@68 338 }
joachim99@68 339 }
joachim99@68 340 void setToDefault()
joachim99@68 341 {
joachim99@68 342 setCurrentItem( 0 );
joachim99@68 343 if (m_ppVarCodec!=0){ *m_ppVarCodec=m_codecVec[0]; }
joachim99@68 344 }
joachim99@68 345 void setToCurrent()
joachim99@68 346 {
joachim99@68 347 if (m_ppVarCodec!=0)
joachim99@68 348 {
joachim99@68 349 for(unsigned int i=0; i<m_codecVec.size(); ++i)
joachim99@68 350 {
joachim99@68 351 if ( *m_ppVarCodec==m_codecVec[i] )
joachim99@68 352 {
joachim99@68 353 setCurrentItem( i );
joachim99@68 354 break;
joachim99@68 355 }
joachim99@68 356 }
joachim99@68 357 }
joachim99@68 358 }
joachim99@68 359 void apply()
joachim99@68 360 {
joachim99@68 361 if (m_ppVarCodec!=0){ *m_ppVarCodec = m_codecVec[ currentItem() ]; }
joachim99@68 362 }
joachim99@68 363 void write(KConfig* config)
joachim99@68 364 {
joachim99@68 365 if (m_ppVarCodec!=0) config->writeEntry(m_saveName, (*m_ppVarCodec)->name() );
joachim99@68 366 }
joachim99@68 367 void read (KConfig* config)
joachim99@68 368 {
joachim99@68 369 QString codecName = config->readEntry( m_saveName, m_codecVec[ currentItem() ]->name() );
joachim99@68 370 for(unsigned int i=0; i<m_codecVec.size(); ++i)
joachim99@68 371 {
joachim99@68 372 if ( codecName == m_codecVec[i]->name() )
joachim99@68 373 {
joachim99@68 374 setCurrentItem( i );
joachim99@68 375 if (m_ppVarCodec!=0) *m_ppVarCodec = m_codecVec[i];
joachim99@68 376 break;
joachim99@68 377 }
joachim99@68 378 }
joachim99@68 379 }
joachim99@68 380 };
joachim99@68 381
joachim99@68 382
joachim99@8 383 OptionDialog::OptionDialog( bool bShowDirMergeSettings, QWidget *parent, char *name )
joachim99@8 384 :KDialogBase( IconList, i18n("Configure"), Help|Default|Apply|Ok|Cancel,
joachim99@8 385 Ok, parent, name, true /*modal*/, true )
joachim99@8 386 {
joachim99@68 387 setHelp( "kdiff3/index.html", QString::null );
joachim99@8 388
joachim99@68 389 setupFontPage();
joachim99@68 390 setupColorPage();
joachim99@68 391 setupEditPage();
joachim99@68 392 setupDiffPage();
joachim99@68 393 setupOtherOptions();
joachim99@68 394 if (bShowDirMergeSettings)
joachim99@68 395 setupDirectoryMergePage();
joachim99@58 396
joachim99@68 397 setupRegionalPage();
joachim99@8 398
joachim99@68 399 //setupKeysPage();
joachim99@68 400
joachim99@68 401 // Initialize all values in the dialog
joachim99@68 402 resetToDefaults();
joachim99@68 403 slotApply();
joachim99@8 404 }
joachim99@8 405
joachim99@8 406 OptionDialog::~OptionDialog( void )
joachim99@8 407 {
joachim99@8 408 }
joachim99@8 409
joachim99@51 410 void OptionDialog::setupOtherOptions()
joachim99@51 411 {
joachim99@51 412 new OptionToggleAction( false, "AutoAdvance", &m_bAutoAdvance, this );
joachim99@51 413 new OptionToggleAction( true, "ShowWhiteSpaceCharacters", &m_bShowWhiteSpaceCharacters, this );
joachim99@51 414 new OptionToggleAction( true, "ShowWhiteSpace", &m_bShowWhiteSpace, this );
joachim99@51 415 new OptionToggleAction( false, "ShowLineNumbers", &m_bShowLineNumbers, this );
joachim99@51 416 new OptionToggleAction( true, "HorizDiffWindowSplitting", &m_bHorizDiffWindowSplitting, this );
joachim99@66 417 new OptionToggleAction( false, "WordWrap", &m_bWordWrap, this );
joachim99@51 418 }
joachim99@8 419
joachim99@8 420 void OptionDialog::setupFontPage( void )
joachim99@8 421 {
joachim99@51 422 QFrame *page = addPage( i18n("Font"), i18n("Editor & Diff Output Font" ),
joachim99@8 423 BarIcon("fonts", KIcon::SizeMedium ) );
joachim99@8 424
joachim99@8 425 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@51 426
joachim99@8 427 m_fontChooser = new KFontChooser( page,"font",true/*onlyFixed*/,QStringList(),false,6 );
joachim99@8 428 topLayout->addWidget( m_fontChooser );
joachim99@8 429
joachim99@8 430 QGridLayout *gbox = new QGridLayout( 1, 2 );
joachim99@8 431 topLayout->addLayout( gbox );
joachim99@8 432 int line=0;
joachim99@8 433
joachim99@51 434 OptionCheckBox* pItalicDeltas = new OptionCheckBox( i18n("Italic font for deltas"), false, "ItalicForDeltas", &m_bItalicForDeltas, page, this );
joachim99@8 435 gbox->addMultiCellWidget( pItalicDeltas, line, line, 0, 1 );
joachim99@8 436 QToolTip::add( pItalicDeltas, i18n(
joachim99@8 437 "Selects the italic version of the font for differences.\n"
joachim99@8 438 "If the font doesn't support italic characters, then this does nothing.")
joachim99@8 439 );
joachim99@8 440 }
joachim99@8 441
joachim99@8 442
joachim99@8 443 void OptionDialog::setupColorPage( void )
joachim99@8 444 {
joachim99@51 445 QFrame *page = addPage( i18n("Color"), i18n("Colors in Editor & Diff Output"),
joachim99@8 446 BarIcon("colorize", KIcon::SizeMedium ) );
joachim99@8 447 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@8 448
joachim99@8 449 QGridLayout *gbox = new QGridLayout( 7, 2 );
joachim99@8 450 topLayout->addLayout(gbox);
joachim99@8 451
joachim99@8 452 QLabel* label;
joachim99@8 453 int line = 0;
joachim99@8 454
joachim99@8 455 int depth = QColor::numBitPlanes();
joachim99@8 456 bool bLowColor = depth<=8;
joachim99@8 457
joachim99@8 458 OptionColorButton* pFgColor = new OptionColorButton( black,"FgColor", &m_fgColor, page, this );
joachim99@8 459 label = new QLabel( pFgColor, i18n("Foreground color:"), page );
joachim99@8 460 gbox->addWidget( label, line, 0 );
joachim99@8 461 gbox->addWidget( pFgColor, line, 1 );
joachim99@8 462 ++line;
joachim99@8 463
joachim99@8 464 OptionColorButton* pBgColor = new OptionColorButton( white, "BgColor", &m_bgColor, page, this );
joachim99@8 465 label = new QLabel( pBgColor, i18n("Background color:"), page );
joachim99@8 466 gbox->addWidget( label, line, 0 );
joachim99@8 467 gbox->addWidget( pBgColor, line, 1 );
joachim99@8 468
joachim99@8 469 ++line;
joachim99@8 470
joachim99@8 471 OptionColorButton* pDiffBgColor = new OptionColorButton( lightGray, "DiffBgColor", &m_diffBgColor, page, this );
joachim99@8 472 label = new QLabel( pDiffBgColor, i18n("Diff background color:"), page );
joachim99@8 473 gbox->addWidget( label, line, 0 );
joachim99@8 474 gbox->addWidget( pDiffBgColor, line, 1 );
joachim99@8 475 ++line;
joachim99@8 476
joachim99@8 477 OptionColorButton* pColorA = new OptionColorButton(
joachim99@8 478 bLowColor ? qRgb(0,0,255) : qRgb(0,0,200)/*blue*/, "ColorA", &m_colorA, page, this );
joachim99@8 479 label = new QLabel( pColorA, i18n("Color A:"), page );
joachim99@8 480 gbox->addWidget( label, line, 0 );
joachim99@8 481 gbox->addWidget( pColorA, line, 1 );
joachim99@8 482 ++line;
joachim99@8 483
joachim99@8 484 OptionColorButton* pColorB = new OptionColorButton(
joachim99@8 485 bLowColor ? qRgb(0,128,0) : qRgb(0,150,0)/*green*/, "ColorB", &m_colorB, page, this );
joachim99@8 486 label = new QLabel( pColorB, i18n("Color B:"), page );
joachim99@8 487 gbox->addWidget( label, line, 0 );
joachim99@8 488 gbox->addWidget( pColorB, line, 1 );
joachim99@8 489 ++line;
joachim99@8 490
joachim99@8 491 OptionColorButton* pColorC = new OptionColorButton(
joachim99@8 492 bLowColor ? qRgb(128,0,128) : qRgb(150,0,150)/*magenta*/, "ColorC", &m_colorC, page, this );
joachim99@8 493 label = new QLabel( pColorC, i18n("Color C:"), page );
joachim99@8 494 gbox->addWidget( label, line, 0 );
joachim99@8 495 gbox->addWidget( pColorC, line, 1 );
joachim99@8 496 ++line;
joachim99@8 497
joachim99@8 498 OptionColorButton* pColorForConflict = new OptionColorButton( red, "ColorForConflict", &m_colorForConflict, page, this );
joachim99@51 499 label = new QLabel( pColorForConflict, i18n("Conflict color:"), page );
joachim99@8 500 gbox->addWidget( label, line, 0 );
joachim99@8 501 gbox->addWidget( pColorForConflict, line, 1 );
joachim99@8 502 ++line;
joachim99@8 503
joachim99@8 504 OptionColorButton* pColor = new OptionColorButton(
joachim99@8 505 bLowColor ? qRgb(192,192,192) : qRgb(220,220,100), "CurrentRangeBgColor", &m_currentRangeBgColor, page, this );
joachim99@8 506 label = new QLabel( pColor, i18n("Current range background color:"), page );
joachim99@8 507 gbox->addWidget( label, line, 0 );
joachim99@8 508 gbox->addWidget( pColor, line, 1 );
joachim99@8 509 ++line;
joachim99@8 510
joachim99@8 511 pColor = new OptionColorButton(
joachim99@8 512 bLowColor ? qRgb(255,255,0) : qRgb(255,255,150), "CurrentRangeDiffBgColor", &m_currentRangeDiffBgColor, page, this );
joachim99@8 513 label = new QLabel( pColor, i18n("Current range diff background color:"), page );
joachim99@8 514 gbox->addWidget( label, line, 0 );
joachim99@8 515 gbox->addWidget( pColor, line, 1 );
joachim99@8 516 ++line;
joachim99@8 517
joachim99@8 518 topLayout->addStretch(10);
joachim99@8 519 }
joachim99@8 520
joachim99@8 521
joachim99@8 522 void OptionDialog::setupEditPage( void )
joachim99@8 523 {
joachim99@68 524 QFrame *page = addPage( i18n("Editor"), i18n("Editor Behavior"),
joachim99@8 525 BarIcon("edit", KIcon::SizeMedium ) );
joachim99@8 526 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@8 527
joachim99@8 528 QGridLayout *gbox = new QGridLayout( 4, 2 );
joachim99@8 529 topLayout->addLayout( gbox );
joachim99@8 530 QLabel* label;
joachim99@8 531 int line=0;
joachim99@8 532
joachim99@8 533 OptionCheckBox* pReplaceTabs = new OptionCheckBox( i18n("Tab inserts spaces"), false, "ReplaceTabs", &m_bReplaceTabs, page, this );
joachim99@8 534 gbox->addMultiCellWidget( pReplaceTabs, line, line, 0, 1 );
joachim99@8 535 QToolTip::add( pReplaceTabs, i18n(
joachim99@8 536 "On: Pressing tab generates the appropriate number of spaces.\n"
joachim99@8 537 "Off: A Tab-character will be inserted.")
joachim99@8 538 );
joachim99@8 539 ++line;
joachim99@8 540
joachim99@8 541 OptionIntEdit* pTabSize = new OptionIntEdit( 8, "TabSize", &m_tabSize, 1, 100, page, this );
joachim99@8 542 label = new QLabel( pTabSize, i18n("Tab size:"), page );
joachim99@8 543 gbox->addWidget( label, line, 0 );
joachim99@8 544 gbox->addWidget( pTabSize, line, 1 );
joachim99@8 545 ++line;
joachim99@8 546
joachim99@51 547 OptionCheckBox* pAutoIndentation = new OptionCheckBox( i18n("Auto indentation"), true, "AutoIndentation", &m_bAutoIndentation, page, this );
joachim99@8 548 gbox->addMultiCellWidget( pAutoIndentation, line, line, 0, 1 );
joachim99@8 549 QToolTip::add( pAutoIndentation, i18n(
joachim99@8 550 "On: The indentation of the previous line is used for a new line.\n"
joachim99@8 551 ));
joachim99@8 552 ++line;
joachim99@8 553
joachim99@51 554 OptionCheckBox* pAutoCopySelection = new OptionCheckBox( i18n("Auto copy selection"), false, "AutoCopySelection", &m_bAutoCopySelection, page, this );
joachim99@8 555 gbox->addMultiCellWidget( pAutoCopySelection, line, line, 0, 1 );
joachim99@8 556 QToolTip::add( pAutoCopySelection, i18n(
joachim99@8 557 "On: Any selection is immediately written to the clipboard.\n"
joachim99@8 558 "Off: You must explicitely copy e.g. via Ctrl-C."
joachim99@8 559 ));
joachim99@8 560 ++line;
joachim99@58 561
joachim99@68 562 label = new QLabel( i18n("Line end style:"), page );
joachim99@58 563 gbox->addWidget( label, line, 0 );
joachim99@58 564 #ifdef _WIN32
joachim99@58 565 int defaultLineEndStyle = eLineEndDos;
joachim99@58 566 #else
joachim99@58 567 int defaultLineEndStyle = eLineEndUnix;
joachim99@58 568 #endif
joachim99@58 569 OptionComboBox* pLineEndStyle = new OptionComboBox( defaultLineEndStyle, "LineEndStyle", &m_lineEndStyle, page, this );
joachim99@58 570 gbox->addWidget( pLineEndStyle, line, 1 );
joachim99@58 571 pLineEndStyle->insertItem( "Unix", eLineEndUnix );
joachim99@58 572 pLineEndStyle->insertItem( "Dos/Windows", eLineEndDos );
joachim99@58 573 QToolTip::add( label, i18n(
joachim99@68 574 "Sets the line endings for when an edited file is saved.\n"
joachim99@68 575 "DOS/Windows: CR+LF; UNIX: LF; with CR=0D, LF=0A")
joachim99@58 576 );
joachim99@58 577 ++line;
joachim99@58 578
joachim99@8 579 topLayout->addStretch(10);
joachim99@8 580 }
joachim99@8 581
joachim99@8 582
joachim99@8 583 void OptionDialog::setupDiffPage( void )
joachim99@8 584 {
joachim99@51 585 QFrame *page = addPage( i18n("Diff & Merge"), i18n("Diff & Merge Settings"),
joachim99@8 586 BarIcon("misc", KIcon::SizeMedium ) );
joachim99@8 587 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@8 588
joachim99@8 589 QGridLayout *gbox = new QGridLayout( 3, 2 );
joachim99@8 590 topLayout->addLayout( gbox );
joachim99@8 591 int line=0;
joachim99@8 592
joachim99@51 593 QLabel* label=0;
joachim99@51 594
joachim99@51 595 OptionCheckBox* pPreserveCarriageReturn = new OptionCheckBox( i18n("Preserve carriage return"), false, "PreserveCarriageReturn", &m_bPreserveCarriageReturn, page, this );
joachim99@51 596 gbox->addMultiCellWidget( pPreserveCarriageReturn, line, line, 0, 1 );
joachim99@51 597 QToolTip::add( pPreserveCarriageReturn, i18n(
joachim99@51 598 "Show carriage return characters '\\r' if they exist.\n"
joachim99@51 599 "Helps to compare files that were modified under different operating systems.")
joachim99@8 600 );
joachim99@8 601 ++line;
joachim99@8 602
joachim99@51 603 OptionCheckBox* pIgnoreNumbers = new OptionCheckBox( i18n("Ignore numbers"), false, "IgnoreNumbers", &m_bIgnoreNumbers, page, this );
joachim99@51 604 gbox->addMultiCellWidget( pIgnoreNumbers, line, line, 0, 1 );
joachim99@51 605 QToolTip::add( pIgnoreNumbers, i18n(
joachim99@51 606 "Ignore number characters during line matching phase. (Similar to Ignore white space.)\n"
joachim99@51 607 "Might help to compare files with numeric data.")
joachim99@8 608 );
joachim99@8 609 ++line;
joachim99@8 610
joachim99@68 611 OptionCheckBox* pIgnoreComments = new OptionCheckBox( i18n("Ignore C/C++ comments"), false, "IgnoreComments", &m_bIgnoreComments, page, this );
joachim99@51 612 gbox->addMultiCellWidget( pIgnoreComments, line, line, 0, 1 );
joachim99@51 613 QToolTip::add( pIgnoreComments, i18n( "Treat C/C++ comments like white space.")
joachim99@8 614 );
joachim99@8 615 ++line;
joachim99@8 616
joachim99@66 617 OptionCheckBox* pIgnoreCase = new OptionCheckBox( i18n("Ignore case"), false, "IgnoreCase", &m_bIgnoreCase, page, this );
joachim99@66 618 gbox->addMultiCellWidget( pIgnoreCase, line, line, 0, 1 );
joachim99@66 619 QToolTip::add( pIgnoreCase, i18n(
joachim99@66 620 "Treat case differences like white space changes. ('a'<=>'A')")
joachim99@8 621 );
joachim99@8 622 ++line;
joachim99@8 623
joachim99@51 624 label = new QLabel( i18n("Preprocessor command:"), page );
joachim99@8 625 gbox->addWidget( label, line, 0 );
joachim99@8 626 OptionLineEdit* pLE = new OptionLineEdit( "", "PreProcessorCmd", &m_PreProcessorCmd, page, this );
joachim99@8 627 gbox->addWidget( pLE, line, 1 );
joachim99@8 628 QToolTip::add( label, i18n("User defined pre-processing. (See the docs for details.)") );
joachim99@8 629 ++line;
joachim99@8 630
joachim99@51 631 label = new QLabel( i18n("Line-matching preprocessor command:"), page );
joachim99@8 632 gbox->addWidget( label, line, 0 );
joachim99@8 633 pLE = new OptionLineEdit( "", "LineMatchingPreProcessorCmd", &m_LineMatchingPreProcessorCmd, page, this );
joachim99@8 634 gbox->addWidget( pLE, line, 1 );
joachim99@8 635 QToolTip::add( label, i18n("This pre-processor is only used during line matching.\n(See the docs for details.)") );
joachim99@8 636 ++line;
joachim99@8 637
joachim99@51 638 OptionCheckBox* pTryHard = new OptionCheckBox( i18n("Try hard (slower)"), true, "TryHard", &m_bTryHard, page, this );
joachim99@51 639 gbox->addMultiCellWidget( pTryHard, line, line, 0, 1 );
joachim99@51 640 QToolTip::add( pTryHard, i18n(
joachim99@51 641 "Enables the --minimal option for the external diff.\n"
joachim99@51 642 "The analysis of big files will be much slower.")
joachim99@8 643 );
joachim99@8 644 ++line;
joachim99@8 645
joachim99@51 646 label = new QLabel( i18n("Auto advance delay (ms):"), page );
joachim99@8 647 gbox->addWidget( label, line, 0 );
joachim99@8 648 OptionIntEdit* pAutoAdvanceDelay = new OptionIntEdit( 500, "AutoAdvanceDelay", &m_autoAdvanceDelay, 0, 2000, page, this );
joachim99@8 649 gbox->addWidget( pAutoAdvanceDelay, line, 1 );
joachim99@8 650 QToolTip::add( label,i18n(
joachim99@8 651 "When in Auto-Advance mode the result of the current selection is shown \n"
joachim99@8 652 "for the specified time, before jumping to the next conflict. Range: 0-2000 ms")
joachim99@8 653 );
joachim99@8 654 ++line;
joachim99@8 655
joachim99@51 656 label = new QLabel( i18n("White space 2-file merge default:"), page );
joachim99@51 657 gbox->addWidget( label, line, 0 );
joachim99@51 658 OptionComboBox* pWhiteSpace2FileMergeDefault = new OptionComboBox( 0, "WhiteSpace2FileMergeDefault", &m_whiteSpace2FileMergeDefault, page, this );
joachim99@51 659 gbox->addWidget( pWhiteSpace2FileMergeDefault, line, 1 );
joachim99@68 660 pWhiteSpace2FileMergeDefault->insertItem( i18n("Manual Choice"), 0 );
joachim99@51 661 pWhiteSpace2FileMergeDefault->insertItem( "A", 1 );
joachim99@51 662 pWhiteSpace2FileMergeDefault->insertItem( "B", 2 );
joachim99@58 663 QToolTip::add( label, i18n(
joachim99@51 664 "Allow the merge algorithm to automatically select an input for "
joachim99@51 665 "white-space-only changes." )
joachim99@51 666 );
joachim99@51 667 ++line;
joachim99@51 668
joachim99@51 669 label = new QLabel( i18n("White space 3-file merge default:"), page );
joachim99@51 670 gbox->addWidget( label, line, 0 );
joachim99@51 671 OptionComboBox* pWhiteSpace3FileMergeDefault = new OptionComboBox( 0, "WhiteSpace3FileMergeDefault", &m_whiteSpace3FileMergeDefault, page, this );
joachim99@51 672 gbox->addWidget( pWhiteSpace3FileMergeDefault, line, 1 );
joachim99@68 673 pWhiteSpace3FileMergeDefault->insertItem( i18n("Manual Choice"), 0 );
joachim99@51 674 pWhiteSpace3FileMergeDefault->insertItem( "A", 1 );
joachim99@51 675 pWhiteSpace3FileMergeDefault->insertItem( "B", 2 );
joachim99@51 676 pWhiteSpace3FileMergeDefault->insertItem( "C", 3 );
joachim99@58 677 QToolTip::add( label, i18n(
joachim99@51 678 "Allow the merge algorithm to automatically select an input for "
joachim99@51 679 "white-space-only changes." )
joachim99@51 680 );
joachim99@51 681 ++line;
joachim99@51 682
joachim99@8 683 topLayout->addStretch(10);
joachim99@8 684 }
joachim99@8 685
joachim99@8 686 void OptionDialog::setupDirectoryMergePage( void )
joachim99@8 687 {
joachim99@51 688 QFrame *page = addPage( i18n("Directory Merge"), i18n("Directory Merge"),
joachim99@8 689 BarIcon("folder", KIcon::SizeMedium ) );
joachim99@8 690 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@8 691
joachim99@8 692 QGridLayout *gbox = new QGridLayout( 11, 2 );
joachim99@8 693 topLayout->addLayout( gbox );
joachim99@8 694 int line=0;
joachim99@8 695
joachim99@51 696 OptionCheckBox* pRecursiveDirs = new OptionCheckBox( i18n("Recursive directories"), true, "RecursiveDirs", &m_bDmRecursiveDirs, page, this );
joachim99@8 697 gbox->addMultiCellWidget( pRecursiveDirs, line, line, 0, 1 );
joachim99@8 698 QToolTip::add( pRecursiveDirs, i18n("Whether to analyze subdirectories or not.") );
joachim99@8 699 ++line;
joachim99@51 700 QLabel* label = new QLabel( i18n("File pattern(s):"), page );
joachim99@8 701 gbox->addWidget( label, line, 0 );
joachim99@8 702 OptionLineEdit* pFilePattern = new OptionLineEdit( "*", "FilePattern", &m_DmFilePattern, page, this );
joachim99@8 703 gbox->addWidget( pFilePattern, line, 1 );
joachim99@8 704 QToolTip::add( label, i18n(
joachim99@8 705 "Pattern(s) of files to be analyzed. \n"
joachim99@8 706 "Wildcards: '*' and '?'\n"
joachim99@8 707 "Several Patterns can be specified by using the separator: ';'"
joachim99@8 708 ));
joachim99@8 709 ++line;
joachim99@8 710
joachim99@51 711 label = new QLabel( i18n("File-anti-pattern(s):"), page );
joachim99@8 712 gbox->addWidget( label, line, 0 );
joachim99@8 713 OptionLineEdit* pFileAntiPattern = new OptionLineEdit( "*.orig;*.o", "FileAntiPattern", &m_DmFileAntiPattern, page, this );
joachim99@8 714 gbox->addWidget( pFileAntiPattern, line, 1 );
joachim99@8 715 QToolTip::add( label, i18n(
joachim99@8 716 "Pattern(s) of files to be excluded from analysis. \n"
joachim99@8 717 "Wildcards: '*' and '?'\n"
joachim99@8 718 "Several Patterns can be specified by using the separator: ';'"
joachim99@8 719 ));
joachim99@8 720 ++line;
joachim99@8 721
joachim99@51 722 label = new QLabel( i18n("Dir-anti-pattern(s):"), page );
joachim99@8 723 gbox->addWidget( label, line, 0 );
joachim99@8 724 OptionLineEdit* pDirAntiPattern = new OptionLineEdit( "CVS;.deps", "DirAntiPattern", &m_DmDirAntiPattern, page, this );
joachim99@8 725 gbox->addWidget( pDirAntiPattern, line, 1 );
joachim99@8 726 QToolTip::add( label, i18n(
joachim99@8 727 "Pattern(s) of directories to be excluded from analysis. \n"
joachim99@8 728 "Wildcards: '*' and '?'\n"
joachim99@8 729 "Several Patterns can be specified by using the separator: ';'"
joachim99@8 730 ));
joachim99@8 731 ++line;
joachim99@8 732
joachim99@51 733 OptionCheckBox* pUseCvsIgnore = new OptionCheckBox( i18n("Use .cvsignore"), false, "UseCvsIgnore", &m_bDmUseCvsIgnore, page, this );
joachim99@8 734 gbox->addMultiCellWidget( pUseCvsIgnore, line, line, 0, 1 );
joachim99@8 735 QToolTip::add( pUseCvsIgnore, i18n(
joachim99@8 736 "Extends the antipattern to anything that would be ignored by CVS.\n"
joachim99@8 737 "Via local \".cvsignore\"-files this can be directory specific."
joachim99@8 738 ));
joachim99@8 739 ++line;
joachim99@8 740
joachim99@51 741 OptionCheckBox* pFindHidden = new OptionCheckBox( i18n("Find hidden files and directories"), true, "FindHidden", &m_bDmFindHidden, page, this );
joachim99@8 742 gbox->addMultiCellWidget( pFindHidden, line, line, 0, 1 );
joachim99@8 743 #ifdef _WIN32
joachim99@8 744 QToolTip::add( pFindHidden, i18n("Finds files and directories with the hidden attribute.") );
joachim99@8 745 #else
joachim99@8 746 QToolTip::add( pFindHidden, i18n("Finds files and directories starting with '.'.") );
joachim99@8 747 #endif
joachim99@8 748 ++line;
joachim99@8 749
joachim99@51 750 OptionCheckBox* pFollowFileLinks = new OptionCheckBox( i18n("Follow file links"), false, "FollowFileLinks", &m_bDmFollowFileLinks, page, this );
joachim99@8 751 gbox->addMultiCellWidget( pFollowFileLinks, line, line, 0, 1 );
joachim99@8 752 QToolTip::add( pFollowFileLinks, i18n(
joachim99@8 753 "On: Compare the file the link points to.\n"
joachim99@8 754 "Off: Compare the links."
joachim99@8 755 ));
joachim99@8 756 ++line;
joachim99@8 757
joachim99@51 758 OptionCheckBox* pFollowDirLinks = new OptionCheckBox( i18n("Follow directory links"), false, "FollowDirLinks", &m_bDmFollowDirLinks, page, this );
joachim99@8 759 gbox->addMultiCellWidget( pFollowDirLinks, line, line, 0, 1 );
joachim99@8 760 QToolTip::add( pFollowDirLinks, i18n(
joachim99@8 761 "On: Compare the directory the link points to.\n"
joachim99@8 762 "Off: Compare the links."
joachim99@8 763 ));
joachim99@8 764 ++line;
joachim99@8 765
joachim99@8 766 OptionCheckBox* pShowOnlyDeltas = new OptionCheckBox( i18n("List only deltas"),false,"ListOnlyDeltas", &m_bDmShowOnlyDeltas, page, this );
joachim99@8 767 gbox->addMultiCellWidget( pShowOnlyDeltas, line, line, 0, 1 );
joachim99@8 768 QToolTip::add( pShowOnlyDeltas, i18n(
joachim99@8 769 "Files and directories without change will not appear in the list."));
joachim99@8 770 ++line;
joachim99@8 771
joachim99@66 772 QVButtonGroup* pBG = new QVButtonGroup(i18n("File Comparison Mode"),page);
joachim99@66 773 gbox->addMultiCellWidget( pBG, line, line, 0, 1 );
joachim99@66 774 ++line;
joachim99@66 775
joachim99@68 776 OptionRadioButton* pBinaryComparison = new OptionRadioButton( i18n("Binary comparison"), true, "BinaryComparison", &m_bDmBinaryComparison, pBG, this );
joachim99@66 777 QToolTip::add( pBinaryComparison, i18n("Binary comparison of each file. (Default)") );
joachim99@66 778
joachim99@68 779 OptionRadioButton* pFullAnalysis = new OptionRadioButton( i18n("Full analysis"), false, "FullAnalysis", &m_bDmFullAnalysis, pBG, this );
joachim99@66 780 QToolTip::add( pFullAnalysis, i18n("Do a full analysis and show statistics information in extra columns.\n"
joachim99@66 781 "(Slower than a binary comparison, much slower for binary files.)") );
joachim99@66 782
joachim99@66 783 OptionRadioButton* pTrustDate = new OptionRadioButton( i18n("Trust the modification date (unsafe)"), false, "TrustDate", &m_bDmTrustDate, pBG, this );
joachim99@8 784 QToolTip::add( pTrustDate, i18n("Assume that files are equal if the modification date and file length are equal.\n"
joachim99@8 785 "Useful for big directories or slow networks.") );
joachim99@8 786
joachim99@66 787 OptionRadioButton* pTrustSize = new OptionRadioButton( i18n("Trust the size (unsafe)"), false, "TrustSize", &m_bDmTrustSize, pBG, this );
joachim99@51 788 QToolTip::add( pTrustSize, i18n("Assume that files are equal if their file lengths are equal.\n"
joachim99@51 789 "Useful for big directories or slow networks when the date is modified during download.") );
joachim99@51 790
joachim99@8 791 // Some two Dir-options: Affects only the default actions.
joachim99@51 792 OptionCheckBox* pSyncMode = new OptionCheckBox( i18n("Synchronize directories"), false,"SyncMode", &m_bDmSyncMode, page, this );
joachim99@8 793 gbox->addMultiCellWidget( pSyncMode, line, line, 0, 1 );
joachim99@8 794 QToolTip::add( pSyncMode, i18n(
joachim99@8 795 "Offers to store files in both directories so that\n"
joachim99@8 796 "both directories are the same afterwards.\n"
joachim99@8 797 "Works only when comparing two directories without specifying a destination." ) );
joachim99@8 798 ++line;
joachim99@8 799
joachim99@68 800 // Allow white-space only differences to be considered equal
joachim99@68 801 OptionCheckBox* pWhiteSpaceDiffsEqual = new OptionCheckBox( i18n("White space differences considered equal"), false,"WhiteSpaceEqual", &m_bDmWhiteSpaceEqual, page, this );
joachim99@68 802 gbox->addMultiCellWidget( pWhiteSpaceDiffsEqual, line, line, 0, 1 );
joachim99@68 803 QToolTip::add( pWhiteSpaceDiffsEqual, i18n(
joachim99@68 804 "If files differ only by white space consider them equal.\n"
joachim99@68 805 "This is only active when full analysis is chosen." ) );
joachim99@68 806 connect(pFullAnalysis, SIGNAL(toggled(bool)), pWhiteSpaceDiffsEqual, SLOT(setEnabled(bool)));
joachim99@68 807 pWhiteSpaceDiffsEqual->setEnabled(false);
joachim99@68 808 ++line;
joachim99@68 809
joachim99@51 810 OptionCheckBox* pCopyNewer = new OptionCheckBox( i18n("Copy newer instead of merging (unsafe)"), false, "CopyNewer", &m_bDmCopyNewer, page, this );
joachim99@8 811 gbox->addMultiCellWidget( pCopyNewer, line, line, 0, 1 );
joachim99@8 812 QToolTip::add( pCopyNewer, i18n(
joachim99@8 813 "Don't look inside, just take the newer file.\n"
joachim99@8 814 "(Use this only if you know what you are doing!)\n"
joachim99@8 815 "Only effective when comparing two directories." ) );
joachim99@8 816 ++line;
joachim99@51 817
joachim99@8 818 OptionCheckBox* pCreateBakFiles = new OptionCheckBox( i18n("Backup files (.orig)"), true, "CreateBakFiles", &m_bDmCreateBakFiles, page, this );
joachim99@8 819 gbox->addMultiCellWidget( pCreateBakFiles, line, line, 0, 1 );
joachim99@8 820 QToolTip::add( pCreateBakFiles, i18n(
joachim99@8 821 "When a file would be saved over an old file, then the old file\n"
joachim99@8 822 "will be renamed with a '.orig'-extension instead of being deleted."));
joachim99@8 823 ++line;
joachim99@8 824
joachim99@8 825 topLayout->addStretch(10);
joachim99@8 826 }
joachim99@66 827 /*
joachim99@58 828 static void insertCodecs(OptionComboBox* p)
joachim99@58 829 {
joachim99@58 830 std::multimap<QString,QString> m; // Using the multimap for case-insensitive sorting.
joachim99@58 831 int i;
joachim99@58 832 for(i=0;;++i)
joachim99@58 833 {
joachim99@58 834 QTextCodec* pCodec = QTextCodec::codecForIndex ( i );
joachim99@58 835 if ( pCodec != 0 ) m.insert( std::make_pair( QString(pCodec->mimeName()).upper(), pCodec->mimeName()) );
joachim99@58 836 else break;
joachim99@58 837 }
joachim99@58 838
joachim99@58 839 p->insertItem( i18n("Auto"), 0 );
joachim99@58 840 std::multimap<QString,QString>::iterator mi;
joachim99@58 841 for(mi=m.begin(), i=0; mi!=m.end(); ++mi, ++i)
joachim99@58 842 p->insertItem(mi->second, i+1);
joachim99@58 843 }
joachim99@66 844 */
joachim99@58 845
joachim99@58 846 void OptionDialog::setupRegionalPage( void )
joachim99@58 847 {
joachim99@68 848 QFrame *page = addPage( i18n("Regional Settings"), i18n("Regional Settings"),
joachim99@68 849 BarIcon("locale"/*"charset"*/, KIcon::SizeMedium ) );
joachim99@68 850 QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@68 851
joachim99@68 852 QGridLayout *gbox = new QGridLayout( 3, 2 );
joachim99@68 853 topLayout->addLayout( gbox );
joachim99@68 854 int line=0;
joachim99@68 855
joachim99@68 856 QLabel* label;
joachim99@68 857
joachim99@66 858 #ifdef KREPLACEMENTS_H
joachim99@66 859
joachim99@66 860 static char* countryMap[]={
joachim99@66 861 "af Afrikaans",
joachim99@66 862 "ar Arabic",
joachim99@66 863 "az Azerbaijani",
joachim99@66 864 "be Belarusian",
joachim99@66 865 "bg Bulgarian",
joachim99@66 866 "bn Bengali",
joachim99@66 867 "bo Tibetan",
joachim99@66 868 "br Breton",
joachim99@66 869 "bs Bosnian",
joachim99@66 870 "ca Catalan",
joachim99@66 871 "cs Czech",
joachim99@66 872 "cy Welsh",
joachim99@66 873 "da Danish",
joachim99@66 874 "de German",
joachim99@66 875 "el Greek",
joachim99@66 876 "en_GB British English",
joachim99@66 877 "eo Esperanto",
joachim99@66 878 "es Spanish",
joachim99@66 879 "et Estonian",
joachim99@66 880 "eu Basque",
joachim99@66 881 "fa Farsi (Persian)",
joachim99@66 882 "fi Finnish",
joachim99@66 883 "fo Faroese",
joachim99@66 884 "fr French",
joachim99@66 885 "ga Irish Gaelic",
joachim99@66 886 "gl Galician",
joachim99@66 887 "gu Gujarati",
joachim99@66 888 "he Hebrew",
joachim99@66 889 "hi Hindi",
joachim99@66 890 "hr Croatian",
joachim99@66 891 "hsb Upper Sorbian",
joachim99@66 892 "hu Hungarian",
joachim99@66 893 "id Indonesian",
joachim99@66 894 "is Icelandic",
joachim99@66 895 "it Italian",
joachim99@66 896 "ja Japanese",
joachim99@66 897 "ko Korean",
joachim99@66 898 "ku Kurdish",
joachim99@66 899 "lo Lao",
joachim99@66 900 "lt Lithuanian",
joachim99@66 901 "lv Latvian",
joachim99@66 902 "mi Maori",
joachim99@66 903 "mk Macedonian",
joachim99@66 904 "mn Mongolian",
joachim99@66 905 "ms Malay",
joachim99@66 906 "mt Maltese",
joachim99@66 907 "nb Norwegian Bookmal",
joachim99@66 908 "nds Low Saxon",
joachim99@66 909 "nl Dutch",
joachim99@66 910 "nn Norwegian Nynorsk",
joachim99@66 911 "nso Northern Sotho",
joachim99@66 912 "oc Occitan",
joachim99@66 913 "pl Polish",
joachim99@66 914 "pt Portuguese",
joachim99@66 915 "pt_BR Brazilian Portuguese",
joachim99@66 916 "ro Romanian",
joachim99@66 917 "ru Russian",
joachim99@66 918 "se Northern Sami",
joachim99@66 919 "sk Slovak",
joachim99@66 920 "sl Slovenian",
joachim99@66 921 "sq Albanian",
joachim99@66 922 "sr Serbian",
joachim99@66 923 "ss Swati",
joachim99@66 924 "sv Swedish",
joachim99@66 925 "ta Tamil",
joachim99@66 926 "tg Tajik",
joachim99@66 927 "th Thai",
joachim99@66 928 "tr Turkish",
joachim99@66 929 "uk Ukrainian",
joachim99@66 930 "uz Uzbek",
joachim99@66 931 "ven Venda",
joachim99@66 932 "vi Vietnamese",
joachim99@66 933 "wa Walloon",
joachim99@66 934 "xh Xhosa",
joachim99@66 935 "zh_CN Chinese Simplified",
joachim99@66 936 "zh_TW Chinese Traditional",
joachim99@66 937 "zu Zulu"
joachim99@66 938 };
joachim99@66 939
joachim99@58 940 label = new QLabel( i18n("Language (restart required)"), page );
joachim99@58 941 gbox->addWidget( label, line, 0 );
joachim99@58 942 OptionComboBox* pLanguage = new OptionComboBox( 0, "Language", &m_language, page, this );
joachim99@58 943 gbox->addWidget( pLanguage, line, 1 );
joachim99@66 944 pLanguage->insertItem( "Auto", 0 ); // Must not translate, won't work otherwise!
joachim99@66 945 pLanguage->insertItem( "en_orig" );
joachim99@66 946
joachim99@66 947 // Read directory: Find all kdiff3_*.qm-files and insert the found files here selection
joachim99@66 948 FileAccess fa( getTranslationDir() );
joachim99@66 949 t_DirectoryList dirList;
joachim99@66 950 fa.listDir( &dirList, false, false, "kdiff3_*.qm", "", "*", false, false );
joachim99@66 951 t_DirectoryList::iterator i;
joachim99@66 952 for( i=dirList.begin(); i!=dirList.end(); ++i)
joachim99@66 953 {
joachim99@66 954 QString fileName = i->fileName();
joachim99@66 955 // Skip the "kdiff3_" and omit the .qm
joachim99@66 956 QString languageId = fileName.mid(7, fileName.length()-10 );
joachim99@66 957
joachim99@66 958 unsigned int countryIdx=0;
joachim99@66 959 for(countryIdx=0; countryIdx< sizeof(countryMap)/sizeof(countryMap[0]); ++countryIdx )
joachim99@66 960 {
joachim99@66 961 QString fullName = countryMap[countryIdx];
joachim99@66 962 if ( languageId+" " == fullName.left(languageId.length()+1) )
joachim99@66 963 {
joachim99@66 964 languageId += " (" + fullName.mid(languageId.length()+1) + ")";
joachim99@66 965 }
joachim99@66 966 }
joachim99@66 967
joachim99@66 968 pLanguage->insertItem( languageId );
joachim99@66 969 }
joachim99@66 970
joachim99@58 971 QToolTip::add( label, i18n(
joachim99@58 972 "Choose the language of the GUI-strings or \"Auto\".\n"
joachim99@58 973 "For a change of language to take place, quit and restart KDiff3.")
joachim99@58 974 );
joachim99@58 975 ++line;
joachim99@66 976 /*
joachim99@58 977 label = new QLabel( i18n("Codec for file contents"), page );
joachim99@58 978 gbox->addWidget( label, line, 0 );
joachim99@58 979 OptionComboBox* pFileCodec = new OptionComboBox( 0, "FileCodec", &m_fileCodec, page, this );
joachim99@58 980 gbox->addWidget( pFileCodec, line, 1 );
joachim99@58 981 insertCodecs( pFileCodec );
joachim99@58 982 QToolTip::add( label, i18n(
joachim99@58 983 "Choose the codec that should be used for your input files\n"
joachim99@58 984 "or \"Auto\" if unsure." )
joachim99@58 985 );
joachim99@58 986 ++line;
joachim99@66 987 */
joachim99@68 988 #endif
joachim99@68 989
joachim99@68 990 m_pSameEncoding = new OptionCheckBox( i18n("Use the same encoding for everything:"), true, "SameEncoding", &m_bSameEncoding, page, this );
joachim99@68 991 gbox->addMultiCellWidget( m_pSameEncoding, line, line, 0, 1 );
joachim99@68 992 QToolTip::add( m_pSameEncoding, i18n(
joachim99@68 993 "Enable this allows to change all encodings by changing the first only.\n"
joachim99@68 994 "Disable this if different individual settings are needed."
joachim99@68 995 ) );
joachim99@68 996 ++line;
joachim99@68 997
joachim99@68 998 label = new QLabel( i18n("Note: Local Encoding is ") + QTextCodec::codecForLocale()->name(), page );
joachim99@68 999 gbox->addWidget( label, line, 0 );
joachim99@68 1000 ++line;
joachim99@68 1001
joachim99@68 1002 label = new QLabel( i18n("File Encoding for A:"), page );
joachim99@68 1003 gbox->addWidget( label, line, 0 );
joachim99@68 1004 m_pEncodingAComboBox = new OptionEncodingComboBox( "EncodingForA", &m_pEncodingA, page, this );
joachim99@68 1005 gbox->addWidget( m_pEncodingAComboBox, line, 1 );
joachim99@68 1006 ++line;
joachim99@68 1007 label = new QLabel( i18n("File Encoding for B:"), page );
joachim99@68 1008 gbox->addWidget( label, line, 0 );
joachim99@68 1009 m_pEncodingBComboBox = new OptionEncodingComboBox( "EncodingForB", &m_pEncodingB, page, this );
joachim99@68 1010 gbox->addWidget( m_pEncodingBComboBox, line, 1 );
joachim99@68 1011 ++line;
joachim99@68 1012 label = new QLabel( i18n("File Encoding for C:"), page );
joachim99@68 1013 gbox->addWidget( label, line, 0 );
joachim99@68 1014 m_pEncodingCComboBox = new OptionEncodingComboBox( "EncodingForC", &m_pEncodingC, page, this );
joachim99@68 1015 gbox->addWidget( m_pEncodingCComboBox, line, 1 );
joachim99@68 1016 ++line;
joachim99@68 1017 label = new QLabel( i18n("File Encoding for Merge Output and Saving:"), page );
joachim99@68 1018 gbox->addWidget( label, line, 0 );
joachim99@68 1019 m_pEncodingOutComboBox = new OptionEncodingComboBox( "EncodingForOutput", &m_pEncodingOut, page, this );
joachim99@68 1020 gbox->addWidget( m_pEncodingOutComboBox, line, 1 );
joachim99@68 1021 ++line;
joachim99@68 1022 label = new QLabel( i18n("File Encoding for Preprocessor Files:"), page );
joachim99@68 1023 gbox->addWidget( label, line, 0 );
joachim99@68 1024 m_pEncodingPPComboBox = new OptionEncodingComboBox( "EncodingForPP", &m_pEncodingPP, page, this );
joachim99@68 1025 gbox->addWidget( m_pEncodingPPComboBox, line, 1 );
joachim99@68 1026 ++line;
joachim99@68 1027
joachim99@68 1028 connect(m_pSameEncoding, SIGNAL(toggled(bool)), this, SLOT(slotEncodingChanged()));
joachim99@68 1029 connect(m_pEncodingAComboBox, SIGNAL(activated(int)), this, SLOT(slotEncodingChanged()));
joachim99@68 1030
joachim99@68 1031 OptionCheckBox* pRightToLeftLanguage = new OptionCheckBox( i18n("Right To Left Language"), false, "RightToLeftLanguage", &m_bRightToLeftLanguage, page, this );
joachim99@68 1032 gbox->addMultiCellWidget( pRightToLeftLanguage, line, line, 0, 1 );
joachim99@68 1033 QToolTip::add( pRightToLeftLanguage, i18n(
joachim99@68 1034 "Some languages are read from right to left.\n"
joachim99@68 1035 "This setting will change the viewer and editor accordingly."));
joachim99@68 1036 ++line;
joachim99@68 1037
joachim99@68 1038
joachim99@58 1039 topLayout->addStretch(10);
joachim99@58 1040 }
joachim99@58 1041
joachim99@68 1042 void OptionDialog::slotEncodingChanged()
joachim99@68 1043 {
joachim99@68 1044 if ( m_pSameEncoding->isChecked() )
joachim99@68 1045 {
joachim99@68 1046 m_pEncodingBComboBox->setEnabled( false );
joachim99@68 1047 m_pEncodingBComboBox->setCurrentItem( m_pEncodingAComboBox->currentItem() );
joachim99@68 1048 m_pEncodingCComboBox->setEnabled( false );
joachim99@68 1049 m_pEncodingCComboBox->setCurrentItem( m_pEncodingAComboBox->currentItem() );
joachim99@68 1050 m_pEncodingOutComboBox->setEnabled( false );
joachim99@68 1051 m_pEncodingOutComboBox->setCurrentItem( m_pEncodingAComboBox->currentItem() );
joachim99@68 1052 m_pEncodingPPComboBox->setEnabled( false );
joachim99@68 1053 m_pEncodingPPComboBox->setCurrentItem( m_pEncodingAComboBox->currentItem() );
joachim99@68 1054 }
joachim99@68 1055 else
joachim99@68 1056 {
joachim99@68 1057 m_pEncodingBComboBox->setEnabled( true );
joachim99@68 1058 m_pEncodingCComboBox->setEnabled( true );
joachim99@68 1059 m_pEncodingOutComboBox->setEnabled( true );
joachim99@68 1060 m_pEncodingPPComboBox->setEnabled( true );
joachim99@68 1061 }
joachim99@68 1062 }
joachim99@58 1063
joachim99@8 1064 void OptionDialog::setupKeysPage( void )
joachim99@8 1065 {
joachim99@8 1066 //QVBox *page = addVBoxPage( i18n("Keys"), i18n("KeyDialog" ),
joachim99@8 1067 // BarIcon("fonts", KIcon::SizeMedium ) );
joachim99@8 1068
joachim99@8 1069 //QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
joachim99@8 1070 // new KFontChooser( page,"font",false/*onlyFixed*/,QStringList(),false,6 );
joachim99@8 1071 //m_pKeyDialog=new KKeyDialog( false, 0 );
joachim99@8 1072 //topLayout->addWidget( m_pKeyDialog );
joachim99@8 1073 }
joachim99@8 1074
joachim99@8 1075 void OptionDialog::slotOk( void )
joachim99@8 1076 {
joachim99@8 1077 slotApply();
joachim99@8 1078
joachim99@8 1079 // My system returns variable width fonts even though I
joachim99@8 1080 // disabled this. Even QFont::fixedPitch() doesn't work.
joachim99@8 1081 QFontMetrics fm(m_font);
joachim99@8 1082 if ( fm.width('W')!=fm.width('i') )
joachim99@8 1083 {
joachim99@8 1084 int result = KMessageBox::warningYesNo(this, i18n(
joachim99@8 1085 "You selected a variable width font.\n\n"
joachim99@8 1086 "Because this program doesn't handle variable width fonts\n"
joachim99@8 1087 "correctly, you might experience problems while editing.\n\n"
joachim99@8 1088 "Do you want to continue or do you want to select another font."),
joachim99@51 1089 i18n("Incompatible Font"),
joachim99@51 1090 i18n("Continue at Own Risk"), i18n("Select Another Font"));
joachim99@8 1091 if (result==KMessageBox::No)
joachim99@8 1092 return;
joachim99@8 1093 }
joachim99@8 1094
joachim99@8 1095 accept();
joachim99@8 1096 }
joachim99@8 1097
joachim99@8 1098
joachim99@8 1099 /** Copy the values from the widgets to the public variables.*/
joachim99@8 1100 void OptionDialog::slotApply( void )
joachim99@8 1101 {
joachim99@8 1102 std::list<OptionItem*>::iterator i;
joachim99@8 1103 for(i=m_optionItemList.begin(); i!=m_optionItemList.end(); ++i)
joachim99@8 1104 {
joachim99@8 1105 (*i)->apply();
joachim99@8 1106 }
joachim99@8 1107
joachim99@8 1108 // FontConfigDlg
joachim99@8 1109 m_font = m_fontChooser->font();
joachim99@8 1110
joachim99@8 1111 emit applyClicked();
joachim99@8 1112 }
joachim99@8 1113
joachim99@8 1114 /** Set the default values in the widgets only, while the
joachim99@8 1115 public variables remain unchanged. */
joachim99@8 1116 void OptionDialog::slotDefault()
joachim99@8 1117 {
joachim99@8 1118 int result = KMessageBox::warningContinueCancel(this, i18n("This resets all options. Not only those of the current topic.") );
joachim99@8 1119 if ( result==KMessageBox::Cancel ) return;
joachim99@8 1120 else resetToDefaults();
joachim99@8 1121 }
joachim99@8 1122
joachim99@8 1123 void OptionDialog::resetToDefaults()
joachim99@8 1124 {
joachim99@8 1125 std::list<OptionItem*>::iterator i;
joachim99@8 1126 for(i=m_optionItemList.begin(); i!=m_optionItemList.end(); ++i)
joachim99@8 1127 {
joachim99@8 1128 (*i)->setToDefault();
joachim99@8 1129 }
joachim99@8 1130
joachim99@30 1131 #ifdef _WIN32
joachim99@30 1132 m_fontChooser->setFont( QFont("Courier New", 10 ), true /*only fixed*/ );
joachim99@66 1133 #elif defined( KREPLACEMENTS_H )
joachim99@66 1134 m_fontChooser->setFont( QFont("Courier", 10 ), true /*only fixed*/ );
joachim99@30 1135 #else
joachim99@66 1136 m_fontChooser->setFont( KGlobalSettings::fixedFont(), true /*only fixed*/ );
joachim99@30 1137 #endif
joachim99@68 1138 slotEncodingChanged();
joachim99@8 1139 }
joachim99@8 1140
joachim99@8 1141 /** Initialise the widgets using the values in the public varibles. */
joachim99@8 1142 void OptionDialog::setState()
joachim99@8 1143 {
joachim99@8 1144 std::list<OptionItem*>::iterator i;
joachim99@8 1145 for(i=m_optionItemList.begin(); i!=m_optionItemList.end(); ++i)
joachim99@8 1146 {
joachim99@8 1147 (*i)->setToCurrent();
joachim99@8 1148 }
joachim99@8 1149
joachim99@8 1150 m_fontChooser->setFont( m_font, true /*only fixed*/ );
joachim99@68 1151 slotEncodingChanged();
joachim99@8 1152 }
joachim99@8 1153
joachim99@8 1154 void OptionDialog::saveOptions( KConfig* config )
joachim99@8 1155 {
joachim99@8 1156 // No i18n()-Translations here!
joachim99@8 1157
joachim99@8 1158 config->setGroup("KDiff3 Options");
joachim99@8 1159
joachim99@8 1160 std::list<OptionItem*>::iterator i;
joachim99@8 1161 for(i=m_optionItemList.begin(); i!=m_optionItemList.end(); ++i)
joachim99@8 1162 {
joachim99@8 1163 (*i)->write(config);
joachim99@8 1164 }
joachim99@8 1165
joachim99@8 1166 // FontConfigDlg
joachim99@8 1167 config->writeEntry("Font", m_font );
joachim99@8 1168
joachim99@8 1169 // Recent files (selectable in the OpenDialog)
joachim99@8 1170 config->writeEntry( "RecentAFiles", m_recentAFiles, '|' );
joachim99@8 1171 config->writeEntry( "RecentBFiles", m_recentBFiles, '|' );
joachim99@8 1172 config->writeEntry( "RecentCFiles", m_recentCFiles, '|' );
joachim99@8 1173 config->writeEntry( "RecentOutputFiles", m_recentOutputFiles, '|' );
joachim99@8 1174 }
joachim99@8 1175
joachim99@8 1176 void OptionDialog::readOptions( KConfig* config )
joachim99@8 1177 {
joachim99@8 1178 // No i18n()-Translations here!
joachim99@8 1179
joachim99@8 1180 config->setGroup("KDiff3 Options");
joachim99@8 1181
joachim99@8 1182 std::list<OptionItem*>::iterator i;
joachim99@8 1183
joachim99@8 1184 for(i=m_optionItemList.begin(); i!=m_optionItemList.end(); ++i)
joachim99@8 1185 {
joachim99@8 1186 (*i)->read(config);
joachim99@8 1187 }
joachim99@8 1188
joachim99@8 1189 // Use the current values as default settings.
joachim99@8 1190
joachim99@8 1191 // FontConfigDlg
joachim99@8 1192 m_font = config->readFontEntry( "Font", &m_font);
joachim99@8 1193
joachim99@8 1194 // Recent files (selectable in the OpenDialog)
joachim99@8 1195 m_recentAFiles = config->readListEntry( "RecentAFiles", '|' );
joachim99@8 1196 m_recentBFiles = config->readListEntry( "RecentBFiles", '|' );
joachim99@8 1197 m_recentCFiles = config->readListEntry( "RecentCFiles", '|' );
joachim99@8 1198 m_recentOutputFiles = config->readListEntry( "RecentOutputFiles", '|' );
joachim99@8 1199
joachim99@8 1200 setState();
joachim99@8 1201 }
joachim99@8 1202
joachim99@8 1203 void OptionDialog::slotHelp( void )
joachim99@8 1204 {
joachim99@8 1205 KDialogBase::slotHelp();
joachim99@8 1206 }
joachim99@8 1207
joachim99@8 1208 #include "optiondialog.moc"