joachim99@8: /* joachim99@8: * kdiff3 - Text Diff And Merge Tool joachim99@77: * Copyright (C) 2002-2007 Joachim Eibl, joachim.eibl at gmx.de joachim99@8: * joachim99@8: * This program is free software; you can redistribute it and/or modify joachim99@8: * it under the terms of the GNU General Public License as published by joachim99@8: * the Free Software Foundation; either version 2 of the License, or joachim99@8: * (at your option) any later version. joachim99@8: * joachim99@8: * This program is distributed in the hope that it will be useful, joachim99@8: * but WITHOUT ANY WARRANTY; without even the implied warranty of joachim99@8: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the joachim99@8: * GNU General Public License for more details. joachim99@8: * joachim99@8: * You should have received a copy of the GNU General Public License joachim99@8: * along with this program; if not, write to the Free Software joachim99@69: * Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. joachim99@8: * joachim99@8: */ joachim99@8: joachim99@8: #ifndef OPTION_DIALOG_H joachim99@8: #define OPTION_DIALOG_H joachim99@8: joachim99@8: joachim99@80: #include joachim99@8: #include joachim99@8: #include joachim99@69: #include joachim99@8: joachim99@8: class OptionItem; joachim99@68: class OptionCheckBox; joachim99@68: class OptionEncodingComboBox; joachim99@69: class OptionLineEdit; joachim99@8: class KKeyDialog; joachim99@8: joachim99@68: enum e_LineEndStyle joachim99@58: { joachim99@80: eLineEndStyleUnix=0, joachim99@80: eLineEndStyleDos, joachim99@80: eLineEndStyleAutoDetect, joachim99@80: eLineEndStyleUndefined, // only one line exists joachim99@92: eLineEndStyleConflict // User must resolve manually joachim99@58: }; joachim99@51: joachim99@80: class OptionDialog : public KPageDialog joachim99@8: { joachim99@8: Q_OBJECT joachim99@8: joachim99@8: public: joachim99@8: joachim99@8: OptionDialog( bool bShowDirMergeSettings, QWidget *parent = 0, char *name = 0 ); joachim99@8: ~OptionDialog( void ); joachim99@80: QString parseOptions( const QStringList& optionList ); joachim99@69: QString calcOptionHelp(); joachim99@69: joachim99@69: // Some settings are not available in the option dialog: joachim99@69: QSize m_geometry; joachim99@69: QPoint m_position; joachim99@75: bool m_bMaximised; joachim99@69: bool m_bShowToolBar; joachim99@69: bool m_bShowStatusBar; joachim99@69: int m_toolBarPos; joachim99@8: joachim99@8: // These are the results of the option dialog. joachim99@8: QFont m_font; joachim99@8: bool m_bItalicForDeltas; joachim99@8: joachim99@8: QColor m_fgColor; joachim99@8: QColor m_bgColor; joachim99@8: QColor m_diffBgColor; joachim99@8: QColor m_colorA; joachim99@8: QColor m_colorB; joachim99@8: QColor m_colorC; joachim99@8: QColor m_colorForConflict; joachim99@8: QColor m_currentRangeBgColor; joachim99@8: QColor m_currentRangeDiffBgColor; joachim99@69: QColor m_oldestFileColor; joachim99@69: QColor m_midAgeFileColor; joachim99@69: QColor m_newestFileColor; joachim99@69: QColor m_missingFileColor; joachim99@69: QColor m_manualHelpRangeColor; joachim99@8: joachim99@66: bool m_bWordWrap; joachim99@68: joachim99@8: bool m_bReplaceTabs; joachim99@8: bool m_bAutoIndentation; joachim99@8: int m_tabSize; joachim99@8: bool m_bAutoCopySelection; joachim99@68: bool m_bSameEncoding; joachim99@68: QTextCodec* m_pEncodingA; joachim99@75: bool m_bAutoDetectUnicodeA; joachim99@68: QTextCodec* m_pEncodingB; joachim99@75: bool m_bAutoDetectUnicodeB; joachim99@68: QTextCodec* m_pEncodingC; joachim99@75: bool m_bAutoDetectUnicodeC; joachim99@68: QTextCodec* m_pEncodingOut; joachim99@75: bool m_bAutoSelectOutEncoding; joachim99@68: QTextCodec* m_pEncodingPP; joachim99@58: int m_lineEndStyle; joachim99@8: joachim99@8: bool m_bPreserveCarriageReturn; joachim99@8: bool m_bTryHard; joachim99@51: bool m_bShowWhiteSpaceCharacters; joachim99@8: bool m_bShowWhiteSpace; joachim99@8: bool m_bShowLineNumbers; joachim99@8: bool m_bHorizDiffWindowSplitting; joachim99@80: bool m_bShowInfoDialogs; joachim99@80: bool m_bDiff3AlignBC; joachim99@8: joachim99@51: int m_whiteSpace2FileMergeDefault; joachim99@51: int m_whiteSpace3FileMergeDefault; joachim99@66: bool m_bIgnoreCase; joachim99@8: bool m_bIgnoreNumbers; joachim99@51: bool m_bIgnoreComments; joachim99@8: QString m_PreProcessorCmd; joachim99@8: QString m_LineMatchingPreProcessorCmd; joachim99@69: bool m_bRunRegExpAutoMergeOnMergeStart; joachim99@69: QString m_autoMergeRegExp; joachim99@69: bool m_bRunHistoryAutoMergeOnMergeStart; joachim99@69: QString m_historyStartRegExp; joachim99@69: QString m_historyEntryStartRegExp; joachim99@69: bool m_bHistoryMergeSorting; joachim99@69: QString m_historyEntryStartSortKeyOrder; joachim99@77: int m_maxNofHistoryEntries; joachim99@69: QString m_IrrelevantMergeCmd; joachim99@77: bool m_bAutoSaveAndQuitOnMergeWithoutConflicts; joachim99@8: joachim99@8: bool m_bAutoAdvance; joachim99@8: int m_autoAdvanceDelay; joachim99@8: joachim99@8: QStringList m_recentAFiles; joachim99@8: QStringList m_recentBFiles; joachim99@8: QStringList m_recentCFiles; joachim99@8: joachim99@8: QStringList m_recentOutputFiles; joachim99@8: joachim99@8: // Directory Merge options joachim99@8: bool m_bDmSyncMode; joachim99@8: bool m_bDmRecursiveDirs; joachim99@8: bool m_bDmFollowFileLinks; joachim99@8: bool m_bDmFollowDirLinks; joachim99@8: bool m_bDmFindHidden; joachim99@8: bool m_bDmCreateBakFiles; joachim99@66: bool m_bDmBinaryComparison; joachim99@66: bool m_bDmFullAnalysis; joachim99@8: bool m_bDmTrustDate; joachim99@77: bool m_bDmTrustDateFallbackToBinary; joachim99@51: bool m_bDmTrustSize; joachim99@8: bool m_bDmCopyNewer; joachim99@69: //bool m_bDmShowOnlyDeltas; joachim99@69: bool m_bDmShowIdenticalFiles; joachim99@8: bool m_bDmUseCvsIgnore; joachim99@68: bool m_bDmWhiteSpaceEqual; joachim99@69: bool m_bDmCaseSensitiveFilenameComparison; joachim99@8: QString m_DmFilePattern; joachim99@8: QString m_DmFileAntiPattern; joachim99@8: QString m_DmDirAntiPattern; joachim99@8: joachim99@58: QString m_language; joachim99@68: bool m_bRightToLeftLanguage; joachim99@69: joachim99@69: QString m_ignorableCmdLineOptions; joachim99@77: bool m_bIntegrateWithClearCase; joachim99@80: bool m_bEscapeKeyQuits; joachim99@69: joachim99@80: void saveOptions(KSharedConfigPtr config); joachim99@80: void readOptions(KSharedConfigPtr config); joachim99@8: joachim99@8: void setState(); // Must be called before calling exec(); joachim99@8: joachim99@8: void addOptionItem(OptionItem*); joachim99@8: KKeyDialog* m_pKeyDialog; joachim99@8: protected slots: joachim99@8: virtual void slotDefault( void ); joachim99@8: virtual void slotOk( void ); joachim99@8: virtual void slotApply( void ); joachim99@69: joachim99@68: void slotEncodingChanged(); joachim99@69: void slotHistoryMergeRegExpTester(); joachim99@77: void slotIntegrateWithClearCase(); joachim99@77: void slotRemoveClearCaseIntegration(); joachim99@80: signals: joachim99@80: void applyDone(); joachim99@8: private: joachim99@8: void resetToDefaults(); joachim99@51: joachim99@8: std::list m_optionItemList; joachim99@51: joachim99@68: OptionCheckBox* m_pSameEncoding; joachim99@68: OptionEncodingComboBox* m_pEncodingAComboBox; joachim99@75: OptionCheckBox* m_pAutoDetectUnicodeA; joachim99@68: OptionEncodingComboBox* m_pEncodingBComboBox; joachim99@75: OptionCheckBox* m_pAutoDetectUnicodeB; joachim99@68: OptionEncodingComboBox* m_pEncodingCComboBox; joachim99@75: OptionCheckBox* m_pAutoDetectUnicodeC; joachim99@68: OptionEncodingComboBox* m_pEncodingOutComboBox; joachim99@75: OptionCheckBox* m_pAutoSelectOutEncoding; joachim99@68: OptionEncodingComboBox* m_pEncodingPPComboBox; joachim99@69: OptionCheckBox* m_pHistoryAutoMerge; joachim99@69: OptionLineEdit* m_pAutoMergeRegExpLineEdit; joachim99@69: OptionLineEdit* m_pHistoryStartRegExpLineEdit; joachim99@69: OptionLineEdit* m_pHistoryEntryStartRegExpLineEdit; joachim99@69: OptionCheckBox* m_pHistoryMergeSorting; joachim99@69: OptionLineEdit* m_pHistorySortKeyOrderLineEdit; joachim99@8: joachim99@8: private: joachim99@8: void setupFontPage(); joachim99@8: void setupColorPage(); joachim99@8: void setupEditPage(); joachim99@8: void setupDiffPage(); joachim99@75: void setupMergePage(); joachim99@8: void setupDirectoryMergePage(); joachim99@8: void setupKeysPage(); joachim99@58: void setupRegionalPage(); joachim99@69: void setupIntegrationPage(); joachim99@51: void setupOtherOptions(); joachim99@8: }; joachim99@8: joachim99@8: joachim99@8: joachim99@58: joachim99@8: #endif joachim99@8: joachim99@8: joachim99@8: joachim99@8: joachim99@8: joachim99@8: joachim99@8: