From 6fdb16ee503199c431e875e96f42dd89cfb13c92 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 27 Mar 2010 21:12:10 +0100 Subject: File and directory diff commands TODO: add GUI to configure diff commands TODO: extract only particular subtree when comparing directories from VFS engines --- UConfig.pas | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'UConfig.pas') diff --git a/UConfig.pas b/UConfig.pas index 1da42a0..9ee6f16 100644 --- a/UConfig.pas +++ b/UConfig.pas @@ -25,8 +25,8 @@ uses Classes, ULocale; resourcestring ConstAppTitle = 'Tux Commander'; - ConstAboutVersion = '0.6.77-dev'; - ConstAboutBuildDate = '2010-03-22'; + ConstAboutVersion = '0.6.78-dev'; + ConstAboutBuildDate = '2010-03-27'; {$IFDEF FPC} {$INCLUDE fpcver.inc} @@ -67,6 +67,8 @@ const ConfDefaultNormalItemFGColor = '#000000'; ConfEditorApps: array[1..5] of string = ('gedit', 'gvim', 'emacs', 'nano', 'vi'); ConfTerminalApps: array[1..4] of string = (ConstTerminalCommand_xterm, ConstTerminalCommand_rxvt, ConstTerminalCommand_rxvt2, ConstTerminalCommand_gnometerminal); ConfTerminalAppsWParam: array[1..4] of string = ('xterm', 'rxvt', 'rxvt', 'gnome-terminal'); + ConfDiffApps: array[1..2] of string = ('meld', 'diff'); + ConfDiffDirAppsDirsParams: array[1..2] of string = ('', '-r'); // Arguments used for diffing whole directories, array linked with ConfDiffApps const SMOOTH_SCROLL_STEPS = 5; @@ -86,12 +88,14 @@ var ConfPanelSep, ConfRowHeight, ConfRowHeightReal, ConfNumHistoryItems, ConfMainWindowLeftSortColumn, ConfMainWindowLeftSortType, ConfMainWindowRightSortColumn, ConfMainWindowRightSortType, ConfSizeFormat, ConfSizeGroupPrecision, ConfCmdLineTerminalBehaviour, ConfViewerTerminalBehaviour, ConfEditorTerminalBehaviour, ConfLeftTabBarTabIndex, ConfRightTabBarTabIndex, ConfSwitchOtherPanelBehaviour, - ConfTabMaxLength, ConfDateFormat, ConfTimeFormat, ConfDateTimeFormat, ConfQuickSearchActivationKey: integer; + ConfTabMaxLength, ConfDateFormat, ConfTimeFormat, ConfDateTimeFormat, ConfQuickSearchActivationKey, + ConfDiffTerminalBehaviour, ConfDiffDirTerminalBehaviour: integer; ConfLeftPath, ConfRightPath, ConfPanelFont, ConfProfileName, ConfViewer, ConfEditor, ConfTerminalCommand, ConfNormalItemFGColor, ConfActiveItemFGColor, ConfInactiveItemFGColor, ConfSelectedItemFGColor, ConfLinkItemFGColor, ConfDotFileItemFGColor, ConfNormalItemBGColor, ConfActiveItemBGColor, ConfInactiveItemBGColor, - ParamLeftDir, ParamRightDir, ConfCustomDateFormat, ConfCustomTimeFormat: string; + ParamLeftDir, ParamRightDir, ConfCustomDateFormat, ConfCustomTimeFormat, + ConfDiffCommand, ConfDiffDirCommand: string; ParamDebug, ConfShowDotFiles, ConfClearReadOnlyAttr, ConfDisableMouseRename, ConfUseSystemFont, ConfUseFileTypeIcons, ConfFocusRefresh, ConfNewStyleAltO, ConfDirsInBold, ConfDisableDirectoryBrackets, ParamDisableGnome, ConfWMCompatMode, @@ -273,6 +277,10 @@ begin ConfReplaceConnectionWarning := True; ConfWarnUnsavedConnection := True; ConfViewerMonospaceFont := False; + ConfDiffTerminalBehaviour := 0; + ConfDiffCommand := ConfAppNA; + ConfDiffDirTerminalBehaviour := 0; + ConfDiffDirCommand := ConfAppNA; // Setup default values for colors @@ -524,6 +532,12 @@ begin ConfReplaceConnectionWarning := IniFile.ReadBool(ConfProfileName, 'ReplaceConnectionWarning', ConfReplaceConnectionWarning); ConfWarnUnsavedConnection := IniFile.ReadBool(ConfProfileName, 'WarnUnsavedConnection', ConfWarnUnsavedConnection); + (********************************************* NEW SINCE 0.6.71 *************************************************) + ConfDiffCommand := IniFile.ReadString(ConfProfileName, 'DiffCommand', ConfDiffCommand); + ConfDiffTerminalBehaviour := IniFile.ReadInteger(ConfProfileName, 'DiffTerminalBehaviour', ConfDiffTerminalBehaviour); + ConfDiffDirCommand := IniFile.ReadString(ConfProfileName, 'DiffDirCommand', ConfDiffDirCommand); + ConfDiffDirTerminalBehaviour := IniFile.ReadInteger(ConfProfileName, 'DiffDirTerminalBehaviour', ConfDiffDirTerminalBehaviour); + SearchForDefaultApps; finally @@ -619,6 +633,12 @@ begin IniFile.WriteBool(ConfProfileName, 'ReplaceConnectionWarning', ConfReplaceConnectionWarning); IniFile.WriteBool(ConfProfileName, 'WarnUnsavedConnection', ConfWarnUnsavedConnection); + (********************************************* NEW SINCE 0.6.71 *************************************************) + IniFile.WriteString(ConfProfileName, 'DiffCommand', ConfDiffCommand); + IniFile.WriteInteger(ConfProfileName, 'DiffTerminalBehaviour', ConfDiffTerminalBehaviour); + IniFile.WriteString(ConfProfileName, 'DiffDirCommand', ConfDiffDirCommand); + IniFile.WriteInteger(ConfProfileName, 'DiffDirTerminalBehaviour', ConfDiffDirTerminalBehaviour); + except on E: Exception do DebugMsg(['*** Error: Cannot save user settings (', E.ClassName, '): ', E.Message]); end; @@ -1100,6 +1120,13 @@ begin ConfTerminalCommand := ConfTerminalApps[i]; Break; end; + if ConfDiffCommand = ConfAppNA then + for i := 1 to Length(ConfDiffApps) do + if FileSearch(ConfDiffApps[i], PATH) <> '' then begin + ConfDiffCommand := ConfDiffApps[i]; + ConfDiffDirCommand := Format('%s %s', [ConfDiffApps[i], ConfDiffDirAppsDirsParams[i]]); + Break; + end; end; (********************************************************************************************************************************) -- cgit v1.2.3