summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Application.cpp54
-rw-r--r--Changelog.txt11
-rw-r--r--FreeFileSync - Unicode.cbp4
-rw-r--r--FreeFileSync.cpp50
-rw-r--r--Makefile_Win_ANSI.cmd31
-rw-r--r--Makefile_Win_Unicode.cmd30
-rw-r--r--Readme.txt43
-rw-r--r--Resources.datbin113685 -> 113612 bytes
-rw-r--r--french.lng316
-rw-r--r--german.lng176
-rw-r--r--lang.datbin4 -> 0 bytes
-rw-r--r--library/misc.cpp18
-rw-r--r--library/misc.h4
-rw-r--r--library/multithreading.cpp14
-rw-r--r--library/multithreading.h1
-rw-r--r--ui/MainDialog.cpp22
-rw-r--r--ui/guiGenerated.cpp37
-rw-r--r--ui/guiGenerated.h4
18 files changed, 439 insertions, 376 deletions
diff --git a/Application.cpp b/Application.cpp
index 7a4f2831..260a5943 100644
--- a/Application.cpp
+++ b/Application.cpp
@@ -57,29 +57,28 @@ void Application::initialize()
//test if ffs is to be started on UI with config file passed as commandline parameter
wxString configFileForUI = FreeFileSync::FfsLastConfigFile;
- if (argc > 1 && wxFileExists(argv[1]) && FreeFileSync::isFFS_ConfigFile(argv[1]))
- configFileForUI = argv[1];
-
- //should it start in commandline mode?
- else if (argc > 1)
+ if (argc > 1)
{
- parseCommandline();
-
- if (applicationRunsOnCommandLineWithoutWindows)
+ if (FreeFileSync::isFFS_ConfigFile(argv[1]))
+ configFileForUI = argv[1];
+ else //start in commandline mode?
{
- ExitMainLoop(); //exit programm on next main loop iteration
- return;
+ parseCommandline();
+
+ if (applicationRunsOnCommandLineWithoutWindows)
+ {
+ ExitMainLoop(); //exit programm on next main loop iteration
+ return;
+ }
+ else
+ return; //wait for the user to close the status window
}
- else
- return; //wait for the user to close the status window
- }
- else //no parameters passed: continue with UI
- {
- //show UI dialog
- MainDialog* frame = new MainDialog(NULL, configFileForUI, &programLanguage);
- frame->SetIcon(*GlobalResources::programIcon); //set application icon
- frame->Show();
}
+
+ //start om GUI mode
+ MainDialog* frame = new MainDialog(NULL, configFileForUI, &programLanguage);
+ frame->SetIcon(*GlobalResources::programIcon); //set application icon
+ frame->Show();
}
@@ -142,7 +141,7 @@ void Application::logInit()
logWrite(_("Start"));
logFile.Write(wxChar('\n'));
-totalTime.Start(); //measure total time
+ totalTime.Start(); //measure total time
}
@@ -194,7 +193,13 @@ void Application::parseCommandline()
wxCMD_LINE_OPTION,
GlobalResources::paramCfg,
NULL,
- _("Specify the sync-direction used for each type of file by a string of five chars:\n\n\t\tChar 1: Folders/files that exist on left side only\n\t\tChar 2: Folders/files that exist on right side only\n\t\tChar 3: Files that exist on both sides, left one is newer\n\t\tChar 4: Files that exist on both sides, right one is newer\n\t\tChar 5: Files that exist on both sides and are different\n\n\t\tSync-direction: L: left, R: right, N: none\n"),
+ wxString(_("Specify the sync-direction used for each type of file by a string of five chars:\n\n")) +
+ _("\t\tChar 1: Folders/files that exist on left side only\n") +
+ _("\t\tChar 2: Folders/files that exist on right side only\n") +
+ _("\t\tChar 3: Files that exist on both sides, left one is newer\n") +
+ _("\t\tChar 4: Files that exist on both sides, right one is newer\n") +
+ _("\t\tChar 5: Files that exist on both sides and are different\n") +
+ _("\n\t\tSync-direction: L: left, R: right, N: none\n"),
wxCMD_LINE_VAL_STRING,
wxCMD_LINE_OPTION_MANDATORY
},
@@ -235,7 +240,7 @@ void Application::parseCommandline()
wxCMD_LINE_SWITCH,
GlobalResources::paramContinueError,
NULL,
- _("If errors occur during folder comparison or synchronization they are ignored and the process continues\n")
+ _("If errors occur during folder comparison or synchronization they are ignored and the process continues.\n")
},
{
@@ -249,7 +254,10 @@ void Application::parseCommandline()
wxCMD_LINE_SWITCH,
GlobalResources::paramSilent,
NULL,
- wxString(_("Do not show graphical status and error messages but write to a logfile instead")) + _(".\n\nExamples:\n\n1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n1: Creates a mirror backup of the left directory\n2: Synchronizes all *.doc files from both directories simultaneously\n\n")
+ wxString(_("Do not show graphical status and error messages but write to a logfile instead.\n\n")) +
+ _("\tExamples:\n\n\t1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n\t2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n") +
+ _("\t1: Creates a mirror backup of the left directory\n\t2: Synchronizes all *.doc files from both directories simultaneously\n\n") +
+ _("\tHint: You can easily generate a batch file by chosing \"Create batch job\" from the GUI menubar.\n")
},
{
diff --git a/Changelog.txt b/Changelog.txt
index 967a1dd4..ec93a2e6 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,6 +1,17 @@
FreeFileSync
------------
+Changelog v1.9
+--------------
+Fixed wxWidgets multithreading issue that could cause synchronization to hang occasionally
+Fixed issue with %1 parameter
+Fixed issue with recycle bin usage in unicode mode
+Added uninstaller
+New installer option to associate *.ffs files with FreeFileSync
+Transformed language files to Unicode (UTF-8)
+Delete elements in configuration history list via DELETE key
+
+
Changelog v1.8
--------------
Enhanced statusbar information
diff --git a/FreeFileSync - Unicode.cbp b/FreeFileSync - Unicode.cbp
index bc01b6bb..95254fa4 100644
--- a/FreeFileSync - Unicode.cbp
+++ b/FreeFileSync - Unicode.cbp
@@ -15,10 +15,10 @@
<Compiler>
<Add option="-g" />
<Add option="-D__WXDEBUG__" />
- <Add directory="C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\mswd" />
+ <Add directory="C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\mswud" />
</Compiler>
<ResourceCompiler>
- <Add directory="C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\mswd" />
+ <Add directory="C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\mswud" />
</ResourceCompiler>
<Linker>
<Add library="libwxmsw28ud_adv.a" />
diff --git a/FreeFileSync.cpp b/FreeFileSync.cpp
index 6ab38e68..c7c07667 100644
--- a/FreeFileSync.cpp
+++ b/FreeFileSync.cpp
@@ -621,11 +621,6 @@ private:
};
-#ifdef FFS_WIN
-typedef WINSHELLAPI int (*DllFileOP)(LPSHFILEOPSTRUCT lpFileOp);
-#endif // FFS_WIN
-
-
class RecycleBin
{
public:
@@ -633,29 +628,11 @@ public:
recycleBinAvailable(false)
{
#ifdef FFS_WIN
- // Get a handle to the DLL module containing Recycle Bin functionality
- hinstShell = LoadLibrary(wxT("shell32.dll"));
- if (hinstShell != NULL)
- {
- fileOperation = (DllFileOP)GetProcAddress(hinstShell, "SHFileOperation");
- if (fileOperation == NULL )
- {
- FreeLibrary(hinstShell);
- recycleBinAvailable = false;
- }
- else
recycleBinAvailable = true;
- }
#endif // FFS_WIN
}
- ~RecycleBin()
- {
-#ifdef FFS_WIN
- if (recycleBinAvailable)
- FreeLibrary(hinstShell);
-#endif // FFS_WIN
- }
+ ~RecycleBin() {}
bool recycleBinExists()
{
@@ -668,10 +645,9 @@ public:
throw RuntimeException(_("Initialization of Recycle Bin failed! It cannot be used!"));
#ifdef FFS_WIN
- SHFILEOPSTRUCT fileOp;
-
wxString filenameDoubleNull = filename + wxChar(0);
+ SHFILEOPSTRUCT fileOp;
fileOp.hwnd = NULL;
fileOp.wFunc = FO_DELETE;
fileOp.pFrom = filenameDoubleNull.c_str();
@@ -681,18 +657,13 @@ public:
fileOp.hNameMappings = NULL;
fileOp.lpszProgressTitle = NULL;
- if (fileOperation(&fileOp //pointer to an SHFILEOPSTRUCT structure that contains information the function needs to carry out
+ if (SHFileOperation(&fileOp //pointer to an SHFILEOPSTRUCT structure that contains information the function needs to carry out
) != 0 || fileOp.fAnyOperationsAborted) throw FileError(wxString(_("Error moving file ")) + wxT("\"") + filename + wxT("\"") + _(" to recycle bin!"));
#endif // FFS_WIN
}
private:
bool recycleBinAvailable;
-
-#ifdef FFS_WIN
- HINSTANCE hinstShell;
- DllFileOP fileOperation;
-#endif // FFS_WIN
};
@@ -1559,19 +1530,22 @@ void FreeFileSync::startSynchronizationProcess(FileCompareResult& grid, const Sy
bool FreeFileSync::isFFS_ConfigFile(const wxString& filename)
{
- wxFFile configFile(filename.c_str(), wxT("rb"));
+ if (!wxFileExists(filename))
+ return false;
+
+ wxFFile configFile(filename, wxT("rb"));
if (!configFile.IsOpened())
return false;
- char bigBuffer[10000];
+ char buffer[FreeFileSync::FfsConfigFileID.size() + 1];
//read FFS identifier
- size_t bytesRead = configFile.Read(bigBuffer, FreeFileSync::FfsConfigFileID.size());
+ size_t bytesRead = configFile.Read(buffer, FreeFileSync::FfsConfigFileID.size());
- if (!configFile.Error() && bytesRead < 10000)
+ if (!configFile.Error() && bytesRead < 1000)
{
- bigBuffer[bytesRead] = 0;
- return (FfsConfigFileID == string(bigBuffer));
+ buffer[bytesRead] = 0;
+ return (FfsConfigFileID == string(buffer));
}
else
return false;
diff --git a/Makefile_Win_ANSI.cmd b/Makefile_Win_ANSI.cmd
index cbe1aebe..5b9a84be 100644
--- a/Makefile_Win_ANSI.cmd
+++ b/Makefile_Win_ANSI.cmd
@@ -1,20 +1,27 @@
+::set these variables to the appropriate directories
set widgets=C:\Programme\CodeBlocks\wxWidgets
set widgetslib=C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\msw
set sources=C:\Programme\CodeBlocks\Projects\FreeFileSync
+set mingw=C:\Programme\CodeBlocks\MinGW\bin
-md obj
+path=%path%;%mingw%
+::convert file from UTF-8 to standard ANSI encoding; ICONV is part of MinGW - MSYS Supplementary Tools
+iconv -f UTF-8 -t ISO-8859-1 %sources%\ui\guiGenerated.cpp > %sources%\ui\guiGenerated_ansi.cpp
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\application.cpp -o obj\Application.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\FreeFileSync.cpp -o obj\FreeFileSync.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\globalFunctions.cpp -o obj\globalFunctions.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\multithreading.cpp -o obj\multithreading.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\guiGenerated.cpp -o obj\GUI_Generated.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\mainDialog.cpp -o obj\MainDialog.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\syncDialog.cpp -o obj\SyncDialog.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\customGrid.cpp -o obj\CustomGrid.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\resources.cpp -o obj\Resources.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\misc.cpp -o obj\misc.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\smallDialogs.cpp -o obj\SmallDialogs.o
+set parameters=-Wall -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG
+if not exist obj md obj
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\application.cpp -o obj\Application.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\FreeFileSync.cpp -o obj\FreeFileSync.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\globalFunctions.cpp -o obj\globalFunctions.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\multithreading.cpp -o obj\multithreading.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\guiGenerated_ansi.cpp -o obj\GUI_Generated.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\mainDialog.cpp -o obj\MainDialog.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\syncDialog.cpp -o obj\SyncDialog.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\customGrid.cpp -o obj\CustomGrid.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\resources.cpp -o obj\Resources.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\misc.cpp -o obj\misc.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\smallDialogs.cpp -o obj\SmallDialogs.o
windres.exe -i %sources%\resource.rc -J rc -o obj\resource.res -O coff -I%widgets%\include -I%widgetslib%
mingw32-g++.exe -L%widgets%\lib\gcc_lib -o FreeFileSync.exe obj\Application.o obj\FreeFileSync.o obj\globalFunctions.o obj\multithreading.o obj\misc.o obj\GUI_Generated.o obj\MainDialog.o obj\SyncDialog.o obj\CustomGrid.o obj\Resources.o obj\SmallDialogs.o obj\resource.res -s -mthreads -lwxmsw28_adv -lwxmsw28_core -lwxbase28 -lwxpng -lwxzlib -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lcomctl32 -lwsock32 -lodbc32 -mwindows
+del %sources%\ui\guiGenerated_ansi.cpp
pause \ No newline at end of file
diff --git a/Makefile_Win_Unicode.cmd b/Makefile_Win_Unicode.cmd
index ab4541bb..e1f54f67 100644
--- a/Makefile_Win_Unicode.cmd
+++ b/Makefile_Win_Unicode.cmd
@@ -1,21 +1,23 @@
+::set these variables to the appropriate directories
set widgets=C:\Programme\CodeBlocks\wxWidgets
set widgetslib=C:\Programme\CodeBlocks\wxWidgets\lib\gcc_lib\mswu
set sources=C:\Programme\CodeBlocks\Projects\FreeFileSync
+set mingw=C:\Programme\CodeBlocks\MinGW\bin
-md obj
-
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\application.cpp -o obj\Application.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\FreeFileSync.cpp -o obj\FreeFileSync.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\globalFunctions.cpp -o obj\globalFunctions.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\multithreading.cpp -o obj\multithreading.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\guiGenerated.cpp -o obj\GUI_Generated.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\mainDialog.cpp -o obj\MainDialog.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\syncDialog.cpp -o obj\SyncDialog.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\customGrid.cpp -o obj\CustomGrid.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\resources.cpp -o obj\Resources.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\misc.cpp -o obj\misc.o
-mingw32-g++.exe -Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\smallDialogs.cpp -o obj\SmallDialogs.o
+set parameters=-Wall -pipe -mthreads -D__GNUWIN32__ -DwxUSE_UNICODE -D__WXMSW__ -DFFS_WIN -O2 -DNDEBUG
+path=%path%;%mingw%
+if not exist obj md obj
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\application.cpp -o obj\Application.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\FreeFileSync.cpp -o obj\FreeFileSync.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\globalFunctions.cpp -o obj\globalFunctions.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\multithreading.cpp -o obj\multithreading.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\guiGenerated.cpp -o obj\GUI_Generated.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\mainDialog.cpp -o obj\MainDialog.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\syncDialog.cpp -o obj\SyncDialog.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\customGrid.cpp -o obj\CustomGrid.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\resources.cpp -o obj\Resources.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\library\misc.cpp -o obj\misc.o
+mingw32-g++.exe %parameters% -I%widgets%\include -I%widgets%\contrib\include -I%widgetslib% -c %sources%\ui\smallDialogs.cpp -o obj\SmallDialogs.o
windres.exe -i %sources%\resource.rc -J rc -o obj\resource.res -O coff -I%widgets%\include -I%widgetslib%
mingw32-g++.exe -L%widgets%\lib\gcc_lib -o FreeFileSync.exe obj\Application.o obj\FreeFileSync.o obj\globalFunctions.o obj\multithreading.o obj\misc.o obj\GUI_Generated.o obj\MainDialog.o obj\SyncDialog.o obj\CustomGrid.o obj\Resources.o obj\SmallDialogs.o obj\resource.res -s -mthreads -lwxmsw28u_adv -lwxmsw28u_core -lwxbase28u -lwxpng -lwxzlib -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lcomctl32 -lwsock32 -lodbc32 -mwindows
-
pause \ No newline at end of file
diff --git a/Readme.txt b/Readme.txt
index 99faccf9..33c9f158 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,4 +1,4 @@
-FreeFileSync v1.8
+FreeFileSync v1.9
-----------------
Usage
@@ -7,37 +7,38 @@ Usage
2. Select "Synchronize..." to specify settings and begin synchronization.
-Features
---------
+Key Features
+------------
1. Compare files (bytewise or by date) and synchronize them.
2. No limitations: An arbitrary number of files can be synchronized.
-3. Subfolders are also synchronized, including empty folders.
-4. Unicode support.
-5. Network support.
-6. Lean & easy accessible UI: Highly optimized for speed and huge sets of data.
-7. Algorithms coded in C++ completely.
-8. Focus on usability:
+3. Unicode support.
+4. Network support.
+5. Lean & easy accessible UI: Highly optimized for speed and huge sets of data.
+6. Algorithms coded in C++ completely.
+7. Progress indicators are updated only every 100ms for optimal performance!
+8. Subfolders are also synchronized, including empty folders.
+9. Focus on usability:
- Only necessary functionality on UI: no overloaded menus or icon jungle.
- Select folders via drag & drop.
- Last configuration and screen settings are saved automatically.
- Maintain and load different configurations by drag&drop, load-button or commandline.
- - Double-click to show file in explorer.
+ - Double-click to show file in explorer. (Windows only)
- Copy & paste support to export file-lists.
- Delete superfluous/temporary files directly on main grid.
- Right-click context menu.
- - Progress indicators, status information and error reporting.
+ - Status information and error reporting
- Sort file-lists by name, size or date.
- Display statistical data: total filesizes, amount of bytes that will be transfered with the current settings.
-9. Easy configurable commandline mode for automated synchronization.
-10. Support for filesizes > 4 GB.
-11. Option to move files to Recycle Bin instead of deleting/overwriting them.
-12. Automatically ignore directories "\RECYCLER" and "\System Volume Information" when comparing and syncing. (Windows only)
-13. Localized German version available.
-14. Delete before copy: Avoid disc space shortages with large sync-operations.
-15. Based on wxWidgets framework => Portable to many operating systems.
-16. Filter functionality to include/exclude files from synchronization (without re-compare!).
-17. Include/exclude specific files from synchronization manually.
-18. Create sync jobs via GUI to synchronize automatically (can be scheduled or executed directly).
+10. Easy configurable commandline mode for automated synchronization.
+11. Support for filesizes > 4 GB.
+12. Option to move files to Recycle Bin instead of deleting/overwriting them.
+13. Automatically ignore directories "\RECYCLER" and "\System Volume Information" when comparing and sync'ing. (Windows only)
+14. Localized English, French and German versions available.
+15. Delete before copy: Avoid disc space shortages with large sync-operations.
+16. Based on wxWidgets framework => Portable to many operating systems.
+17. Filter functionality to include/exclude files from synchronization (without re-compare!).
+18. Include/exclude specific files from synchronization manually.
+19. Create sync jobs via GUI to synchronize automatically (can be scheduled or executed directly).
Links
diff --git a/Resources.dat b/Resources.dat
index 7d27b27e..c607e687 100644
--- a/Resources.dat
+++ b/Resources.dat
Binary files differ
diff --git a/french.lng b/french.lng
index 5fc49de5..16d939c0 100644
--- a/french.lng
+++ b/french.lng
@@ -11,13 +11,13 @@
TB
To
You may try to synchronize remaining items again (WITHOUT having to re-compare)!
- Vous pouvez essayer de synchroniser à nouveau les éléments restants (SANS avoir à les re-comparer) !
+ Vous pouvez essayer de synchroniser à nouveau les éléments restants (SANS avoir à les re-comparer) !
already exists. Overwrite?
- existe déjà. Voulez-vous le remplacer ?
+ existe déjà. Voulez-vous le remplacer ?
directories
- répertoires
+ répertoires
directory
- répertoire
+ répertoire
does not exist.
n'existe pas.
file,
@@ -25,7 +25,7 @@
files,
fichiers,
item(s):\n\n
- Elément(s):\n\n
+ Elément(s):\n\n
kB
ko
of
@@ -39,15 +39,15 @@
to
vers
to recycle bin!
- à la corbeille !
+ à la corbeille !
!= files are different\n
-!= les fichiers sont différents\n
+!= les fichiers sont différents\n
&Abort
&Abandon
&About...
&A propos de...
&Advanced
-&Avancé
+&Avancé
&Back
&Retour
&Cancel
@@ -57,11 +57,11 @@
&Continue
&Continuer
&Create
-&Créer
+&Créer
&Create batch job
-&Créer un fichier de commandes
+&Créer un fichier de commandes
&Default
-&Défaut
+&Défaut
&Export file list
&Exportation de la liste des fichiers
&File
@@ -77,13 +77,13 @@
&Quit
&Quitter
&Retry
-&Réessayer
+&Réessayer
&Start
-&Démarrage
+&Démarrage
&Synchronize
&Synchronisation
(-) filtered out from sync-process\n
-(-) non synchronisés\n
+(-) non synchronisés\n
,
.
-------------------------------------------------
@@ -96,60 +96,58 @@
-Synchronisation de fichiers Open-Source-
.
,
-.\n\nExamples:\n\n1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n1: Creates a mirror backup of the left directory\n2: Synchronizes all *.doc files from both directories simultaneously\n\n
-.\n\nExemples :\n\n1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n1: Crée une sauvegarde miroir du répertoire de gauche\n2: Synchronise tous les fichiers *.doc sur les deux répertoires\n\n
1. Enter full file or directory names separated by ';'.\n2. Wildcard characters '*' and '?' are supported.\n3. Case sensitive expressions!\n\nExample: *.tmp;*\\filename.dat;*\\directory\\*
-1. Entrer les noms complets des fichiers ou répertoires séparés par des ';'.\n2. Les caractères génériques '*' et '?' sont supportés.\n3. La distinction est faite entre majuscules et minuscules!\n\nExemple: *.tmp;*\\fichier.dat;*\\repert\\*
+1. Entrer les noms complets des fichiers ou répertoires séparés par des ';'.\n2. Les caractères génériques '*' et '?' sont supportés.\n3. La distinction est faite entre majuscules et minuscules!\n\nExemple: *.tmp;*\\fichier.dat;*\\repert\\*
: check file content\n
-: Contrôle le contenu du fichier\n
+: Contrôle le contenu du fichier\n
: check filesize and date\n\t\t
-: Contrôle la taille et la date\n\t\t
+: Contrôle la taille et la date\n\t\t
<< left file is newer\n
-<< le fichier de gauche est plus récent\n
+<< le fichier de gauche est plus récent\n
<Directory>
-<Répertoire>
+<Répertoire>
<left directory>
-<répertoire de gauche>
+<répertoire de gauche>
<right directory>
-<répertoire de droite>
+<répertoire de droite>
<| file on left side only\n
-<| Le fichier existe seulement à gauche\n
+<| Le fichier existe seulement à gauche\n
== files are equal\n\n
== Les fichiers sont identiques\n\n
>> right file is newer\n
->> le fichier de droite est plus récent\n
+>> le fichier de droite est plus récent\n
Abort
Abandon
Abort requested: Waiting for current operation to finish...
-Abandon demandé: En attente de la fin de l'opération en cours...
+Abandon demandé: En attente de la fin de l'opération en cours...
Aborted
-Abandonné
+Abandonné
About
A propos de
Action
Action
All items have been synchronized!
-Tous les éléments ont été synchronisés!
+Tous les éléments ont été synchronisés!
An error occured
Une erreur s'est produite
An exception occured!
Une violation s'est produite!
Assemble a batch file with the following settings. To start synchronization in batch mode simply execute this file or schedule it in your operating system's task planner.
-Créer un fichier de commandes avec les paramètres suivants. Pour lancer la synchronisation en mode batch, exécutez ce fichier ou paramétrez-le dans le planificateur de tâches.
+Créer un fichier de commandes avec les paramètres suivants. Pour lancer la synchronisation en mode batch, exécutez ce fichier ou paramétrez-le dans le planificateur de tâches.
Batch file created successfully!
-Fichier de commandes créé avec succès!
+Fichier de commandes créé avec succès!
Build:
-Créé:
+Créé:
Choose to hide filtered files/directories from list
-Masquer les fichiers/répertoires filtrés
+Masquer les fichiers/répertoires filtrés
Comma separated list
-Liste d'éléments séparés par une virgule
+Liste d'éléments séparés par une virgule
Command file
Fichier de commandes
Compare both sides
Comparer les deux listes
Compare by \"File size and date\"\n----------------------------------------\nThis variant evaluates two equally named files as being equal when they have the same file size AND the same last write date and time. Notice that the file time is allowed to deviate by up to 2 seconds. This ensures synchronization with the lower-precision file system FAT32 works correctly.\n\nWhen \"Compare\" is triggered with this option set the following decision tree is processed:\n\n -----------------\n |Decision tree|\n -----------------\n ________|___________\n | |\n file exists on both sides on one side only\n _____|______ __|___\n | | | |\nequal different left right\n _________|__________\n | | |\n left newer right newer same date\n\nAs a result 6 different status can be returned to categorize all files:\n\n- exists left only\n- exists right only\n- left newer\n- right newer\n- different filesize (but same date)\n- equal\n\n\nCompare by \"File content\"\n----------------------------------------\nAs the name suggests, two files which share the same name are marked as equal if and only if they have the same content. This option is useful for consistency checks rather than backup operations. Therefore the file times are not taken into account at all.\n\nWith this option enabled the decision tree is smaller:\n\n -----------------\n |Decision tree|\n -----------------\n ________|___________\n | |\n file exists on both sides on one side only\n _____|______ __|___\n | | | |\nequal different left right\n\nAs a result the files are separated into the following categories:\n\n- exists left only\n- exists right only\n- different\n- equal
-Comparaison par \"taille et date\"\n---------------------------------------------------\nCette variante identifie deux fichiers identiques lorsqu'ils ont la même taille ET la même date de création. (Note : l'heure est calculée à plus ou moins 2 secondes.)\n\nLorsque \"Compare\" est lancé avec cette option, l'arbre de décision est évalué comme suit :\n\n -------------------------\n | Arbre de décision |\n -------------------------\n _______________________|___________________\n | |\n le fichier existe des 2 cotés Sur un seul côté\n __________|_____________ ____|___\n | | | |\n identique différent gauche droite\n __________________|__________________\n | | |\n plus récent à gauche plus récent à droite différents (mais même date)\n\nRésultat : 6 états permettent de différencier tous les fichiers:\n\n- existe seulement à gauche\n- existe seulement à droite\n- plus récent à gauche\n- plus récent à droite\n- différents (mais même date)\n- identiques\n\n\nComparaison du \"contenu\"\n------------------------------------\nComme indiqué, deux fichiers de même nom sont considérés comme identiques si, et seulement si, leur contenu est identique. Cette option sert plus aux contrôles de cohérence qu'aux opérations de sauvegarde. Pour cette raison, la date de la dernière modification des fichiers n'est pas pris en compte.\n\nAvec cette option, l'arbre de décision est plus simple:\n\n -------------------------\n | Arbre de décision |\n -------------------------\n __________|_____________\n | |\n le fichier existe des deux côtés seulement d'un côté\n ______|______ __|___\n | | | |\n identiques différents à gauche à droite\n\nRésultat : une répartition dans les catégories suivantes:\n\n- existe à gauche seulement\n- existe à droite seulement\n- différents\n- identiques
+Comparaison par \"taille et date\"\n---------------------------------------------------\nCette variante identifie deux fichiers identiques lorsqu'ils ont la même taille ET la même date de création. (Note : l'heure est calculée à plus ou moins 2 secondes.)\n\nLorsque \"Compare\" est lancé avec cette option, l'arbre de décision est évalué comme suit :\n\n -------------------------\n | Arbre de décision |\n -------------------------\n _______________________|___________________\n | |\n le fichier existe des 2 cotés Sur un seul côté\n __________|_____________ ____|___\n | | | |\n identique différent gauche droite\n __________________|__________________\n | | |\n plus récent à gauche plus récent à droite différents (mais même date)\n\nRésultat : 6 états permettent de différencier tous les fichiers:\n\n- existe seulement à gauche\n- existe seulement à droite\n- plus récent à gauche\n- plus récent à droite\n- différents (mais même date)\n- identiques\n\n\nComparaison du \"contenu\"\n------------------------------------\nComme indiqué, deux fichiers de même nom sont considérés comme identiques si, et seulement si, leur contenu est identique. Cette option sert plus aux contrôles de cohérence qu'aux opérations de sauvegarde. Pour cette raison, la date de la dernière modification des fichiers n'est pas pris en compte.\n\nAvec cette option, l'arbre de décision est plus simple:\n\n -------------------------\n | Arbre de décision |\n -------------------------\n __________|_____________\n | |\n le fichier existe des deux côtés seulement d'un côté\n ______|______ __|___\n | | | |\n identiques différents à gauche à droite\n\nRésultat : une répartition dans les catégories suivantes:\n\n- existe à gauche seulement\n- existe à droite seulement\n- différents\n- identiques
Compare by...
Comparaison par...
Comparing content of files
@@ -157,21 +155,21 @@ Comparaison du contenu des fichiers en cours
Comparing...
Comparaison en cours...
Completed
-Terminé
+Terminé
Configuration
Configuration
Configuration loaded!
-Configuration chargée!
+Configuration chargée!
Configuration overview:
-Contrôle des paramètres:
+Contrôle des paramètres:
Configuration saved!
-Configuration enregistrée!
+Configuration enregistrée!
Configure filter
Configuration des filtres
Configure filter...
Configuration des filtres...
Configure your own synchronization rules.
-Paramétrage de vos règles de synchronisation.
+Paramétrage de vos règles de synchronisation.
Confirm
Confirmation
Continue
@@ -181,13 +179,13 @@ Continuer en cas d'erreur
Continue on next errors
Continuer sur les erreurs suivantes
Copy from left to right
-Copie de gauche à droite
+Copie de gauche à droite
Copy from left to right overwriting
-Copie de gauche à droite avec remplacement
+Copie de gauche à droite avec remplacement
Copy from right to left
-Copie de droite à gauche
+Copie de droite à gauche
Copy from right to left overwriting
-Copie de droite à gauche avec remplacement
+Copie de droite à gauche avec remplacement
Copy to clipboard\tCTRL+C
Copier dans le presse-papiers\tCTRL+C
Copying file
@@ -201,31 +199,31 @@ Impossible de lire le fichier de langue
Could not retrieve file info for:
Erreur lors de la lecture des attributs de fichier de :
Could not set working directory to directory containing executable file!
-Impossible de définir le répertoire de travail à partir du répertoire contenant le fichier exécutable!
+Impossible de définir le répertoire de travail à partir du répertoire contenant le fichier exécutable!
Could not write to
-Erreur en écriture sur
+Erreur en écriture sur
Create a batch job
-Création du fichier de commandes
+Création du fichier de commandes
Create:
-Créations:
+Créations:
Creating folder
-Création d'un répertoire
+Création d'un répertoire
Current operation:
-Opération en cours:
+Opération en cours:
Custom
Personnaliser
Data remaining:
-Données restantes:
+Données restantes:
Data to compare:
-Données à comparer:
+Données à comparer:
Data:
-Données:
+Données:
Date
Date
Delete files/folders existing on left side only
-Suppression des fichiers/répertoires n'existant que sur le côté gauche
+Suppression des fichiers/répertoires n'existant que sur le côté gauche
Delete files/folders existing on right side only
-Suppression des fichiers/répertoires n'existant que sur le côté droit
+Suppression des fichiers/répertoires n'existant que sur le côté droit
Delete files\tDEL
Suppression des fichiers\tDEL
Delete:
@@ -233,19 +231,21 @@ Suppressions:
Deleting file
Suppression du fichier
Deleting folder
-Suppression du répertoire
+Suppression du répertoire
Deutsch
Deutsch
Directory
-Répertoire
+Répertoire
Directory on the left does not exist. Please select a new one!
-Le répertoire de gauche n'existe pas. Veuillez en choisir un autre!
+Le répertoire de gauche n'existe pas. Veuillez en choisir un autre!
Directory on the right does not exist. Please select a new one!
-Le répertoire de droite n'existe pas. Veuillez en choisir un autre
+Le répertoire de droite n'existe pas. Veuillez en choisir un autre
Displays help on the command line parameters\n
-Aide sur les paramètres de la ligne de commandes\n
+Aide sur les paramètres de la ligne de commandes\n
Do not show graphical status and error messages but write to a logfile instead
-Ne pas afficher l'état graphique ni les messages mais les écrire sur un fichier log
+Ne pas afficher l'état graphique ni les messages mais les écrire sur un fichier log
+Do not show graphical status and error messages but write to a logfile instead.\n\n
+Ne pas afficher l'état graphique ni les messages mais les écrire sur un fichier log.\n\n
Do nothing
Ne rien faire
Do you really want to delete the following objects(s)?
@@ -255,7 +255,7 @@ Voulez-vous vraiment envoyer les objets suivants dans la corbeille ?
Donate with Paypal
Don avec Paypal
Drag && drop
-Glisser && Déposer
+Glisser && Déposer
Email:
Email:
English
@@ -271,17 +271,17 @@ Erreur lors de la conversion de FILETIME en FILETIME local
Error copying file
Erreur lors de la copie du fichier
Error creating directory
-Erreur lors de la création du répertoire
+Erreur lors de la création du répertoire
Error deleting directory
-Erreur lors de la suppression du répertoire
+Erreur lors de la suppression du répertoire
Error deleting file
Erreur lors de la suppression du fichier
Error moving file
-Erreur lors du déplacement du fichier
+Erreur lors du déplacement du fichier
Error reading file:
Erreur lors de la lecture du fichier:
Error traversing directory
-Erreur lors du parcours du répertoire
+Erreur lors du parcours du répertoire
Error when converting int to wxString
Erreur de conversion (int en wxString)
Error when converting wxString to double
@@ -289,57 +289,55 @@ Erreur de conversion (wxString en double)
Error when converting wxString to long
Erreur de conversion (wxString en long)
Error: Source directory does not exist anymore:
-Erreur: le répertoire source n'existe plus:
+Erreur: le répertoire source n'existe plus:
Exclude
Exclure
Feedback and suggestions are welcome at:
-Commentaires et suggestions sont les bienvenus à:
+Commentaires et suggestions sont les bienvenus à:
File content
Contenu du fichier
File list exported!
-Liste des fichiers exportée!
+Liste des fichiers exportée!
File size and date
Taille et date du fichier
Filename
Nom du fichier
Files are found equal if\n - file content\nis the same.
-Les fichiers sont considérés comme identiques, si\n - leur contenu est identique.
+Les fichiers sont considérés comme identiques, si\n - leur contenu est identique.
Files are found equal if\n - filesize\n - last write time (UTC) and date\nare the same.
-Les fichiers sont considérés comme identiques, si\n - leur taille\n - leur date et heure(UTC) sont identiques.
+Les fichiers sont considérés comme identiques, si\n - leur taille\n - leur date et heure(UTC) sont identiques.
Files that exist on both sides and have different content
-Les fichiers existent des deux côtés et ont des contenus différents
+Les fichiers existent des deux côtés et ont des contenus différents
Files that exist on both sides, have same date but different filesizes
-Les fichiers existent des deux côtés, ont la même date mais des tailles différentes
+Les fichiers existent des deux côtés, ont la même date mais des tailles différentes
Files that exist on both sides, left one is newer
-Fichiers existants des deux côtés, celui de gauche est plus récent
+Fichiers existants des deux côtés, celui de gauche est plus récent
Files that exist on both sides, right one is newer
-Fichiers existants des deux côtés, celui de droite est plus récent
+Fichiers existants des deux côtés, celui de droite est plus récent
Files to compare:
-Fichiers à comparer:
-Files/folders scanned:
-Fichiers/dossiers analysés
+Fichiers à comparer:
Files/folders remaining:
Fichiers/dossiers restants:
+Files/folders scanned:
+Fichiers/dossiers analysés
Files/folders that exist on left side only
-Fichiers/répertoires existants seulement à gauche
+Fichiers/répertoires existants seulement à gauche
Files/folders that exist on right side only
-Fichiers/répertoires existants seulement à droite
+Fichiers/répertoires existants seulement à droite
Filter
Filtrage
Filter active: Press again to deactivate
-Filtrage actif: Cliquez de nouveau pour le désactiver
+Filtrage actif: Cliquez de nouveau pour le désactiver
Filter files
Filtrage des fichiers
Filter manually
Filtrage manuel
Filter view
Filtrage de la vue
-Français
-Français
FreeFileSync (Date:
FreeFileSync (Date:
FreeFileSync - Folder Comparison and Synchronization
-FreeFileSync - Comparaison et synchronisation de répertoires
+FreeFileSync - Comparaison et synchronisation de répertoires
FreeFileSync at Sourceforge
FreeFileSync par Sourceforge
FreeFileSync configuration
@@ -347,17 +345,17 @@ FreeFileSync configuration
Help
Aide
Hide filtered items
-Masquer les éléments filtrés
+Masquer les éléments filtrés
Hide further error messages during the current process and continue
-Masquer les messages d'erreur suivants de l'opération en cours et continuer
+Masquer les messages d'erreur suivants de l'opération en cours et continuer
Hides error messages during synchronization:\nThey are collected and shown as a list at the end of the process
-Masquer les messages d'erreur pendant la synchronisation:\nIls sont collationnés et listés à la fin de l'opération
+Masquer les messages d'erreur pendant la synchronisation:\nIls sont collationnés et listés à la fin de l'opération
Hints:
Conseils:
Homepage:
Page d'accueil:
-If errors occur during folder comparison or synchronization they are ignored and the process continues\n
-Si des erreurs se produisent pendant la comparaison ou la synchronisation des répertoires, elles seront ignorées et l'opération se poursuivra\n
+If errors occur during folder comparison or synchronization they are ignored and the process continues.\n
+Si des erreurs se produisent pendant la comparaison ou la synchronisation des répertoires, elles seront ignorées et l'opération se poursuivra.\n
If you like FFS:
Si vous aimez FFS:
Include
@@ -367,59 +365,59 @@ Info
Information
Information
Initialization of Recycle Bin failed! It cannot be used!
-Erreur lors de l'initialisation de la corbeille ! La corbeille ne peut être utilisée!
+Erreur lors de l'initialisation de la corbeille ! La corbeille ne peut être utilisée!
It was not possible to gain access to Recycle Bin!\n\nIt's likely that you are not using Windows XP. (Probably Vista)\nIf you want this feature included, please contact the author. :)
-Impossible d'accéder à la corbeille!\n\nIl est probable que vous n'utilisez pas Windows XP. (Peut-être Vista?)\nSi vous désirez utilisee cette fonctionnalité, veuillez contacter l'auteur. :)
+Impossible d'accéder à la corbeille!\n\nIl est probable que vous n'utilisez pas Windows XP. (Peut-être Vista?)\nSi vous désirez utilisee cette fonctionnalité, veuillez contacter l'auteur. :)
Left directory does not exist. Please select a new one!
-Le répertoire de gauche n'existe pas. Veuillez en choisir un autre!
+Le répertoire de gauche n'existe pas. Veuillez en choisir un autre!
Left folder:
-Répertoire de gauche:
+Répertoire de gauche:
Legend\n
Legende\n
-Load configuration from file:\n - use this choice box\n - drag & drop config file to this window\n - specify config file as first commandline parameter
-Chargement de la configuration à partir du fichier:\n - utiliser cette liste de choix\n - Déplacer et déposer le fichier de configuration dans cette fenêtre\n - Définir le nom du fichier de commandes comme premier paramètre de la ligne de commande
-Load configuration...
-Charger la configuration...
+Load configuration via...\n - this list (press DEL to delete items)\n - drag & drop to this window\n - startup parameter
+
+Load from file...
+
Log-messages:\n-------------
Messages log:\n---------------
Mirror backup of left folder: Right folder will be overwritten and exactly match left folder after synchronization.
-Sauvegarde miroir du répertoire de gauche : Le répertoire de droite sera écrasé et exactement identique au répertoire de gauche après la synchronisation.
+Sauvegarde miroir du répertoire de gauche : Le répertoire de droite sera écrasé et exactement identique au répertoire de gauche après la synchronisation.
Move files to Recycle Bin instead of deleting or overwriting them directly.\n
-Déplacer les fichiers dans la corbeille au lieu de les supprimer ou de remplacer.\n
+Déplacer les fichiers dans la corbeille au lieu de les supprimer ou de remplacer.\n
Not all items were synchronized! Have a look at the list.
-Tous les éléments n'ont pas été synchronisés! Veuillez vérifier la liste.
+Tous les éléments n'ont pas été synchronisés! Veuillez vérifier la liste.
Nothing to synchronize. Both directories adhere to the sync-configuration!
-Rien à synchroniser. Les deux répertoires sont conformes aux paramètres de synchronisation!
+Rien à synchroniser. Les deux répertoires sont conformes aux paramètres de synchronisation!
Number of files and directories that will be created
-Nombre de fichiers et de répertoires qui seront créés
+Nombre de fichiers et de répertoires qui seront créés
Number of files and directories that will be deleted
-Nombre de fichiers et de répertoires qui seront supprimés
+Nombre de fichiers et de répertoires qui seront supprimés
Number of files that will be overwritten
-Nombre de fichiers qui seront remplacés
+Nombre de fichiers qui seront remplacés
One way ->
Vers la droite ->
Only files/directories that pass filtering will be selected for synchronization.
-Seuls les fichiers/répertoires correspondant au filtrage sont retenus pour la synchronisation.
+Seuls les fichiers/répertoires correspondant au filtrage sont retenus pour la synchronisation.
Open synchronization dialog
-Ouvrir la boîte de dialogue de la synchronisation
+Ouvrir la boîte de dialogue de la synchronisation
Open with Explorer\tD-Click
Ouvrir dans l'explorateur\tD-Click
Operation aborted!
-Opération abandonnée!
+Opération abandonnée!
Operation:
-Opération:
+Opération:
Pause
Pause
Please select both left and right directories!
-Veuillez, s'il vous plaît, choisir les répertoires de droite et de gauche!
+Veuillez, s'il vous plaît, choisir les répertoires de droite et de gauche!
Please select directories for both sides!
-Veuillez, s'il vous plaît, choisir les répertoires de droite et de gauche!
+Veuillez, s'il vous plaît, choisir les répertoires de droite et de gauche!
Press button to activate filter
Cliquez pour activer le filtrage
Preview
-Prévoir
+Prévoir
Published under the GNU General Public License:
-Publié sous la licence GNU General Public:
+Publié sous la licence GNU General Public:
Quit
Quitter
Relative path
@@ -427,97 +425,97 @@ Chemin
Remaining time:
Temps restant:
Result
-Résultat
+Résultat
Right directory does not exist. Please select a new one!
-Le répertoire de droite n'existe pas. Veuillez en choisir un autre!
+Le répertoire de droite n'existe pas. Veuillez en choisir un autre!
Right folder:
-Répertoire de droite:
+Répertoire de droite:
Save current configuration to file
Enregistrer la configuration courante
Saved aborted!
-Enregistrement annulé!
+Enregistrement annulé!
Scanning
Lecture en cours
Scanning...
Lecture en cours...
Select a folder
-Choisissez un répertoire
+Choisissez un répertoire
Select variant:
Choisissez une variante:
Set filter for synchronization
-Définir le filtrage
+Définir le filtrage
Shell script
Shell Script
Show files that are different
-Afficher les fichiers différents
+Afficher les fichiers différents
Show files that are equal
Afficher les fichiers identiques
Show files that are newer on left
-Afficher les fichiers de gauche plus récents que ceux de droite
+Afficher les fichiers de gauche plus récents que ceux de droite
Show files that are newer on right
-Afficher les fichiers de droite plus récents que ceux de gauche
+Afficher les fichiers de droite plus récents que ceux de gauche
Show files that exist on left side only
-Afficher les fichiers existants seulement à gauche
+Afficher les fichiers existants seulement à gauche
Show files that exist on right side only
-Afficher les fichiers existants seulement à droite
+Afficher les fichiers existants seulement à droite
Silent mode
Mode silence
Size
Taille
Source code written completely in C++ utilizing:\n\n MinGW \t\t- Windows port of GNU Compiler Collection\n wxWidgets \t- Open-Source GUI framework\n wxFormBuilder\t- wxWidgets GUI-builder\n CodeBlocks \t- Open-Source IDE\n\n by ZenJu
-Code source entièrement écrit en C++ utilisant:\n\n MinGW \t\t- Windows-Port de GNU Compiler Collection\n wxWidgets \t- Open-Source GUI-Framework\n wxFormBuilder\t- wxWidgets GUI-Builder\n CodeBlocks \t- Open-Source IDE\n\n ZenJu
+Code source entièrement écrit en C++ utilisant:\n\n MinGW \t\t- Windows-Port de GNU Compiler Collection\n wxWidgets \t- Open-Source GUI-Framework\n wxFormBuilder\t- wxWidgets GUI-Builder\n CodeBlocks \t- Open-Source IDE\n\n ZenJu
Specify algorithm to test if files are equal:\n\n\t\t
-Spécification de l'algorithme de contrôle de l'identité de deux fichiers:\n\n\t\t
+Spécification de l'algorithme de contrôle de l'identité de deux fichiers:\n\n\t\t
Specify names to be excluded separated by ';'. Wildcards '*' and '?' are supported. Default: \"\"\n
-Noms à exclure, séparés par des ';'. Les caractères génériques '*' et '?' sont supportés. Par défaut: \"\"\n
+Noms à exclure, séparés par des ';'. Les caractères génériques '*' et '?' sont supportés. Par défaut: \"\"\n
Specify names to be included separated by ';'. Wildcards '*' and '?' are supported. Default: \"*\"\n
-Noms à inclure, séparés par des ';'.Les caractères génériques '*' et '?' sont supportés. Par défaut: \"*\"\n
-Specify the sync-direction used for each type of file by a string of five chars:\n\n\t\tChar 1: Folders/files that exist on left side only\n\t\tChar 2: Folders/files that exist on right side only\n\t\tChar 3: Files that exist on both sides, left one is newer\n\t\tChar 4: Files that exist on both sides, right one is newer\n\t\tChar 5: Files that exist on both sides and are different\n\n\t\tSync-direction: L: left, R: right, N: none\n
-Paramétrage de la synchronisation avec une chaîne de 5 caractères:\n\n\t\tCar 1: Dossiers/fichiers n'existant que dans le répertoire de gauche\n\t\tCar 2: Dossiers/fichiers n'existant que dans le répertoire de droite\n\t\tCar 3: Fichiers de gauche plus récents\n\t\tCar 4: Fichiers de droite plus récents\n\t\tCar 5: Fichiers existants des deux côtés et différents\n\n\t\tDirection de la synchronisation: L: vers la gauche, R: vers la droite, N: ne rien faire\n
+Noms à inclure, séparés par des ';'.Les caractères génériques '*' et '?' sont supportés. Par défaut: \"*\"\n
+Specify the sync-direction used for each type of file by a string of five chars:\n\n
+Paramétrage de la synchronisation avec une chaîne de 5 caractères:\n\n
Start
-Démarrer
+Démarrer
Start synchronization
-Démarrer la synchronisation
+Démarrer la synchronisation
Stop
Stop
Swap sides
-Permuter les côtés
+Permuter les côtés
Synchronization aborted!
-Synchronisation abandonnée!
+Synchronisation abandonnée!
Synchronization completed successfully.
-Synchronisation terminée avec succès.
+Synchronisation terminée avec succès.
Synchronization completed with errors!
-Synchronisation terminée avec des erreurs!
+Synchronisation terminée avec des erreurs!
Synchronization settings
-Paramétrage de la synchronisation
+Paramétrage de la synchronisation
Synchronization status
Etat de la synchronisation
Synchronize both sides simultaneously: Copy new or updated files in both directions.
-Synchronisation simultanée des deux côtés. Copie des fichiers nouveaux ou mis à jour.
+Synchronisation simultanée des deux côtés. Copie des fichiers nouveaux ou mis à jour.
Synchronizing...
Synchronisation en cours...
-Thanks to Jean-François Hartmann for doing the French translation!
-Merci à Jean-François Hartmann pour la traduction en Français!
+Thanks to Jean-François Hartmann for doing the French translation!
+Merci à Jean-François Hartmann pour la traduction en Français!
The selected file does not contain a valid configuration!
-Le fichier sélectionné ne contient pas de configuration valide!
+Le fichier sélectionné ne contient pas de configuration valide!
The selected file does not exist anymore!
-Le fichier sélectionné n'existe plus!
+Le fichier sélectionné n'existe plus!
Time elapsed:
-Temps écoulé:
+Temps écoulé:
Total amount of data that will be transferred
-Volume de données à transférer
+Volume de données à transférer
Total time:
Temps total:
Two way <->
-Des 2 côtés <->
+Des 2 côtés <->
Unable to create logfile!
-Impossible de créer un fichier log!
+Impossible de créer un fichier log!
Unable to initialize Recycle Bin!
Impossible d'initialiser la corbeille!
Unable to load Resources.dat!
Impossible de charger Resources.dat!
Update:
-Mises à jour:
+Mises à jour:
Use Recycle Bin
Utilisation de la corbeille
Use Recycle Bin when deleting or overwriting files during synchronization
@@ -525,12 +523,30 @@ Utilisation de la corbeille lors de la suppression ou du remplacement des fichie
Warning
Attention
Warning: Synchronization failed for
-Attention : la synchronisation a échoué à cause de
+Attention : la synchronisation a échoué à cause de
\n\nContinue with next object, retry or abort comparison?
-\n\nVoulez-vous continuer avec l'objet suivant, réessayer ou annuler la comparaison?
+\n\nVoulez-vous continuer avec l'objet suivant, réessayer ou annuler la comparaison?
\n\nContinue with next object, retry or abort synchronization?
-\n\nVoulez-vous continuer avec l'objet suivant, réessayer ou annuler la synchronisation?
+\n\nVoulez-vous continuer avec l'objet suivant, réessayer ou annuler la synchronisation?
\n\nInformation: If you skip the error and continue or abort a re-compare will be necessary!
-\n\nInformation: Si vous sautez cette erreur et continuer ou si vous annulez, il sera nécessaire d'effectuer une re-comparaison!
+\n\nInformation: Si vous sautez cette erreur et continuer ou si vous annulez, il sera nécessaire d'effectuer une re-comparaison!
+\n\t\tSync-direction: L: left, R: right, N: none\n
+\n\t\tDirection de la synchronisation: L: vers la gauche, R: vers la droite, N: ne rien faire\n
+\t1: Creates a mirror backup of the left directory\n\t2: Synchronizes all *.doc files from both directories simultaneously\n\n
+\t1: Crée une sauvegarde miroir du répertoire de gauche\n\t2: Synchronise tous les fichiers *.doc sur les deux répertoires\n\n
+\tExamples:\n\n\t1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n\t2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n
+\tExemples :\n\n\t1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n\t2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n
+\tHint: You can easily generate a batch file by chosing \"Create batch job\" from the GUI menubar.\n
+
+\t\tChar 1: Folders/files that exist on left side only\n
+\t\tCar 1: Dossiers/fichiers n'existant que dans le répertoire de gauche\n
+\t\tChar 2: Folders/files that exist on right side only\n
+\t\tCar 2: Dossiers/fichiers n'existant que dans le répertoire de droite\n
+\t\tChar 3: Files that exist on both sides, left one is newer\n
+\t\tCar 3: Fichiers de gauche plus récents\n
+\t\tChar 4: Files that exist on both sides, right one is newer\n
+\t\tCar 4: Fichiers de droite plus récents\n
+\t\tChar 5: Files that exist on both sides and are different\n
+\t\tCar 5: Fichiers existants des deux côtés et différents\n
|> file on right side only\n
-|> Le fichier existe seulement à droite\n
+|> Le fichier existe seulement à droite\n
diff --git a/german.lng b/german.lng
index 589ac8b5..eb57cf51 100644
--- a/german.lng
+++ b/german.lng
@@ -11,9 +11,9 @@
TB
TB
You may try to synchronize remaining items again (WITHOUT having to re-compare)!
- Verbliebene Elemente können nochmals synchronisiert werden (OHNE dass ein erneuter Vergleich notwendig ist)!
+ Verbliebene Elemente können nochmals synchronisiert werden (OHNE dass ein erneuter Vergleich notwendig ist)!
already exists. Overwrite?
- existiert bereits. Überschreiben?
+ existiert bereits. Ãœberschreiben?
directories
Verzeichnisse
directory
@@ -31,7 +31,7 @@
of
von
overwriting
- und überschreibe
+ und überschreibe
row in view
Zeile zur Ansicht
rows in view
@@ -45,11 +45,11 @@
&Abort
&Abbruch
&About...
-&Über...
+&Ãœber...
&Advanced
&Erweitert
&Back
-&Zurück
+&Zurück
&Cancel
&Abbruch
&Compare
@@ -96,14 +96,12 @@
-Open-Source Datei-Synchronisation-
.
,
-.\n\nExamples:\n\n1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n1: Creates a mirror backup of the left directory\n2: Synchronizes all *.doc files from both directories simultaneously\n\n
-.\n\nBeispiele:\n\n1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n1: Erzeugt ein Spiegel-Backup des linken Verzeichnisses\n2: Synchronisiert alle *.doc Dateien aus beiden Verzeichnissen\n\n
1. Enter full file or directory names separated by ';'.\n2. Wildcard characters '*' and '?' are supported.\n3. Case sensitive expressions!\n\nExample: *.tmp;*\\filename.dat;*\\directory\\*
-1. Komplette Datei- oder Verzeichnisnamen getrennt durch ';' eingeben.\n2. Die Platzhalter '*' und '?' werden unterstützt.\n3. Groß-/Kleinschreibung wird unterschieden!\n\nBeispiel: *.tmp;*\\filename.dat;*\\directory\\*
+1. Komplette Datei- oder Verzeichnisnamen getrennt durch ';' eingeben.\n2. Die Platzhalter '*' und '?' werden unterstützt.\n3. Groß-/Kleinschreibung wird unterschieden!\n\nBeispiel: *.tmp;*\\filename.dat;*\\directory\\*
: check file content\n
-: Prüfung auf Dateiinhalt\n
+: Prüfung auf Dateiinhalt\n
: check filesize and date\n\t\t
-: Prüfung auf Dateigröße und -datum\n\t\t
+: Prüfung auf Dateigröße und -datum\n\t\t
<< left file is newer\n
<< linke Datei ist neuer\n
<Directory>
@@ -125,7 +123,7 @@ Abbruch initiiert: Warte, bis aktuelle Operation beendet ist...
Aborted
Abgebrochen
About
-Über
+Ãœber
Action
Aktion
All items have been synchronized!
@@ -149,7 +147,7 @@ Command Datei
Compare both sides
Beide Seiten vergleichen
Compare by \"File size and date\"\n----------------------------------------\nThis variant evaluates two equally named files as being equal when they have the same file size AND the same last write date and time. Notice that the file time is allowed to deviate by up to 2 seconds. This ensures synchronization with the lower-precision file system FAT32 works correctly.\n\nWhen \"Compare\" is triggered with this option set the following decision tree is processed:\n\n -----------------\n |Decision tree|\n -----------------\n ________|___________\n | |\n file exists on both sides on one side only\n _____|______ __|___\n | | | |\nequal different left right\n _________|__________\n | | |\n left newer right newer same date\n\nAs a result 6 different status can be returned to categorize all files:\n\n- exists left only\n- exists right only\n- left newer\n- right newer\n- different filesize (but same date)\n- equal\n\n\nCompare by \"File content\"\n----------------------------------------\nAs the name suggests, two files which share the same name are marked as equal if and only if they have the same content. This option is useful for consistency checks rather than backup operations. Therefore the file times are not taken into account at all.\n\nWith this option enabled the decision tree is smaller:\n\n -----------------\n |Decision tree|\n -----------------\n ________|___________\n | |\n file exists on both sides on one side only\n _____|______ __|___\n | | | |\nequal different left right\n\nAs a result the files are separated into the following categories:\n\n- exists left only\n- exists right only\n- different\n- equal
-Vergleichen nach \"Dateigröße und -datum\"\n---------------------------------------------------\nDiese Variante identifiziert zwei gleichnamige Dateien als gleich, wenn sie die gleiche Dateigröße haben UND der Zeitpunkt der letzten Änderung derselbe ist. Dabei wird eine Abweichung von bis zu zwei Sekunden toleriert. So ist sichergestellt, dass eine Synchronisation gegen ein FAT32 Dateisystem korrekt funktioniert.\n\nNachdem \"Compare\" mit dieser Einstellung gestartet wurde, wird der folgende Entscheidungsbaum abgearbeitet:\n\n -------------------------\n |Entscheidungsbaum|\n -------------------------\n __________|___________\n | |\n Datei ex. auf beiden Seiten nur auf einer Seite\n ________|____ __|___\n | | | |\n gleich verschieden links rechts\n __________|___________\n | | |\n links neuer rechts neuer gleiches Datum\n\nAls Ergebnis werden 6 verschiedene Status zurückgegeben, um Dateien zu kategorisieren:\n\n- existiert nur links\n- existiert nur rechts\n- links neuer\n- rechts neuer\n- verschiedene Dateigrößen (bei gleichem Datum)\n- gleich\n\n\nVergleichen nach \"Dateiinhalt\"\n------------------------------------\nWie der Name bereits sagt, werden zwei Dateien mit gleichem Namen genau dann als gleich angesehen, wenn sie den gleichen Dateiinhalt haben. Diese Einstellung ist eher für Konsistenzprüfungen geeignet als für Backup-Operationen. Aus diesem Grund wird der Zeitpunkt der letzten Änderung der Dateien nicht berücksichtigt.\n\nDer Entscheidungsbaum ist in diesem Fall kleiner:\n\n -------------------------\n |Entscheidungsbaum|\n -------------------------\n __________|___________\n | |\n Datei ex. auf beiden Seiten nur auf einer Seite\n ________|____ __|___\n | | | |\n gleich verschieden links rechts\n\nDas Ergebnis ist eine Aufteilung in folgende Kategorien:\n\n- existiert nur links\n- existiert nur rechts\n- verschieden\n- gleich
+Vergleichen nach \"Dateigröße und -datum\"\n---------------------------------------------------\nDiese Variante identifiziert zwei gleichnamige Dateien als gleich, wenn sie die gleiche Dateigröße haben UND der Zeitpunkt der letzten Änderung derselbe ist. Dabei wird eine Abweichung von bis zu zwei Sekunden toleriert. So ist sichergestellt, dass eine Synchronisation gegen ein FAT32 Dateisystem korrekt funktioniert.\n\nNachdem \"Compare\" mit dieser Einstellung gestartet wurde, wird der folgende Entscheidungsbaum abgearbeitet:\n\n -------------------------\n |Entscheidungsbaum|\n -------------------------\n __________|___________\n | |\n Datei ex. auf beiden Seiten nur auf einer Seite\n ________|____ __|___\n | | | |\n gleich verschieden links rechts\n __________|___________\n | | |\n links neuer rechts neuer gleiches Datum\n\nAls Ergebnis werden 6 verschiedene Status zurückgegeben, um Dateien zu kategorisieren:\n\n- existiert nur links\n- existiert nur rechts\n- links neuer\n- rechts neuer\n- verschiedene Dateigrößen (bei gleichem Datum)\n- gleich\n\n\nVergleichen nach \"Dateiinhalt\"\n------------------------------------\nWie der Name bereits sagt, werden zwei Dateien mit gleichem Namen genau dann als gleich angesehen, wenn sie den gleichen Dateiinhalt haben. Diese Einstellung ist eher für Konsistenzprüfungen geeignet als für Backup-Operationen. Aus diesem Grund wird der Zeitpunkt der letzten Änderung der Dateien nicht berücksichtigt.\n\nDer Entscheidungsbaum ist in diesem Fall kleiner:\n\n -------------------------\n |Entscheidungsbaum|\n -------------------------\n __________|___________\n | |\n Datei ex. auf beiden Seiten nur auf einer Seite\n ________|____ __|___\n | | | |\n gleich verschieden links rechts\n\nDas Ergebnis ist eine Aufteilung in folgende Kategorien:\n\n- existiert nur links\n- existiert nur rechts\n- verschieden\n- gleich
Compare by...
Vergleichen nach...
Comparing content of files
@@ -163,7 +161,7 @@ Konfiguration
Configuration loaded!
Konfiguration geladen!
Configuration overview:
-Übersicht der Parameter:
+Ãœbersicht der Parameter:
Configuration saved!
Konfiguration gespeichert!
Configure filter
@@ -173,27 +171,27 @@ Konfiguriere Filter...
Configure your own synchronization rules.
Eigene Synchronisationsregeln definieren.
Confirm
-Bestätigen
+Bestätigen
Continue
Fortfahren
Continue on error
Fortfahren bei Fehler
Continue on next errors
-Fortfahren bei nächsten Fehlern
+Fortfahren bei nächsten Fehlern
Copy from left to right
Von links nach rechts kopieren
Copy from left to right overwriting
-Von links nach rechts kopieren und überschreiben
+Von links nach rechts kopieren und überschreiben
Copy from right to left
Von rechts nach links kopieren
Copy from right to left overwriting
-Von rechts nach links kopieren und überschreiben
+Von rechts nach links kopieren und überschreiben
Copy to clipboard\tCTRL+C
Kopiere in Zwischenablage\tCTRL+C
Copying file
Kopiere Datei
Could not open file:
-Fehler beim Öffnen der Datei:
+Fehler beim Öffnen der Datei:
Could not read configuration file
Fehler beim Lesen der Konfigurationsdatei
Could not read language file
@@ -223,33 +221,35 @@ Daten:
Date
Datum
Delete files/folders existing on left side only
-Lösche Dateien/Ordner, die nur links existieren
+Lösche Dateien/Ordner, die nur links existieren
Delete files/folders existing on right side only
-Lösche Dateien/Ordner, die nur rechts existieren
+Lösche Dateien/Ordner, die nur rechts existieren
Delete files\tDEL
-Lösche Dateien\tDEL
+Lösche Dateien\tDEL
Delete:
-Löschen:
+Löschen:
Deleting file
-Lösche Datei
+Lösche Datei
Deleting folder
-Lösche Verzeichnis
+Lösche Verzeichnis
Deutsch
Deutsch
Directory
Verzeichnis
Directory on the left does not exist. Please select a new one!
-Verzeichnis auf der linken Seite existiert nicht. Bitte ein anderes auswählen!
+Verzeichnis auf der linken Seite existiert nicht. Bitte ein anderes auswählen!
Directory on the right does not exist. Please select a new one!
-Verzeichnis auf der rechten Seite existiert nicht. Bitte ein anderes auswählen!
+Verzeichnis auf der rechten Seite existiert nicht. Bitte ein anderes auswählen!
Displays help on the command line parameters\n
Hilfe zu den Kommandozeilenparametern\n
Do not show graphical status and error messages but write to a logfile instead
Keine graphischen Status- und Fehlermeldungen anzeigen, sondern eine Logdatei erstellen
+Do not show graphical status and error messages but write to a logfile instead.\n\n
+Keine graphischen Status- und Fehlermeldungen anzeigen, sondern eine Logdatei erstellen.\n\n
Do nothing
Nichts tun
Do you really want to delete the following objects(s)?
-Sollen die folgenden Elemente wirklich gelöscht werden?
+Sollen die folgenden Elemente wirklich gelöscht werden?
Do you really want to move the following objects(s) to the recycle bin?
Sollen die folgenden Elemente wirklich in den Papierkorb verschoben werden?
Donate with Paypal
@@ -263,7 +263,7 @@ English
Error
Fehler
Error adapting modification time of file
-Fehler beim Anpassen des Datums der letzten Änderung der Datei
+Fehler beim Anpassen des Datums der letzten Änderung der Datei
Error converting FILETIME to SYSTEMTIME
Fehler beim Konvertieren der FILETIME nach SYSTEMTIME
Error converting FILETIME to local FILETIME
@@ -273,9 +273,9 @@ Fehler beim Kopieren der Datei
Error creating directory
Fehler beim Erstellen des Verzeichnisses
Error deleting directory
-Fehler beim Löschen des Verzeichnisses
+Fehler beim Löschen des Verzeichnisses
Error deleting file
-Fehler beim Löschen der Datei
+Fehler beim Löschen der Datei
Error moving file
Fehler beim Verschieben der Datei
Error reading file:
@@ -291,25 +291,25 @@ Fehler bei Konvertierung (wxString nach long)
Error: Source directory does not exist anymore:
Fehler: Quellverzeichnis existiert nicht mehr:
Exclude
-Ausschließen
+Ausschließen
Feedback and suggestions are welcome at:
-Feedback und Vorschläge sind willkommen unter:
+Feedback und Vorschläge sind willkommen unter:
File content
Dateiinhalt
File list exported!
Dateiliste exportiert!
File size and date
-Dateigröße und -datum
+Dateigröße und -datum
Filename
Dateiname
Files are found equal if\n - file content\nis the same.
Dateien gelten als gleich, wenn\n - der Inhalt\ngleich ist.
Files are found equal if\n - filesize\n - last write time (UTC) and date\nare the same.
-Dateien gelten als gleich, wenn\n - die Größe\n - Datum und Uhrzeit(UTC) der letzten Änderung\ngleich sind.
+Dateien gelten als gleich, wenn\n - die Größe\n - Datum und Uhrzeit(UTC) der letzten Änderung\ngleich sind.
Files that exist on both sides and have different content
Dateien, die auf beiden Seiten existieren und unterschiedlichen Inhalt haben
Files that exist on both sides, have same date but different filesizes
-Dateien, die auf beiden Seiten existieren; gleiches Datum aber unterschiedliche Dateigrößen
+Dateien, die auf beiden Seiten existieren; gleiches Datum aber unterschiedliche Dateigrößen
Files that exist on both sides, left one is newer
Dateien, die auf beiden Seiten existieren; linke Datei ist neuer
Files that exist on both sides, right one is newer
@@ -327,21 +327,19 @@ Dateien/Ordner, die nur rechts existieren
Filter
Filter
Filter active: Press again to deactivate
-Filter aktiv: Zum Deaktivieren erneut auswählen
+Filter aktiv: Zum Deaktivieren erneut auswählen
Filter files
Dateien filtern
Filter manually
Manuell filtern
Filter view
Ansicht filtern
-Français
-Français
FreeFileSync (Date:
FreeFileSync (Datum:
FreeFileSync - Folder Comparison and Synchronization
FreeFileSync - Verzeichnisvergleich und -synchronisation
FreeFileSync at Sourceforge
-FreeFileSync bei Sourceforge
+FreeFileSync auf Sourceforge
FreeFileSync configuration
FreeFileSync Konfiguration
Help
@@ -349,19 +347,19 @@ Hilfe
Hide filtered items
Gefilterte Elemente ausblenden
Hide further error messages during the current process and continue
-Unterdrücke alle nachfolgenden Fehlermeldungen für den aktuellen Prozess und fahre fort
+Unterdrücke alle nachfolgenden Fehlermeldungen für den aktuellen Prozess und fahre fort
Hides error messages during synchronization:\nThey are collected and shown as a list at the end of the process
-Verhindert das Anzeigen von Fehlermeldungen während der Synchronisation:\nSie werden jedoch gesammelt und nach dem Vorgang als Liste angezeigt
+Verhindert das Anzeigen von Fehlermeldungen während der Synchronisation:\nSie werden jedoch gesammelt und nach dem Vorgang als Liste angezeigt
Hints:
Tipps:
Homepage:
Homepage:
-If errors occur during folder comparison or synchronization they are ignored and the process continues\n
-Wenn Fehler während des Vergleichs oder der Synchronisation auftreten, werden diese ignoriert und der Vorgang fortgesetzt\n
+If errors occur during folder comparison or synchronization they are ignored and the process continues.\n
+Wenn Fehler während des Vergleichs oder der Synchronisation auftreten, werden diese ignoriert und der Vorgang fortgesetzt.\n
If you like FFS:
-FFS unterstützen:
+FFS unterstützen:
Include
-Einschließen
+Einschließen
Info
Info
Information
@@ -369,23 +367,23 @@ Information
Initialization of Recycle Bin failed! It cannot be used!
Die Initialisierung des Papierkorbs ist fehlgeschlagen! Er kann nicht verwendet werden!
It was not possible to gain access to Recycle Bin!\n\nIt's likely that you are not using Windows XP. (Probably Vista)\nIf you want this feature included, please contact the author. :)
-Die Papierkorbfunktion steht nicht zur Verfügung!\n\nWahrscheinlich ist das aktuelle Betriebssystem nicht Windows XP. (Möglicherweise Vista)\nWenn Sie diese Funktion wirklich benötigen kontaktieren Sie bitte den Autor. :)
+Die Papierkorbfunktion steht nicht zur Verfügung!\n\nWahrscheinlich ist das aktuelle Betriebssystem nicht Windows XP. (Möglicherweise Vista)\nWenn Sie diese Funktion wirklich benötigen kontaktieren Sie bitte den Autor. :)
Left directory does not exist. Please select a new one!
-Verzeichnis auf der linken Seite existiert nicht. Bitte ein anderes auswählen!
+Verzeichnis auf der linken Seite existiert nicht. Bitte ein anderes auswählen!
Left folder:
Linker Ordner:
Legend\n
Legende\n
-Load configuration from file:\n - use this choice box\n - drag & drop config file to this window\n - specify config file as first commandline parameter
-Konfiguration aus Datei laden:\n - diese Auswahlliste verwenden\n - Config-Datei per Drag & Drop auf dieses Fenster ziehen\n - Config-Datei als ersten Kommandozeilenparameter mitgeben
-Load configuration...
-Konfiguration laden...
+Load configuration via...\n - this list (press DEL to delete items)\n - drag & drop to this window\n - startup parameter
+Lade Konfiguration über...\n - diese Liste (DEL-Taste löscht Einträge)\n - Drag & Drop in dieses Fenster\n - Startupparameter
+Load from file...
+Lade aus Datei...
Log-messages:\n-------------
Lognachrichten:\n---------------
Mirror backup of left folder: Right folder will be overwritten and exactly match left folder after synchronization.
-Spiegel-Backup des linken Ordners erstellen: Der rechte Ordner wird dabei überschrieben und nach der Synchronisation dem linken exakt gleichen.
+Spiegel-Backup des linken Ordners erstellen: Der rechte Ordner wird dabei überschrieben und nach der Synchronisation dem linken exakt gleichen.
Move files to Recycle Bin instead of deleting or overwriting them directly.\n
-Verschiebe die Dateien in den Papierkorb anstatt sie zu löschen oder zu überschreiben.\n
+Verschiebe die Dateien in den Papierkorb anstatt sie zu löschen oder zu überschreiben.\n
Not all items were synchronized! Have a look at the list.
Nicht alle Objekte wurden synchronisiert! Siehe die verbliebenen Elemente im Hauptfenster.
Nothing to synchronize. Both directories adhere to the sync-configuration!
@@ -393,17 +391,17 @@ Nichts zu synchronisieren. Beide Verzeichnisse entsprechen den Synchronisationse
Number of files and directories that will be created
Anzahl der Dateien und Verzeichnisse, die erstellt werden
Number of files and directories that will be deleted
-Anzahl der Dateien und Verzeichnisse, die gelöscht werden
+Anzahl der Dateien und Verzeichnisse, die gelöscht werden
Number of files that will be overwritten
-Anzahl der Dateien, die überschrieben werden
+Anzahl der Dateien, die überschrieben werden
One way ->
Nach rechts ->
Only files/directories that pass filtering will be selected for synchronization.
-Bei der Synchronisation werden nur die Dateien/Ordner berücksichtigt, die zu\nden Filtereinstellungen passen.
+Bei der Synchronisation werden nur die Dateien/Ordner berücksichtigt, die zu\nden Filtereinstellungen passen.
Open synchronization dialog
Zeige Synchronisationseinstellungen
Open with Explorer\tD-Click
-Im Explorer öffnen\tD-Click
+Im Explorer öffnen\tD-Click
Operation aborted!
Aktion abgebrochen!
Operation:
@@ -411,15 +409,15 @@ Vorgang:
Pause
Pause
Please select both left and right directories!
-Bitte für beide Seiten ein Verzeichnis wählen!
+Bitte für beide Seiten ein Verzeichnis wählen!
Please select directories for both sides!
-Bitte für beide Seiten ein Verzeichnis wählen!
+Bitte für beide Seiten ein Verzeichnis wählen!
Press button to activate filter
-Auswählen, um Filter zu aktivieren
+Auswählen, um Filter zu aktivieren
Preview
Vorschau
Published under the GNU General Public License:
-Veröffentlicht unter der GNU General Public License:
+Veröffentlicht unter der GNU General Public License:
Quit
Beenden
Relative path
@@ -429,7 +427,7 @@ Verbliebene Zeit:
Result
Ergebnis
Right directory does not exist. Please select a new one!
-Verzeichnis auf der rechten Seite existiert nicht. Bitte ein anderes auswählen!
+Verzeichnis auf der rechten Seite existiert nicht. Bitte ein anderes auswählen!
Right folder:
Rechter Ordner:
Save current configuration to file
@@ -441,9 +439,9 @@ Lese Datei
Scanning...
Suche Dateien...
Select a folder
-Verzeichnis wählen
+Verzeichnis wählen
Select variant:
-Variante auswählen:
+Variante auswählen:
Set filter for synchronization
Filter einstellen
Shell script
@@ -463,17 +461,17 @@ Zeige Dateien, die nur rechts existieren
Silent mode
Stiller Modus
Size
-Größe
+Größe
Source code written completely in C++ utilizing:\n\n MinGW \t\t- Windows port of GNU Compiler Collection\n wxWidgets \t- Open-Source GUI framework\n wxFormBuilder\t- wxWidgets GUI-builder\n CodeBlocks \t- Open-Source IDE\n\n by ZenJu
Sourcecode komplett in C++ geschrieben unter Verwendung von:\n\n MinGW \t\t- Windows-Port der GNU Compiler Collection\n wxWidgets \t- Open-Source GUI-Framework\n wxFormBuilder\t- wxWidgets GUI-Builder\n CodeBlocks \t- Open-Source IDE\n\n ZenJu
Specify algorithm to test if files are equal:\n\n\t\t
-Algorithmus wählen, um gleiche Dateien zu erkennen:\n\n\t\t
+Algorithmus wählen, um gleiche Dateien zu erkennen:\n\n\t\t
Specify names to be excluded separated by ';'. Wildcards '*' and '?' are supported. Default: \"\"\n
-Auszuschließende Namen, getrennt durch ';' angeben. Platzhalter '*' und '?' werden unterstützt. Standard: \"\"\n
+Auszuschließende Namen, getrennt durch ';' angeben. Platzhalter '*' und '?' werden unterstützt. Standard: \"\"\n
Specify names to be included separated by ';'. Wildcards '*' and '?' are supported. Default: \"*\"\n
-Einzuschließende Namen, getrennt durch ';' angeben. Platzhalter '*' und '?' werden unterstützt. Standard: \"*\"\n
-Specify the sync-direction used for each type of file by a string of five chars:\n\n\t\tChar 1: Folders/files that exist on left side only\n\t\tChar 2: Folders/files that exist on right side only\n\t\tChar 3: Files that exist on both sides, left one is newer\n\t\tChar 4: Files that exist on both sides, right one is newer\n\t\tChar 5: Files that exist on both sides and are different\n\n\t\tSync-direction: L: left, R: right, N: none\n
-Synchronisationseinstellungen durch Zeichenkette der Länge 5 spezifizieren:\n\n\t\t1. Zeichen: Ordner/Dateien, die nur links existieren\n\t\t2. Zeichen: Ordner/Dateien, die nur rechts existieren\n\t\t3. Zeichen: Dateien, die auf beiden Seiten existieren; linke Datei ist neuer\n\t\t4. Zeichen: Dateien, die auf beiden Seiten existieren; rechte Datei ist neuer\n\t\t5. Zeichen: Dateien, die auf beiden Seiten existieren und verschieden sind\n\n\t\tSynchronisationsrichtung: L: links, R: rechts, N: nichts tun\n
+Einzuschließende Namen, getrennt durch ';' angeben. Platzhalter '*' und '?' werden unterstützt. Standard: \"*\"\n
+Specify the sync-direction used for each type of file by a string of five chars:\n\n
+Synchronisationseinstellungen durch Zeichenkette der Länge 5 spezifizieren:\n\n
Start
Start
Start synchronization
@@ -496,16 +494,16 @@ Synchronize both sides simultaneously: Copy new or updated files in both directi
Beide Seiten gleichzeitig synchronisieren: Neue oder aktualisierte Dateien werden auf die jeweils andere Seite kopiert.
Synchronizing...
Synchronisiere...
-Thanks to Jean-François Hartmann for doing the French translation!
-Vielen Dank an Jean-François Hartmann für die französische Übersetzung!
+Thanks to Jean-François Hartmann for doing the French translation!
+Vielen Dank an Jean-François Hartmann für die französische Übersetzung!
The selected file does not contain a valid configuration!
-Die ausgewählte Datei enthält keine gültige Konfiguration!
+Die ausgewählte Datei enthält keine gültige Konfiguration!
The selected file does not exist anymore!
-Die gewählte Datei existiert nicht mehr!
+Die gewählte Datei existiert nicht mehr!
Time elapsed:
Vergangene Zeit:
Total amount of data that will be transferred
-Gesamtmenge der Daten, die übertragen werden
+Gesamtmenge der Daten, die übertragen werden
Total time:
Gesamtzeit:
Two way <->
@@ -517,20 +515,38 @@ Der Papierkorb konnte nicht initialisiert werden!
Unable to load Resources.dat!
Fehler beim Laden von Resources.dat!
Update:
-Überschreiben:
+Ãœberschreiben:
Use Recycle Bin
Papierkorb verwenden
Use Recycle Bin when deleting or overwriting files during synchronization
-Papierkorb für zu löschende oder überschreibende Dateien nutzen
+Papierkorb für zu löschende oder überschreibende Dateien nutzen
Warning
Warnung
Warning: Synchronization failed for
-Warnung: Synchronisation fehlgeschlagen für
+Warnung: Synchronisation fehlgeschlagen für
\n\nContinue with next object, retry or abort comparison?
-\n\nMit nächstem Objekt fortfahren, wiederholen oder abbrechen?
+\n\nMit nächstem Objekt fortfahren, wiederholen oder abbrechen?
\n\nContinue with next object, retry or abort synchronization?
-\n\nMit nächstem Objekt fortsetzen, wiederholen oder abbrechen?
+\n\nMit nächstem Objekt fortsetzen, wiederholen oder abbrechen?
\n\nInformation: If you skip the error and continue or abort a re-compare will be necessary!
\n\nInformation: Wenn der Fehler nicht behoben wird, muss der Vergleich erneut gestartet werden!
+\n\t\tSync-direction: L: left, R: right, N: none\n
+\n\t\tSynchronisationsrichtung: L: links, R: rechts, N: nichts tun\n
+\t1: Creates a mirror backup of the left directory\n\t2: Synchronizes all *.doc files from both directories simultaneously\n\n
+\t1: Erzeugt ein Spiegel-Backup des linken Verzeichnisses\n\t2: Synchronisiert alle *.doc Dateien aus beiden Verzeichnissen\n\n
+\tExamples:\n\n\t1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Source C:\\Target\n\t2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n
+\tBeispiele:\n\n\t1.) FreeFileSync -cmp SIZEDATE -cfg RRRRR C:\\Quelle C:\\Ziel\n\t2.) FreeFileSync -cmp sizedate -cfg rlrln c:\\dir1 c:\\dir2 -incl *.doc\n\n
+\tHint: You can easily generate a batch file by chosing \"Create batch job\" from the GUI menubar.\n
+\tTipp: Eine Batchdatei kann auch über das Menü der graphischen Benutzeroberfläche unter \"Erstelle Batch-Job\" generiert werden.\n
+\t\tChar 1: Folders/files that exist on left side only\n
+\t\t1. Zeichen: Ordner/Dateien, die nur links existieren\n
+\t\tChar 2: Folders/files that exist on right side only\n
+\t\t2. Zeichen: Ordner/Dateien, die nur rechts existieren\n
+\t\tChar 3: Files that exist on both sides, left one is newer\n
+\t\t3. Zeichen: Dateien, die auf beiden Seiten existieren; linke Datei ist neuer\n
+\t\tChar 4: Files that exist on both sides, right one is newer\n
+\t\t4. Zeichen: Dateien, die auf beiden Seiten existieren; rechte Datei ist neuer\n
+\t\tChar 5: Files that exist on both sides and are different\n
+\t\t5. Zeichen: Dateien, die auf beiden Seiten existieren und verschieden sind\n\n
|> file on right side only\n
|> Datei existiert nur rechts\n
diff --git a/lang.dat b/lang.dat
deleted file mode 100644
index 4e13590f..00000000
--- a/lang.dat
+++ /dev/null
Binary files differ
diff --git a/library/misc.cpp b/library/misc.cpp
index 7d798ec0..71bbe608 100644
--- a/library/misc.cpp
+++ b/library/misc.cpp
@@ -4,6 +4,8 @@
#include "resources.h"
#include "globalFunctions.h"
+const string CustomLocale::FfsLanguageDat = "language.dat";
+
void exchangeEscapeChars(wxString& data)
{
data.Replace(wxT("\\\\"), wxT("\\"));
@@ -23,14 +25,14 @@ CustomLocale::CustomLocale() :
CustomLocale::~CustomLocale()
{
//write language to file
- ofstream output("lang.dat");
+ ofstream output(FfsLanguageDat.c_str());
if (output)
{
globalFunctions::writeInt(output, currentLanguage);
output.close();
}
else
- wxMessageBox(wxString(_("Could not write to ")) + wxT("\"") + wxT("lang.dat") + wxT("\""), _("An exception occured!"), wxOK | wxICON_ERROR);
+ wxMessageBox(wxString(_("Could not write to ")) + wxT("\"") + wxString::From8BitData(FfsLanguageDat.c_str()) + wxT("\""), _("An exception occured!"), wxOK | wxICON_ERROR);
}
@@ -39,7 +41,7 @@ void CustomLocale::loadLanguageFromCfg() //retrieve language from config file:
int language = wxLANGUAGE_ENGLISH;
//try to load language setting from file
- ifstream input("lang.dat");
+ ifstream input(FfsLanguageDat.c_str());
if (input)
{
language = globalFunctions::readInt(input);
@@ -86,15 +88,15 @@ void CustomLocale::loadLanguageFile(int language)
//Delimiter:
//----------
- //Linux: 0xa
- //Mac: 0xd
- //Win: 0xd 0xa <- language files are in Windows format
+ //Linux: 0xa \n
+ //Mac: 0xd \r
+ //Win: 0xd 0xa \r\n <- language files are in Windows format
while (langFile.getline(temp, bufferSize, 0xd)) //specify delimiter explicitely
{
langFile.get(); //discard the 0xa character
- //wxString formattedString = wxString::FromUTF8(temp);
- wxString formattedString = wxString::From8BitData(temp);
+ wxString formattedString = wxString::FromUTF8(temp);
+ //wxString formattedString = wxString::From8BitData(temp);
exchangeEscapeChars(formattedString);
diff --git a/library/misc.h b/library/misc.h
index a8db4088..68a5db68 100644
--- a/library/misc.h
+++ b/library/misc.h
@@ -36,7 +36,9 @@ public:
~CustomLocale();
void loadLanguageFromCfg();
+
void loadLanguageFile(int language);
+
int getLanguage()
{
return currentLanguage;
@@ -44,6 +46,8 @@ public:
const wxChar* GetString(const wxChar* szOrigString, const wxChar* szDomain = NULL) const;
+ static const string FfsLanguageDat;
+
private:
Translation translationDB;
int currentLanguage;
diff --git a/library/multithreading.cpp b/library/multithreading.cpp
index c8826b11..19f83b94 100644
--- a/library/multithreading.cpp
+++ b/library/multithreading.cpp
@@ -68,7 +68,8 @@ public:
threadHandler->longRunner();
threadHandler->readyToReceiveResult.Lock();
- threadHandler->receivingResult.Signal();
+ threadHandler->receivingResult.Signal(); // kind of a double notice that work is completed
+ threadHandler->workDone = true; // workaround for wxCondition bug (wxWidgets v2.8.9, signal might geht lost)
threadHandler->readyToReceiveResult.Unlock();
}
@@ -90,7 +91,8 @@ private:
UpdateWhileExecuting::UpdateWhileExecuting() :
readyToReceiveResult(),
- receivingResult(readyToReceiveResult)
+ receivingResult(readyToReceiveResult),
+ workDone(false)
{
//mutex needs to be initially locked for condition receivingResult to work properly
readyToReceiveResult.Lock();
@@ -124,7 +126,6 @@ UpdateWhileExecuting::~UpdateWhileExecuting()
theWorkerThread->beginProcessing.Signal();
theWorkerThread->readyToBeginProcessing.Unlock();
-
//theWorkerThread deletes itself!
}
@@ -134,6 +135,8 @@ void UpdateWhileExecuting::waitUntilReady()
readyToReceiveResult.Unlock(); //avoid possible deadlock, when thread might be waiting to send the signal (if abort was pressed)
theWorkerThread->readyToBeginProcessing.Lock();
+
+ workDone = false; //no mutex needed here (worker thread that changes this variable is in waiting state)
}
// /|\ \|/ must be called directly after each other
@@ -145,6 +148,11 @@ void UpdateWhileExecuting::execute(StatusUpdater* statusUpdater)
theWorkerThread->readyToBeginProcessing.Unlock();
while (receivingResult.WaitTimeout(UI_UPDATE_INTERVAL) == wxCOND_TIMEOUT)
+ {
statusUpdater->triggerUI_Refresh(true); //ATTENTION: Exception "AbortThisProcess" may be thrown here!!!
+
+ if (workDone == true) //workaround for a bug in wxWidgets v2.8.9 class wxCondition: signals might get lost
+ break; //no mutex for workDone needed here: it is changed only when maintread is in WaitTimeout()
+ }
}
diff --git a/library/multithreading.h b/library/multithreading.h
index f2b5211c..feecce5f 100644
--- a/library/multithreading.h
+++ b/library/multithreading.h
@@ -62,6 +62,7 @@ private:
wxMutex readyToReceiveResult;
wxCondition receivingResult;
+ bool workDone; //workaround for a bug in wxWidgets v2.8.9 class wxCondition: signals might get lost
};
#endif // MULTITHREADING_H_INCLUDED
diff --git a/ui/MainDialog.cpp b/ui/MainDialog.cpp
index 7b7a5c37..186126e2 100644
--- a/ui/MainDialog.cpp
+++ b/ui/MainDialog.cpp
@@ -14,6 +14,7 @@
#include <wx/clipbrd.h>
#include <wx/file.h>
#include "../library/customGrid.h"
+#include <algorithm>
using namespace globalFunctions;
@@ -262,9 +263,9 @@ MainDialog::~MainDialog()
writeConfigurationToHD(FreeFileSync::FfsLastConfigFile); //don't trow exceptions in destructors
- if (restartOnExit) //needed so that restart is scheduled AFTER configuration was written!
+ if (restartOnExit) //this is needed so that restart happens AFTER configuration was written!
{ //create new dialog
- MainDialog* frame = new MainDialog(0L, FreeFileSync::FfsLastConfigFile, programLanguage);
+ MainDialog* frame = new MainDialog(NULL, FreeFileSync::FfsLastConfigFile, programLanguage);
frame->SetIcon(*GlobalResources::programIcon); //set application icon
frame->Show();
}
@@ -987,6 +988,9 @@ void MainDialog::addCfgFileToHistory(const wxString& filename)
if (sameFileSpecified(FreeFileSync::FfsLastConfigFile, filename))
return;
+ //only still existing files should be included in the list
+ if (!wxFileExists(filename))
+ return;
bool duplicateEntry = false;
unsigned int duplicatePos = 0;
@@ -998,8 +1002,7 @@ void MainDialog::addCfgFileToHistory(const wxString& filename)
break;
}
-
- if (duplicateEntry) //if entry is in the list, then jump to element
+ if (duplicateEntry) //if entry is in the list, then jump to element
{
m_choiceLoad->SetSelection(duplicatePos + 1);
}
@@ -1057,10 +1060,9 @@ bool FileDropEvent::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filen
const wxString droppedFileName = filenames[0];
//test if ffs config file has been dropped
- if (wxFileExists(droppedFileName) && FreeFileSync::isFFS_ConfigFile(droppedFileName))
+ if (FreeFileSync::isFFS_ConfigFile(droppedFileName))
{
mainDlg->readConfigurationFromHD(droppedFileName);
-
mainDlg->pushStatusInformation(_("Configuration loaded!"));
}
@@ -1148,7 +1150,6 @@ void MainDialog::OnLoadConfiguration(wxCommandEvent& event)
else
{
readConfigurationFromHD(newCfgFile);
-
pushStatusInformation(_("Configuration loaded!"));
}
}
@@ -1162,11 +1163,10 @@ void MainDialog::OnChoiceKeyEvent(wxKeyEvent& event)
if (event.GetKeyCode() == WXK_DELETE)
{ //try to delete the currently selected config history item
int selectedItem;
- if ((selectedItem = m_choiceLoad->GetSelection()) != wxNOT_FOUND)
+ if ((selectedItem = m_choiceLoad->GetCurrentSelection()) != wxNOT_FOUND)
if (1 <= selectedItem && unsigned(selectedItem) < m_choiceLoad->GetCount())
if (unsigned(selectedItem - 1) < cfgFileNames.size())
- {
- //delete selected row
+ { //delete selected row
cfgFileNames.erase(cfgFileNames.begin() + selectedItem - 1);
m_choiceLoad->Delete(selectedItem);
}
@@ -2268,7 +2268,7 @@ CompareStatusUpdater::CompareStatusUpdater(MainDialog* dlg) :
//display status panel during compare
statusPanel = new CompareStatus(mainDialog);
- mainDialog->bSizer1->Insert(1, statusPanel, 0, wxEXPAND | wxALL, 5 );
+ mainDialog->bSizer1->Insert(1, statusPanel, 0, wxEXPAND | wxBOTTOM, 5 );
//show abort button
diff --git a/ui/guiGenerated.cpp b/ui/guiGenerated.cpp
index b851d4b4..d1a1c183 100644
--- a/ui/guiGenerated.cpp
+++ b/ui/guiGenerated.cpp
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Oct 18 2008)
+// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -356,11 +356,11 @@ GuiGenerated::GuiGenerated( wxWindow* parent, wxWindowID id, const wxString& tit
sbSizer16->Add( m_bpButton201, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
- wxString m_choiceLoadChoices[] = { _("Load configuration...") };
+ wxString m_choiceLoadChoices[] = { _("Load from file...") };
int m_choiceLoadNChoices = sizeof( m_choiceLoadChoices ) / sizeof( wxString );
m_choiceLoad = new wxChoice( m_panel4, wxID_ANY, wxDefaultPosition, wxSize( 140,-1 ), m_choiceLoadNChoices, m_choiceLoadChoices, 0 );
m_choiceLoad->SetSelection( 0 );
- m_choiceLoad->SetToolTip( _("Load configuration from file:\n - use this choice box\n - drag & drop config file to this window\n - specify config file as first commandline parameter") );
+ m_choiceLoad->SetToolTip( _("Load configuration via...\n - this list (press DEL to delete items)\n - drag & drop to this window\n - startup parameter") );
sbSizer16->Add( m_choiceLoad, 0, wxALIGN_CENTER_VERTICAL, 5 );
@@ -787,27 +787,27 @@ SyncDlgGenerated::SyncDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
fgSizer1->Add( m_radioBtn1, 0, wxALIGN_CENTER_VERTICAL, 5 );
- m_buttonOneWay = new wxButton( this, wxID_ANY, _("One way ->"), wxDefaultPosition, wxSize( 130,-1 ), 0 );
+ m_buttonOneWay = new wxButton( this, wxID_ANY, _("One way ->"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
m_buttonOneWay->SetFont( wxFont( 11, 74, 90, 92, false, wxT("Tahoma") ) );
- fgSizer1->Add( m_buttonOneWay, 0, wxALIGN_CENTER_VERTICAL, 5 );
+ fgSizer1->Add( m_buttonOneWay, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_staticText8 = new wxStaticText( this, wxID_ANY, _("Mirror backup of left folder: Right folder will be overwritten and exactly match left folder after synchronization."), wxDefaultPosition, wxDefaultSize, 0 );
- m_staticText8->Wrap( 260 );
- fgSizer1->Add( m_staticText8, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+ m_staticText8->Wrap( 300 );
+ fgSizer1->Add( m_staticText8, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_radioBtn2 = new wxRadioButton( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_radioBtn2->SetFont( wxFont( 11, 74, 90, 92, false, wxT("Tahoma") ) );
fgSizer1->Add( m_radioBtn2, 0, wxALIGN_CENTER_VERTICAL, 5 );
- m_buttonTwoWay = new wxButton( this, wxID_ANY, _("Two way <->"), wxDefaultPosition, wxSize( 130,-1 ), 0 );
+ m_buttonTwoWay = new wxButton( this, wxID_ANY, _("Two way <->"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
m_buttonTwoWay->SetFont( wxFont( 11, 74, 90, 92, false, wxT("Tahoma") ) );
- fgSizer1->Add( m_buttonTwoWay, 0, wxALIGN_CENTER_VERTICAL, 5 );
+ fgSizer1->Add( m_buttonTwoWay, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_staticText10 = new wxStaticText( this, wxID_ANY, _("Synchronize both sides simultaneously: Copy new or updated files in both directions."), wxDefaultPosition, wxDefaultSize, 0 );
- m_staticText10->Wrap( 250 );
+ m_staticText10->Wrap( 300 );
fgSizer1->Add( m_staticText10, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_radioBtn3 = new wxRadioButton( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
@@ -815,14 +815,25 @@ SyncDlgGenerated::SyncDlgGenerated( wxWindow* parent, wxWindowID id, const wxStr
fgSizer1->Add( m_radioBtn3, 0, wxALIGN_CENTER_VERTICAL, 5 );
- m_staticText23 = new wxStaticText( this, wxID_ANY, _("Custom"), wxDefaultPosition, wxSize( 130,-1 ), wxALIGN_CENTRE|wxSTATIC_BORDER );
+ wxBoxSizer* bSizer65;
+ bSizer65 = new wxBoxSizer( wxVERTICAL );
+
+
+ bSizer65->Add( 0, 0, 1, wxEXPAND, 5 );
+
+ m_staticText23 = new wxStaticText( this, wxID_ANY, _("Custom"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_CENTRE|wxSTATIC_BORDER );
m_staticText23->Wrap( -1 );
m_staticText23->SetFont( wxFont( 11, 74, 90, 92, false, wxT("Tahoma") ) );
- fgSizer1->Add( m_staticText23, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 );
+ bSizer65->Add( m_staticText23, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+
+ bSizer65->Add( 0, 0, 1, wxEXPAND, 5 );
+
+ fgSizer1->Add( bSizer65, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_staticText9 = new wxStaticText( this, wxID_ANY, _("Configure your own synchronization rules."), wxDefaultPosition, wxDefaultSize, 0 );
- m_staticText9->Wrap( 250 );
+ m_staticText9->Wrap( 300 );
fgSizer1->Add( m_staticText9, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
sbSizer7->Add( fgSizer1, 0, 0, 5 );
diff --git a/ui/guiGenerated.h b/ui/guiGenerated.h
index c2665539..a606fc7a 100644
--- a/ui/guiGenerated.h
+++ b/ui/guiGenerated.h
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Oct 18 2008)
+// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -216,7 +216,9 @@ class SyncDlgGenerated : public wxDialog
wxButton* m_buttonTwoWay;
wxStaticText* m_staticText10;
wxRadioButton* m_radioBtn3;
+
wxStaticText* m_staticText23;
+
wxStaticText* m_staticText9;
wxButton* m_button6;
bgstack15