diff options
103 files changed, 8588 insertions, 8885 deletions
diff --git a/FreeFileSync/Build/Changelog.txt b/FreeFileSync/Build/Changelog.txt index e2967c96..9335fbec 100644 --- a/FreeFileSync/Build/Changelog.txt +++ b/FreeFileSync/Build/Changelog.txt @@ -1,3 +1,19 @@ +FreeFileSync 8.2 [2016-05-30] +----------------------------- +Unified item path representation on main grid +New progress indicator control for binary comparison +Fixed crash on exit when accessing already destructed constant +Fixed crash when FreeFileSync is still running during OS shutdown +Fixed crash on startup due to missing root certificates +Work around start up crash on Windows installations missing certain patches +Fixed in-place progress panel height being trimmed +Support drawing arbitrary polyons with graph control +Apply Posix file name normalization (OS X) +Normalize keyboard input encoding for all text fields (OS X) +Report errors when cleaning up old log files +Integrate external app WinMerge if installation is found + + FreeFileSync 8.1 [2016-04-21] ----------------------------- Follow shell links during drag and drop on main dialog (Windows) diff --git a/FreeFileSync/Build/Help/html/base.css b/FreeFileSync/Build/Help/html/base.css index 4a49e88e..ec1b039b 100644 --- a/FreeFileSync/Build/Help/html/base.css +++ b/FreeFileSync/Build/Help/html/base.css @@ -4,7 +4,7 @@ body { - font-family: Segoe UI, Verdana, Tahoma, sans-serif; + font-family: "Segoe UI", Verdana, Tahoma, sans-serif; text-align:justify; } @@ -62,7 +62,7 @@ table th .command-line { - font-family: Courier New, Courier, monospace; + font-family: "Courier New", Courier, monospace; text-align: left; } @@ -75,7 +75,7 @@ table th .file-path { - font-family: Consolas, Courier New, Courier, monospace; + font-family: Consolas, "Courier New", Courier, monospace; text-align: left; } diff --git a/FreeFileSync/Build/Languages/arabic.lng b/FreeFileSync/Build/Languages/arabic.lng index d8614bfb..1f66306b 100644 --- a/FreeFileSync/Build/Languages/arabic.lng +++ b/FreeFileSync/Build/Languages/arabic.lng @@ -101,7 +101,7 @@ <target>تحديد مسار مختلف لملف GlobalSettings.xml.</target> <source>Any number of FreeFileSync .ffs_gui and/or .ffs_batch configuration files.</source> -<target>أي عدد من ملفات خيارات FreeFileSyn أو\و _gui and/or .ffs_batch.</target> +<target>أي عدد من ملفات خيارات FreeFileSync أو\و _gui and/or .ffs_batch.</target> <source>Any number of alternative directory pairs for at most one config file.</source> <target>أي عدد من أزواج المسارات البديلة من أجل ملف خيارات واحد.</target> @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>إنشاء قائمة الملفات...</target> +<source>Fail-safe file copy</source> +<target>نسخ ملفات آمن من الفشل</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>نسخ الملفات المقفلة</target> + +<source>Copy file access permissions</source> +<target>نسخ أذونات الوصول إلى الملف</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>بدأ عملية المقارنة</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>خطأ رقم %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>فشل الاتصال بخادم SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -417,8 +450,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>لا يمكن الوصول إلى خدمة "نسخ الظل لوحدة التخزين".</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>الرجاء استخدام إصدار الـ 64-bit للبرنامج لإنشاء ملفات الظل الاحتياطية على هذا النظام.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>تعذر تحديد اسم الوسط %x.</target> @@ -593,6 +626,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>تحديث سمات %x</target> +<source>Cannot write file attributes of %x.</source> +<target>لا يمكن كتابة سمات الملف %x.</target> + <source>%x and %y have different content.</source> <target>%x و %y لديهما محتوى مختلف.</target> @@ -894,6 +930,9 @@ The command is triggered if: <source>Folder pair:</source> <target>زوج المجلدات:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>استخدام الإعدادات المحلية:</target> @@ -954,6 +993,9 @@ The command is triggered if: <source>C&lear</source> <target>إ&زالة</target> +<source>Detect synchronization directions with the help of database files</source> +<target>تحديد اتجاه المزامنة بالاستعانة بقواعد بيانات الملفات</target> + <source>Detect moved files</source> <target>اكتشاف الملفات المنقولة</target> @@ -968,24 +1010,21 @@ The command is triggered if: - الاكتشاف غير متاح للمزامنة الأولى </target> -<source>Detect synchronization directions with the help of database files</source> -<target>تحديد اتجاه المزامنة بالاستعانة بقواعد بيانات الملفات</target> - <source>Delete files:</source> <target>حذف الملفات:</target> -<source>&Permanent</source> -<target>&دائم</target> - -<source>Delete or overwrite files permanently</source> -<target>حذف أو الكتابة فوق الملفات بشكل دائم</target> - <source>&Recycle bin</source> <target>&سلة المهملات</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>نسخ احتياطي للملفات المحذوفة و المستبدلة في سلة المهملات</target> +<source>&Permanent</source> +<target>&دائم</target> + +<source>Delete or overwrite files permanently</source> +<target>حذف أو الكتابة فوق الملفات بشكل دائم</target> + <source>&Versioning</source> <target>ال&وسم حسب الإصدار</target> @@ -998,15 +1037,15 @@ The command is triggered if: <source>Handle errors:</source> <target>التعامل مع الأخطاء:</target> -<source>Hide all error and warning messages</source> -<target>إخفاء جميع رسائل الأخطاء و التحذير</target> - <source>&Pop-up</source> <target>&منبثق</target> <source>Show pop-up on errors or warnings</source> <target>إظهار إطارات منبثقة عند حصول أخطاء أو تحذيرات</target> +<source>Hide all error and warning messages</source> +<target>إخفاء جميع رسائل الأخطاء و التحذير</target> + <source>On completion:</source> <target>عند الانتهاء:</target> @@ -1112,9 +1151,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>هذه الإعدادات مستخدمة لجميع مهمات المزامنة.</target> -<source>Fail-safe file copy</source> -<target>نسخ ملفات آمن من الفشل</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1127,18 +1163,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(موصى به)</target> -<source>Copy locked files</source> -<target>نسخ الملفات المقفلة</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>نسخ الملفات المشتركة مع مستخدمين آخرين أو المقفولة باستخدام خدمة نسخ الظل الوسيط.</target> <source>(requires administrator rights)</source> <target>(بحاجة امتيازات المدير)</target> -<source>Copy file access permissions</source> -<target>نسخ أذونات الوصول إلى الملف</target> - <source>Transfer file and folder permissions.</source> <target>نقل أذونات الملفات و المجلدات.</target> @@ -1644,9 +1674,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>النسبة المئوية</target> -<source>Internet access failed.</source> -<target>فشل الوصول إلى الإنترنت.</target> - <source>Check for Program Updates</source> <target>تفقد وجود تحديثات للبرنامج</target> @@ -1654,10 +1681,7 @@ This guarantees a consistent state even in case of a serious error. <target>تنزيل الآن؟</target> <source>FreeFileSync is up to date.</source> -<target>البرنامج هو الأحدث حتى الآن.</target> - -<source>Unable to connect to www.freefilesync.org.</source> -<target>تعذر الاتصال بـ www.freefilesync.org.</target> +<target></target> <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> @@ -1665,9 +1689,18 @@ This guarantees a consistent state even in case of a serious error. <source>&Check</source> <target>&تحقق</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>لا يمكن العثور على وظيفة نظام %x.</target> + <source>Unable to register to receive system messages.</source> <target>تعذر التسجيل لاستقبال رسائل النظام.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>تعذر تسجيل تنبيهات الجهاز لـ %x.</target> @@ -1677,9 +1710,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>الملف مقفول من قبل عملية أخرى:</target> -<source>Cannot write file attributes of %x.</source> -<target>لا يمكن كتابة سمات الملف %x.</target> - <source>Cannot read security context of %x.</source> <target>لا يمكن قراءة سياق الأمان %x.</target> @@ -1695,9 +1725,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x ليس اسم دليل اعتيادي.</target> -<source>Cannot find system function %x.</source> -<target>لا يمكن العثور على وظيفة نظام %x.</target> - <source>Cannot copy file %x to %y.</source> <target>لا يمكن نسخ الملف %x إلى %y.</target> @@ -1770,6 +1797,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>ملف التكوين %x غير مكتمل. سيتم إعادة تعيين العناصر المفقودة إلى قيمها الافتراضية.</target> +<source>Internet access failed.</source> +<target>فشل الوصول إلى الإنترنت.</target> + <source>Prepare installation</source> <target>الاستعداد للتثبيت</target> @@ -1792,7 +1822,7 @@ This guarantees a consistent state even in case of a serious error. <target>حفظ الإعدادات إلى "%APPDATA%\FreeFileSync"</target> <source>Register FreeFileSync file extensions</source> -<target>تسجيل لاحقةالملفات</target> +<target></target> <source>Create Explorer context menu entries</source> <target>إنشاء مدخلات القوائم المحلية في متصفح الملفات</target> @@ -1819,10 +1849,10 @@ This guarantees a consistent state even in case of a serious error. <target>قائمة إبدأ</target> <source>Registering FreeFileSync file extensions</source> -<target>تسجيل لاحقة الملفات</target> +<target></target> <source>Unregistering FreeFileSync file extensions</source> -<target>إلغاء تسجيل لاحقةالملفات</target> +<target></target> <source>FreeFileSync Configuration</source> <target>تضبيطات FreeFileSync</target> diff --git a/FreeFileSync/Build/Languages/bulgarian.lng b/FreeFileSync/Build/Languages/bulgarian.lng index bf36cdb9..90f9d180 100644 --- a/FreeFileSync/Build/Languages/bulgarian.lng +++ b/FreeFileSync/Build/Languages/bulgarian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Създава се списък на файловете...</target> +<source>Fail-safe file copy</source> +<target>Надеждно копиране на файлове</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Копирай заключени файлове</target> + +<source>Copy file access permissions</source> +<target>Копирай правата за достъп на файла</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Започва сравняване</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Код на грешка %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Неуспешно свързване към SFTP-сървър %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Не може да се получи достъп до услуга Volume Shadow Copy.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Моля, ползвайте 64-битов FreeFileSync за създаване фонови копия на тази система.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Не може да се определи името на тома за %x.</target> @@ -581,6 +614,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Актуализира атрибутите на %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Не могат да се запишат файловите атрибути на %x.</target> + <source>%x and %y have different content.</source> <target>%x и %y имат различно съдържание.</target> @@ -666,7 +702,7 @@ The command is triggered if: <target>Превкл&ючи</target> <source>Switching to FreeFileSync's main window</source> -<target>Превключване към главното меню на FFS</target> +<target>Превключване към главното меню на FreeFileSync</target> <source> <pluralform>Automatic retry in 1 second...</pluralform> @@ -878,6 +914,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Двойка папки:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Ползвай локални настройки:</target> @@ -938,6 +977,9 @@ The command is triggered if: <source>C&lear</source> <target>И&зчисти</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Открий посоката на синхронизация чрез файловете на базата данни</target> + <source>Detect moved files</source> <target>Откриване на преместени файлове</target> @@ -952,24 +994,21 @@ The command is triggered if: - Няма откриване при първа синхронизация. </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Открий посоката на синхронизация чрез файловете на базата данни</target> - <source>Delete files:</source> <target>Изтриване на файлове:</target> -<source>&Permanent</source> -<target>&Необратимо</target> - -<source>Delete or overwrite files permanently</source> -<target>Изтрий или презапиши файловете необратимо</target> - <source>&Recycle bin</source> <target>&Кошче</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Резервирай изтритите или презаписани файлове в кошчето</target> +<source>&Permanent</source> +<target>&Необратимо</target> + +<source>Delete or overwrite files permanently</source> +<target>Изтрий или презапиши файловете необратимо</target> + <source>&Versioning</source> <target>&Версифициране</target> @@ -982,15 +1021,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Обработка на грешки:</target> -<source>Hide all error and warning messages</source> -<target>Скрий всички грешки и предупреждения</target> - <source>&Pop-up</source> <target>&Попитай</target> <source>Show pop-up on errors or warnings</source> <target>Питай при грешки или предупреждения</target> +<source>Hide all error and warning messages</source> +<target>Скрий всички грешки и предупреждения</target> + <source>On completion:</source> <target>При завършване:</target> @@ -1096,9 +1135,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>Следните настройки се ползват от всички задачи за синхронизация.</target> -<source>Fail-safe file copy</source> -<target>Надеждно копиране на файлове</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(препоръчително)</target> -<source>Copy locked files</source> -<target>Копирай заключени файлове</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Копирай споделени или заключени файлове с услугата Volume Shadow Copy.</target> <source>(requires administrator rights)</source> <target>(изисква администраторски права)</target> -<source>Copy file access permissions</source> -<target>Копирай правата за достъп на файла</target> - <source>Transfer file and folder permissions.</source> <target>Прехвърли правата за достъп на файла и папката.</target> @@ -1600,9 +1630,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Процент</target> -<source>Internet access failed.</source> -<target>Няма достъп до Интернет.</target> - <source>Check for Program Updates</source> <target>Проверка за нова версия на програмата</target> @@ -1612,18 +1639,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync вече е актуална.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Няма връзка със www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>Оп&итай</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Не е намерена системната функция %x.</target> + <source>Unable to register to receive system messages.</source> <target>Невъзможна регистрация за получаване на системни съобщения.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Не се регистрират съобщенията на устройство %x.</target> @@ -1633,9 +1666,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Файлът е заключен от друг процес:</target> -<source>Cannot write file attributes of %x.</source> -<target>Не могат да се запишат файловите атрибути на %x.</target> - <source>Cannot read security context of %x.</source> <target>Не може да се прочете контекста за сигурност на %x.</target> @@ -1651,9 +1681,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x не е регулярно име на директория.</target> -<source>Cannot find system function %x.</source> -<target>Не е намерена системната функция %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Не може да се копира файл %x в %y.</target> @@ -1714,6 +1741,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Конфигурационният файл %x е непълен. Ще бъдат зададени подразбирани стойности за липсващите елементи.</target> +<source>Internet access failed.</source> +<target>Няма достъп до Интернет.</target> + <source>Prepare installation</source> <target>Подготовка за инсталиране</target> diff --git a/FreeFileSync/Build/Languages/chinese_simple.lng b/FreeFileSync/Build/Languages/chinese_simple.lng index 0a8049b9..a3ae61e0 100644 --- a/FreeFileSync/Build/Languages/chinese_simple.lng +++ b/FreeFileSync/Build/Languages/chinese_simple.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>生成文件列表...</target> +<source>Fail-safe file copy</source> +<target>无风险的文件复制</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>复制被锁定的文件</target> + +<source>Copy file access permissions</source> +<target>复制文件存取权限</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>正在开始比较</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>错误代码 %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>无法连接到SFTP服务器 %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -402,8 +435,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>无法访问卷影复制服务.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>请使用 FreeFileSync 64位版本来在这个系统上创建卷影复制.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>无法为 %x 确定卷名.</target> @@ -578,6 +611,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>更新 %x 的属性</target> +<source>Cannot write file attributes of %x.</source> +<target>无法写入 %x 的文件属性.</target> + <source>%x and %y have different content.</source> <target>%x 和 %y 有着不同的内容.</target> @@ -874,6 +910,9 @@ The command is triggered if: <source>Folder pair:</source> <target>文件夹对:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>使用本地设置:</target> @@ -934,6 +973,9 @@ The command is triggered if: <source>C&lear</source> <target>清除(&L)</target> +<source>Detect synchronization directions with the help of database files</source> +<target>借助数据库文件来检测同步的方向</target> + <source>Detect moved files</source> <target>检测被移动的文件</target> @@ -948,24 +990,21 @@ The command is triggered if: - 首次同步时检测不可用 </target> -<source>Detect synchronization directions with the help of database files</source> -<target>借助数据库文件来检测同步的方向</target> - <source>Delete files:</source> <target>删除文件:</target> -<source>&Permanent</source> -<target>永久(&P)</target> - -<source>Delete or overwrite files permanently</source> -<target>永久性删除或覆盖文件</target> - <source>&Recycle bin</source> <target>回收站(&R)</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>备份被删除和被覆盖的文件到回收站</target> +<source>&Permanent</source> +<target>永久(&P)</target> + +<source>Delete or overwrite files permanently</source> +<target>永久性删除或覆盖文件</target> + <source>&Versioning</source> <target>历史版本(&V)</target> @@ -978,15 +1017,15 @@ The command is triggered if: <source>Handle errors:</source> <target>处理错误:</target> -<source>Hide all error and warning messages</source> -<target>隐藏所有错误与警告信息</target> - <source>&Pop-up</source> <target>弹出对话框(&P)</target> <source>Show pop-up on errors or warnings</source> <target>在错误或警告时显示弹出对话框</target> +<source>Hide all error and warning messages</source> +<target>隐藏所有错误与警告信息</target> + <source>On completion:</source> <target>在完成时:</target> @@ -1092,9 +1131,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>如下的设置使用于所有同步作业.</target> -<source>Fail-safe file copy</source> -<target>无风险的文件复制</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1104,18 +1140,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(推荐)</target> -<source>Copy locked files</source> -<target>复制被锁定的文件</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>使用卷影复制服务来复制已共享或已锁定的文件.</target> <source>(requires administrator rights)</source> <target>(需要管理员权限)</target> -<source>Copy file access permissions</source> -<target>复制文件存取权限</target> - <source>Transfer file and folder permissions.</source> <target>传输文件及文件夹的权限.</target> @@ -1586,9 +1616,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>百分比</target> -<source>Internet access failed.</source> -<target>因特网接入失败.</target> - <source>Check for Program Updates</source> <target>检查程序的更新</target> @@ -1598,18 +1625,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync 已是最新.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>无法连接到www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>检查(&C)</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>无法找到系统功能 %x.</target> + <source>Unable to register to receive system messages.</source> <target>无法注册以接收系统信息.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>无法为 %x 注册设备通知.</target> @@ -1619,9 +1652,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>此文件被另一进程锁定:</target> -<source>Cannot write file attributes of %x.</source> -<target>无法写入 %x 的文件属性.</target> - <source>Cannot read security context of %x.</source> <target>无法读取 %x 的安全上下文.</target> @@ -1637,9 +1667,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x 不是一个正规的目录名.</target> -<source>Cannot find system function %x.</source> -<target>无法找到系统功能 %x.</target> - <source>Cannot copy file %x to %y.</source> <target>无法复制文件 %x 到 %y.</target> @@ -1697,6 +1724,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>配置文件 %x 不完整. 丢失的元素将被设置为它们的默认值.</target> +<source>Internet access failed.</source> +<target>因特网接入失败.</target> + <source>Prepare installation</source> <target>准备安装</target> diff --git a/FreeFileSync/Build/Languages/chinese_traditional.lng b/FreeFileSync/Build/Languages/chinese_traditional.lng index 5fc90821..d177cdbd 100644 --- a/FreeFileSync/Build/Languages/chinese_traditional.lng +++ b/FreeFileSync/Build/Languages/chinese_traditional.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>正在產生檔案清單…</target> +<source>Fail-safe file copy</source> +<target>故障保護檔案複製</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>複製被鎖定的檔案</target> + +<source>Copy file access permissions</source> +<target>複製檔案系統權限</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>開始比對</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>錯誤代碼 %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>無法連接到SFTP伺服器 %x。</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -402,8 +435,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>無法讀取卷影複製服務。</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>請在此系統上使用FreeFileSync 64位元版本來新建卷影副本。</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>無法確定卷名為 %x。</target> @@ -578,6 +611,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>正在更新 %x 個屬性</target> +<source>Cannot write file attributes of %x.</source> +<target>無法寫入 %x 的檔案屬性。</target> + <source>%x and %y have different content.</source> <target>%x 和 %y 擁有的內容不同。</target> @@ -874,6 +910,9 @@ The command is triggered if: <source>Folder pair:</source> <target>配對資料夾:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>使用本機設定:</target> @@ -934,6 +973,9 @@ The command is triggered if: <source>C&lear</source> <target>清除(&l)</target> +<source>Detect synchronization directions with the help of database files</source> +<target>檢測同步方向和資料庫檔案的說明</target> + <source>Detect moved files</source> <target>檢測被移動的檔案</target> @@ -948,24 +990,21 @@ The command is triggered if: - 檢測不可用於首次同步 </target> -<source>Detect synchronization directions with the help of database files</source> -<target>檢測同步方向和資料庫檔案的說明</target> - <source>Delete files:</source> <target>刪除檔案:</target> -<source>&Permanent</source> -<target>常駐(&P)</target> - -<source>Delete or overwrite files permanently</source> -<target>永久刪除或覆蓋檔案</target> - <source>&Recycle bin</source> <target>資源回收筒(&R)</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>在資源回收筒中刪除備份和覆蓋檔案</target> +<source>&Permanent</source> +<target>常駐(&P)</target> + +<source>Delete or overwrite files permanently</source> +<target>永久刪除或覆蓋檔案</target> + <source>&Versioning</source> <target>版本控制(&V)</target> @@ -978,15 +1017,15 @@ The command is triggered if: <source>Handle errors:</source> <target>錯誤處理:</target> -<source>Hide all error and warning messages</source> -<target>隱藏所有錯誤和警告訊息</target> - <source>&Pop-up</source> <target>彈出(&P)</target> <source>Show pop-up on errors or warnings</source> <target>在彈出視窗上顯示錯誤或警告訊息</target> +<source>Hide all error and warning messages</source> +<target>隱藏所有錯誤和警告訊息</target> + <source>On completion:</source> <target>完成後:</target> @@ -1092,9 +1131,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>以下設定用於所有同步作業。</target> -<source>Fail-safe file copy</source> -<target>故障保護檔案複製</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1107,18 +1143,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(建議)</target> -<source>Copy locked files</source> -<target>複製被鎖定的檔案</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>共用的副本或鎖定的檔案使用卷影複製服務。</target> <source>(requires administrator rights)</source> <target>(需要管理員權限)</target> -<source>Copy file access permissions</source> -<target>複製檔案系統權限</target> - <source>Transfer file and folder permissions.</source> <target>傳輸檔案和資料夾的權限。</target> @@ -1589,9 +1619,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>百分比</target> -<source>Internet access failed.</source> -<target>網際網路連線失敗。</target> - <source>Check for Program Updates</source> <target>檢查程式更新</target> @@ -1601,18 +1628,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync已經是最新版本。</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>無法連接到www.freefilesync.org。</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>檢查(&C)</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>找不到系統函數 %x。</target> + <source>Unable to register to receive system messages.</source> <target>無法登錄接收系統訊息。</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x 無法註冊裝置通知。</target> @@ -1622,9 +1655,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>檔案被另一個進程鎖定:</target> -<source>Cannot write file attributes of %x.</source> -<target>無法寫入 %x 的檔案屬性。</target> - <source>Cannot read security context of %x.</source> <target>無法讀取 %x 的安全內容。</target> @@ -1640,9 +1670,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x 不是一個常規目錄名稱。</target> -<source>Cannot find system function %x.</source> -<target>找不到系統函數 %x。</target> - <source>Cannot copy file %x to %y.</source> <target>無法從 %x 複製檔案到 %y。</target> @@ -1700,6 +1727,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>配置檔案 %x 是不完整的。缺少的元素將設定為其預設值。</target> +<source>Internet access failed.</source> +<target>網際網路連線失敗。</target> + <source>Prepare installation</source> <target>準備安裝</target> diff --git a/FreeFileSync/Build/Languages/croatian.lng b/FreeFileSync/Build/Languages/croatian.lng index 3f8f4318..b8e02634 100644 --- a/FreeFileSync/Build/Languages/croatian.lng +++ b/FreeFileSync/Build/Languages/croatian.lng @@ -101,7 +101,7 @@ <target>Putanja do alternativne GlobalSettings.xml datoteke.</target> <source>Any number of FreeFileSync .ffs_gui and/or .ffs_batch configuration files.</source> -<target>Bilo koji broj FreeFileSync . ffs_gui i/ili .ffs_batch konfiguracijskih datoteka.</target> +<target>Bilo koji broj FreeFileSync .ffs_gui i/ili .ffs_batch konfiguracijskih datoteka.</target> <source>Any number of alternative directory pairs for at most one config file.</source> <target>Bilo koji broj alternativnih parova mapa za najmanje jednu config datoteku.</target> @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generiranje popisa datoteka...</target> +<source>Fail-safe file copy</source> +<target>Kopiranje zaštićeno od grešaka</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopiraj zaključane datoteke</target> + +<source>Copy file access permissions</source> +<target>Kopiraj datotečna dopuštenja</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Pokretanje usporedbe</target> @@ -291,8 +324,8 @@ Stvarno: %y bajta <source>Error Code %x:</source> <target>Pogreška broj %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Neuspjelo povezivanje na SFTP server %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Stvarno: %y bajta <source>Cannot access the Volume Shadow Copy Service.</source> <target>Ne mogu pristupiti Voulme Shadow Copy servisu.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Molimo koristite FreeFileSync 64-bitnu verziju za izradu shadow kopija na ovom sustavu.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Ne mogu utvrditi naziv spremnika za %x.</target> @@ -584,6 +617,9 @@ Naredba će biti pokrenuta ako se: <source>Updating attributes of %x</source> <target>Obnavljam atribute od %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Ne mogu zapisati svojstva od %x.</target> + <source>%x and %y have different content.</source> <target>%x. i %y imaju različit sadržaj.</target> @@ -882,6 +918,9 @@ Naredba će biti pokrenuta ako se: <source>Folder pair:</source> <target>Par mapa:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Koristi lokalne postavke:</target> @@ -942,6 +981,9 @@ Naredba će biti pokrenuta ako se: <source>C&lear</source> <target>O&čisti</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Otkrij putanju sinkronizacije pomoću baze podataka</target> + <source>Detect moved files</source> <target>Otkrij premještene datoteke</target> @@ -956,24 +998,21 @@ Naredba će biti pokrenuta ako se: - Otkrivanje nije dostupno za prvu sinkronizaciju </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Otkrij putanju sinkronizacije pomoću baze podataka</target> - <source>Delete files:</source> <target>Izbriši datoteke:</target> -<source>&Permanent</source> -<target>&Trajno</target> - -<source>Delete or overwrite files permanently</source> -<target>Trajno izbriši ili prepiši datoteke</target> - <source>&Recycle bin</source> <target>&Koš za smeće</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Spremi izbrisane ili prepisane datoteke u koš za smeće</target> +<source>&Permanent</source> +<target>&Trajno</target> + +<source>Delete or overwrite files permanently</source> +<target>Trajno izbriši ili prepiši datoteke</target> + <source>&Versioning</source> <target>&Označavanje</target> @@ -986,15 +1025,15 @@ Naredba će biti pokrenuta ako se: <source>Handle errors:</source> <target>Obradi pogreške:</target> -<source>Hide all error and warning messages</source> -<target>Sakrij sve poruke za greške i upozorenja</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Prikaži skočni prozor pri greškama i upozorenjima</target> +<source>Hide all error and warning messages</source> +<target>Sakrij sve poruke za greške i upozorenja</target> + <source>On completion:</source> <target>Pri dovršetku:</target> @@ -1100,9 +1139,6 @@ Naredba će biti pokrenuta ako se: <source>The following settings are used for all synchronization jobs.</source> <target>Ove postavke se koriste za sve sinkronizacijske zadatke.</target> -<source>Fail-safe file copy</source> -<target>Kopiranje zaštićeno od grešaka</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>(recommended)</source> <target>(preporučeno)</target> -<source>Copy locked files</source> -<target>Kopiraj zaključane datoteke</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopiraj djeljene ili zaključane datoteke pomoću Volume Shadow Copy servisa.</target> <source>(requires administrator rights)</source> <target>(zahtjeva administratorske ovlasti)</target> -<source>Copy file access permissions</source> -<target>Kopiraj datotečna dopuštenja</target> - <source>Transfer file and folder permissions.</source> <target>Prenesi dopuštenja za datoteke i mape.</target> @@ -1611,9 +1641,6 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>Percentage</source> <target>Postotak</target> -<source>Internet access failed.</source> -<target>Mrežna veza nije dostupna.</target> - <source>Check for Program Updates</source> <target>Provjeri za nadogradnje programa</target> @@ -1623,18 +1650,24 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>FreeFileSync is up to date.</source> <target>FreeFileSync je ažuran.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nije moguće povezivanje s www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Provjeri</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Ne mogu pronaći sistemsku funkciju %x.</target> + <source>Unable to register to receive system messages.</source> <target>Nije moguće registriranje za primanje sistemskih poruka.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nije moguće registrirati prijavu uređaja za %x.</target> @@ -1644,9 +1677,6 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>The file is locked by another process:</source> <target>Datoteku koristi drugi proces:</target> -<source>Cannot write file attributes of %x.</source> -<target>Ne mogu zapisati svojstva od %x.</target> - <source>Cannot read security context of %x.</source> <target>Ne mogu čitati zaštićeni sadržaj %x.</target> @@ -1662,9 +1692,6 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>%x is not a regular directory name.</source> <target>%x nije ispravan naziv mape.</target> -<source>Cannot find system function %x.</source> -<target>Ne mogu pronaći sistemsku funkciju %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Ne mogu kopirati datoteku %x na %y.</target> @@ -1728,6 +1755,9 @@ Ovo garantira čvrsto stanje čak u slučaju ozbiljne greške. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Konfiguracijska datoteka %x je nepotpuna. Nedostajući elementi će biti postavljeni na početne vrijednosti.</target> +<source>Internet access failed.</source> +<target>Mrežna veza nije dostupna.</target> + <source>Prepare installation</source> <target>Pripremam instalaciju</target> diff --git a/FreeFileSync/Build/Languages/czech.lng b/FreeFileSync/Build/Languages/czech.lng index 3fca8e3a..571e8a45 100644 --- a/FreeFileSync/Build/Languages/czech.lng +++ b/FreeFileSync/Build/Languages/czech.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Vytváření seznamu souborů...</target> +<source>Fail-safe file copy</source> +<target>Bezpečné kopírování souborů</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopírovat zamčené soubory</target> + +<source>Copy file access permissions</source> +<target>Kopírovat přístupová oprávnění k souborům</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Začátek porovnávání</target> @@ -291,8 +324,8 @@ Aktuálně: %y b <source>Error Code %x:</source> <target>Chybový kód %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Nepodařilo se připojit k SFTP servru %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Aktuálně: %y b <source>Cannot access the Volume Shadow Copy Service.</source> <target>Nepodařil se přístup ke službě Stínové kopie.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Prosím použijte FreeFileSync 64-bitovou verzi pro použití služby Stínové kopie.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>>Nelze zjistit jméno jednotky souboru %x.</target> @@ -584,6 +617,9 @@ Příkaz je spuštěn když: <source>Updating attributes of %x</source> <target>Aktualizace atributů souboru %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Nelze zapsat atributy souboru %x.</target> + <source>%x and %y have different content.</source> <target>%x a %y mají odlišný obsah.</target> @@ -882,6 +918,9 @@ Příkaz je spuštěn když: <source>Folder pair:</source> <target>Dvojice složek:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Použít nastavení:</target> @@ -942,6 +981,9 @@ Příkaz je spuštěn když: <source>C&lear</source> <target>Vy&mazat</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Určit směr synchronizace pomocí databáze</target> + <source>Detect moved files</source> <target>Detekce přesunutých souborů</target> @@ -956,24 +998,21 @@ Příkaz je spuštěn když: - Detekce rozdílů až po první synchronizaci </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Určit směr synchronizace pomocí databáze</target> - <source>Delete files:</source> <target>Mazání souborů:</target> -<source>&Permanent</source> -<target>&Trvale</target> - -<source>Delete or overwrite files permanently</source> -<target>Smazat nebo přepsat soubory trvale</target> - <source>&Recycle bin</source> <target>&Koš</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Použít Koš při mazání nebo přepisu souborů</target> +<source>&Permanent</source> +<target>&Trvale</target> + +<source>Delete or overwrite files permanently</source> +<target>Smazat nebo přepsat soubory trvale</target> + <source>&Versioning</source> <target>&Verzování</target> @@ -986,15 +1025,15 @@ Příkaz je spuštěn když: <source>Handle errors:</source> <target>Zpracování chyb:</target> -<source>Hide all error and warning messages</source> -<target>Skrýt všechny chyby a varování</target> - <source>&Pop-up</source> <target>&Hlášení</target> <source>Show pop-up on errors or warnings</source> <target>Zobrazit hlášení při chybě nebo varování</target> +<source>Hide all error and warning messages</source> +<target>Skrýt všechny chyby a varování</target> + <source>On completion:</source> <target>Po dokončení:</target> @@ -1100,9 +1139,6 @@ Příkaz je spuštěn když: <source>The following settings are used for all synchronization jobs.</source> <target>Toto nastavení je platné pro všechny synchronizační úlohy.</target> -<source>Fail-safe file copy</source> -<target>Bezpečné kopírování souborů</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1112,18 +1148,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(doporučeno)</target> -<source>Copy locked files</source> -<target>Kopírovat zamčené soubory</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopírovat sdílené nebo zamčené soubory pomocí služby Stínové kopie.</target> <source>(requires administrator rights)</source> <target>(vyžaduje administrátorská oprávnění)</target> -<source>Copy file access permissions</source> -<target>Kopírovat přístupová oprávnění k souborům</target> - <source>Transfer file and folder permissions.</source> <target>Přenést přístupová oprávnění souborů a složek.</target> @@ -1608,9 +1638,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Procentní podíl</target> -<source>Internet access failed.</source> -<target>Není přístup k internetu.</target> - <source>Check for Program Updates</source> <target>Hledání aktualizací programu</target> @@ -1620,18 +1647,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync je aktuální.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Není možné se připojit k www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Kontrola</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Nelze najít systémovou funkci %x.</target> + <source>Unable to register to receive system messages.</source> <target>Nepodařilo se zaregistrovat k odběru systémových zpráv.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nepodařilo se zaregistrovat zprávy zařízení %x.</target> @@ -1641,9 +1674,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Soubor je uzamčen jiným procesem:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nelze zapsat atributy souboru %x.</target> - <source>Cannot read security context of %x.</source> <target>Nelze číst přístupová práva pro %x.</target> @@ -1659,9 +1689,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x není platným názvem adresáře.</target> -<source>Cannot find system function %x.</source> -<target>Nelze najít systémovou funkci %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Nelze kopírovat soubor %x do %y.</target> @@ -1725,6 +1752,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Konfigurační soubor %x je nekompletní. Chybějicí položky budou nahrazeny výchozími hodnotami.</target> +<source>Internet access failed.</source> +<target>Není přístup k internetu.</target> + <source>Prepare installation</source> <target>Příprava instalace</target> diff --git a/FreeFileSync/Build/Languages/danish.lng b/FreeFileSync/Build/Languages/danish.lng index de7625b4..54354d2b 100644 --- a/FreeFileSync/Build/Languages/danish.lng +++ b/FreeFileSync/Build/Languages/danish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Opretter filliste...</target> +<source>Fail-safe file copy</source> +<target>Sikker filkopiering</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopier låste filer</target> + +<source>Copy file access permissions</source> +<target>Kopier adgangstilladelser</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Starter analyse</target> @@ -291,8 +324,8 @@ Aktuel: %y byte <source>Error Code %x:</source> <target>Fejlkode %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Kunne ikke kontakte SFTP serveren %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Aktuel: %y byte <source>Cannot access the Volume Shadow Copy Service.</source> <target>VSS tjenesten er ikke tilgængelig.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Brug FreeFileSync 64-bit til at lave VSS kopier på dette system.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Kan ikke bestemme volumennavn for %x.</target> @@ -581,6 +614,9 @@ Kommandoen udføres hvis: <source>Updating attributes of %x</source> <target>Opdaterer attributter for %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Kan ikke skrive filattributter til %x.</target> + <source>%x and %y have different content.</source> <target>%x og %y har forskelligt indhold.</target> @@ -666,7 +702,7 @@ Kommandoen udføres hvis: <target>&Skift</target> <source>Switching to FreeFileSync's main window</source> -<target>Skifter til hovedvinduet</target> +<target></target> <source> <pluralform>Automatic retry in 1 second...</pluralform> @@ -878,6 +914,9 @@ Kommandoen udføres hvis: <source>Folder pair:</source> <target>Mappepar:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Brug lokale indstillinger:</target> @@ -938,6 +977,9 @@ Kommandoen udføres hvis: <source>C&lear</source> <target>R&yd</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Genkend synkretninger ved hjælp af databasefiler</target> + <source>Detect moved files</source> <target>Genkend flyttede filer</target> @@ -952,24 +994,21 @@ Kommandoen udføres hvis: - Genkender ikke ved første synk </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Genkend synkretninger ved hjælp af databasefiler</target> - <source>Delete files:</source> <target>Filsletning:</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Slet eller overskriv filer permanent</target> - <source>&Recycle bin</source> <target>&Papirkurv</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Flyt slettede og overskrevne filer til papirkurven</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Slet eller overskriv filer permanent</target> + <source>&Versioning</source> <target>&Versionering</target> @@ -982,15 +1021,15 @@ Kommandoen udføres hvis: <source>Handle errors:</source> <target>Fejlhåndtering:</target> -<source>Hide all error and warning messages</source> -<target>Skjul fejlbeskeder og advarsler</target> - <source>&Pop-up</source> <target>&Besked</target> <source>Show pop-up on errors or warnings</source> <target>Vis fejlbeskeder og advarsler</target> +<source>Hide all error and warning messages</source> +<target>Skjul fejlbeskeder og advarsler</target> + <source>On completion:</source> <target>Ved gennemført:</target> @@ -1096,9 +1135,6 @@ Kommandoen udføres hvis: <source>The following settings are used for all synchronization jobs.</source> <target>Disse indstillinger gælder alle synkroniseringer.</target> -<source>Fail-safe file copy</source> -<target>Sikker filkopiering</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Sikrer processen ved alvorlige fejl. <source>(recommended)</source> <target>(anbefalet)</target> -<source>Copy locked files</source> -<target>Kopier låste filer</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopiér delte eller låste filer med VSS kopiering.</target> <source>(requires administrator rights)</source> <target>(administrator)</target> -<source>Copy file access permissions</source> -<target>Kopier adgangstilladelser</target> - <source>Transfer file and folder permissions.</source> <target>Overfør fil og mappetilladelser.</target> @@ -1217,7 +1247,7 @@ Sikrer processen ved alvorlige fejl. <target>&Download</target> <source>A new version of FreeFileSync is available:</source> -<target>Opdatering tilgængelig:</target> +<target></target> <source>Confirm</source> <target>Bekræft</target> @@ -1600,9 +1630,6 @@ Sikrer processen ved alvorlige fejl. <source>Percentage</source> <target>Procent</target> -<source>Internet access failed.</source> -<target>Ingen internetadgang.</target> - <source>Check for Program Updates</source> <target>Søg efter opdatering</target> @@ -1612,18 +1639,24 @@ Sikrer processen ved alvorlige fejl. <source>FreeFileSync is up to date.</source> <target>FreeFileSync er opdateret.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Kan ikke kontakte www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Kontroller</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Kan ikke finde systemfunktionen %x.</target> + <source>Unable to register to receive system messages.</source> <target>Kunne ikke registrere modtagelse af systembeskeder.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Kan ikke registrere beskeder for %x.</target> @@ -1633,9 +1666,6 @@ Sikrer processen ved alvorlige fejl. <source>The file is locked by another process:</source> <target>Filen er låst af en anden process:</target> -<source>Cannot write file attributes of %x.</source> -<target>Kan ikke skrive filattributter til %x.</target> - <source>Cannot read security context of %x.</source> <target>Kan ikke læse sikkerhedsindstillinger på %x.</target> @@ -1651,9 +1681,6 @@ Sikrer processen ved alvorlige fejl. <source>%x is not a regular directory name.</source> <target>%x er ikke et gyldigt mappenavn.</target> -<source>Cannot find system function %x.</source> -<target>Kan ikke finde systemfunktionen %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Kan ikke kopiere filen %x til %y.</target> @@ -1714,6 +1741,9 @@ Sikrer processen ved alvorlige fejl. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Indstillingsfilen %x er ikke komplet. Manglende elementer sættes til standard.</target> +<source>Internet access failed.</source> +<target>Ingen internetadgang.</target> + <source>Prepare installation</source> <target>Forbereder installering</target> diff --git a/FreeFileSync/Build/Languages/dutch.lng b/FreeFileSync/Build/Languages/dutch.lng index 8f76028d..a8c82ae7 100644 --- a/FreeFileSync/Build/Languages/dutch.lng +++ b/FreeFileSync/Build/Languages/dutch.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Maak bestandslijst...</target> +<source>Fail-safe file copy</source> +<target>Fail-safe bestand kopieëren</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Vergrendelde bestanden kopieëren</target> + +<source>Copy file access permissions</source> +<target>Toegangsmachtigingen om bestanden te kopieëren</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Start vergelijking</target> @@ -291,8 +324,8 @@ Werkelijk: %y bytes <source>Error Code %x:</source> <target>Foutcode %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Kan geen verbinding maken met SFTP server %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Werkelijk: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Kan geen toegang krijgen tot de Volume Shadow Copy Service.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Gebruik FreeFileSync 64-bits versie voor het maken van schaduwkopieën op dit systeem.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Kan de volumenaam niet vaststellen voor %x.</target> @@ -581,6 +614,9 @@ De opdracht wordt geactiveerd als: <source>Updating attributes of %x</source> <target>Kenmerken van %x bijwerken</target> +<source>Cannot write file attributes of %x.</source> +<target>De bestandskenmerken voor %x kunnen niet geschreven worden.</target> + <source>%x and %y have different content.</source> <target>%x en %y hebben verschillende inhoud.</target> @@ -878,6 +914,9 @@ De opdracht wordt geactiveerd als: <source>Folder pair:</source> <target>Mappaar:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Gebruik lokale instellingen:</target> @@ -938,6 +977,9 @@ De opdracht wordt geactiveerd als: <source>C&lear</source> <target>&Wissen</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detecteren van synchronisatie richtingen met behulp van databasebestanden</target> + <source>Detect moved files</source> <target>Detecteren van verplaatste bestanden</target> @@ -952,24 +994,21 @@ De opdracht wordt geactiveerd als: - Detectie niet beschikbaar voor de eerste synchronisatie </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detecteren van synchronisatie richtingen met behulp van databasebestanden</target> - <source>Delete files:</source> <target>Bestanden verwijderen:</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Bestanden permanent verwijderen of overschrijven</target> - <source>&Recycle bin</source> <target>&Prullenbak</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Back-up de verwijderde en overschreven bestanden in de prullenbak</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Bestanden permanent verwijderen of overschrijven</target> + <source>&Versioning</source> <target>&Versiebeheer</target> @@ -982,15 +1021,15 @@ De opdracht wordt geactiveerd als: <source>Handle errors:</source> <target>Fouten afhandelen:</target> -<source>Hide all error and warning messages</source> -<target>Verberg alle foutberichten en waarschuwingen</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Toon pop-up bij fouten of waarschuwingen</target> +<source>Hide all error and warning messages</source> +<target>Verberg alle foutberichten en waarschuwingen</target> + <source>On completion:</source> <target>Na voltooiing:</target> @@ -1096,9 +1135,6 @@ De opdracht wordt geactiveerd als: <source>The following settings are used for all synchronization jobs.</source> <target>De volgende instellingen worden gebruikt voor alle synchronisatie opdrachten.</target> -<source>Fail-safe file copy</source> -<target>Fail-safe bestand kopieëren</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>(recommended)</source> <target>(aanbevolen)</target> -<source>Copy locked files</source> -<target>Vergrendelde bestanden kopieëren</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Gedeelde of vergrendelde bestanden met behulp van de Volume Schaduw copy-Service kopieëren.</target> <source>(requires administrator rights)</source> <target>(vereist beheerdersrechten)</target> -<source>Copy file access permissions</source> -<target>Toegangsmachtigingen om bestanden te kopieëren</target> - <source>Transfer file and folder permissions.</source> <target>Overdracht van bestands- en mapmachtigingen.</target> @@ -1600,9 +1630,6 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>Percentage</source> <target>Percentage</target> -<source>Internet access failed.</source> -<target>Internettoegang is mislukt.</target> - <source>Check for Program Updates</source> <target>Controleer voor programma-updates</target> @@ -1612,18 +1639,24 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>FreeFileSync is up to date.</source> <target>FreeFileSync is actueel.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Kan geen verbinding maken met www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Controleren</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Kan de systeemfunctie %x niet vinden.</target> + <source>Unable to register to receive system messages.</source> <target>Niet in staat om de ontvangen systeemberichten te registreren.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Niet in staat om apparaat meldingen te registreren voor %x.</target> @@ -1633,9 +1666,6 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>The file is locked by another process:</source> <target>Het bestand is vergrendeld door een ander proces:</target> -<source>Cannot write file attributes of %x.</source> -<target>De bestandskenmerken voor %x kunnen niet geschreven worden.</target> - <source>Cannot read security context of %x.</source> <target>Kan de beveiligingscontext van %x niet lezen.</target> @@ -1651,9 +1681,6 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>%x is not a regular directory name.</source> <target>%x is niet een normale mapnaam.</target> -<source>Cannot find system function %x.</source> -<target>Kan de systeemfunctie %x niet vinden.</target> - <source>Cannot copy file %x to %y.</source> <target>Kan bestand %x niet kopiëren naar %y.</target> @@ -1714,6 +1741,9 @@ Dit garandeert een consistente status zelfs in het geval van een ernstige fout. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Configuratiebestand %x is onvolledig. De ontbrekende elementen worden ingesteld op hun standaardwaarden.</target> +<source>Internet access failed.</source> +<target>Internettoegang is mislukt.</target> + <source>Prepare installation</source> <target>Installatie voorbereiden</target> diff --git a/FreeFileSync/Build/Languages/english_uk.lng b/FreeFileSync/Build/Languages/english_uk.lng index 4f5a67f4..9dbad0a8 100644 --- a/FreeFileSync/Build/Languages/english_uk.lng +++ b/FreeFileSync/Build/Languages/english_uk.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generating file list...</target> +<source>Fail-safe file copy</source> +<target>Fail-safe file copy</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copy locked files</target> + +<source>Copy file access permissions</source> +<target>Copy file access permissions</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Starting comparison</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Error Code %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Failed to connect to SFTP server %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Cannot access the Volume Shadow Copy Service.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Please use FreeFileSync 64-bit version to create shadow copies on this system.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Cannot determine volume name for %x.</target> @@ -581,6 +614,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Updating attributes of %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Cannot write file attributes of %x.</target> + <source>%x and %y have different content.</source> <target>%x and %y have different content.</target> @@ -878,6 +914,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Folder pair:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Use local settings:</target> @@ -938,6 +977,9 @@ The command is triggered if: <source>C&lear</source> <target>C&lear</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detect synchronisation directions with the help of database files</target> + <source>Detect moved files</source> <target>Detect moved files</target> @@ -952,24 +994,21 @@ The command is triggered if: - Detection not available for first sync </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detect synchronisation directions with the help of database files</target> - <source>Delete files:</source> <target>Delete files:</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Delete or overwrite files permanently</target> - <source>&Recycle bin</source> <target>&Recycle bin</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Back up deleted and overwritten files in the recycle bin</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Delete or overwrite files permanently</target> + <source>&Versioning</source> <target>&Versioning</target> @@ -982,15 +1021,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Handle errors:</target> -<source>Hide all error and warning messages</source> -<target>Hide all error and warning messages</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Show pop-up on errors or warnings</target> +<source>Hide all error and warning messages</source> +<target>Hide all error and warning messages</target> + <source>On completion:</source> <target>On completion:</target> @@ -1096,9 +1135,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>The following settings are used for all synchronisation jobs.</target> -<source>Fail-safe file copy</source> -<target>Fail-safe file copy</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(recommended)</target> -<source>Copy locked files</source> -<target>Copy locked files</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copy shared or locked files using the Volume Shadow Copy Service.</target> <source>(requires administrator rights)</source> <target>(requires administrator rights)</target> -<source>Copy file access permissions</source> -<target>Copy file access permissions</target> - <source>Transfer file and folder permissions.</source> <target>Transfer file and folder permissions.</target> @@ -1600,9 +1630,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Percentage</target> -<source>Internet access failed.</source> -<target>Internet access failed.</target> - <source>Check for Program Updates</source> <target>Check for Program Updates</target> @@ -1612,18 +1639,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync is up to date.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Unable to connect to www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Check</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Cannot find system function %x.</target> + <source>Unable to register to receive system messages.</source> <target>Unable to register to receive system messages.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Unable to register device notifications for %x.</target> @@ -1633,9 +1666,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>The file is locked by another process:</target> -<source>Cannot write file attributes of %x.</source> -<target>Cannot write file attributes of %x.</target> - <source>Cannot read security context of %x.</source> <target>Cannot read security context of %x.</target> @@ -1651,9 +1681,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x is not a regular directory name.</target> -<source>Cannot find system function %x.</source> -<target>Cannot find system function %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Cannot copy file %x to %y.</target> @@ -1714,6 +1741,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Configuration file %x is incomplete. The missing elements will be set to their default values.</target> +<source>Internet access failed.</source> +<target>Internet access failed.</target> + <source>Prepare installation</source> <target>Prepare installation</target> diff --git a/FreeFileSync/Build/Languages/finnish.lng b/FreeFileSync/Build/Languages/finnish.lng index b78a0b4d..077415b1 100644 --- a/FreeFileSync/Build/Languages/finnish.lng +++ b/FreeFileSync/Build/Languages/finnish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Luodaan tiedostoluettelo...</target> +<source>Fail-safe file copy</source> +<target>Varmennettu tiedostokopiointi</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopioi lukitut tiedostot</target> + +<source>Copy file access permissions</source> +<target>Kopioi tiedoston käyttöoikeudet</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Vertailu alkaa</target> @@ -291,8 +324,8 @@ Todellinen: %y tavua <source>Error Code %x:</source> <target>Virhekoodi %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>SFTP palvelimeen %x ei saada yhteyttä.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Todellinen: %y tavua <source>Cannot access the Volume Shadow Copy Service.</source> <target>Volume Shadow Copy palvelu ei vastaa.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Tilannevedoksia varten käytä tässä järjestelmässä FreeFileSync 64-bittistä versiota.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Levyn %x tunnistus ei onnistu.</target> @@ -581,6 +614,9 @@ Käsky suoritetaan jos: <source>Updating attributes of %x</source> <target>Päivitetään %x:n ominaisuuksia</target> +<source>Cannot write file attributes of %x.</source> +<target>Tiedoston %x ominaisuuksia ei voitu tallentaa.</target> + <source>%x and %y have different content.</source> <target>Eri sisältö %x:llä ja %y:llä.</target> @@ -878,6 +914,9 @@ Käsky suoritetaan jos: <source>Folder pair:</source> <target>Hakemistopari:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Käytä paikallisia asetuksia:</target> @@ -938,6 +977,9 @@ Käsky suoritetaan jos: <source>C&lear</source> <target>&Nollaa</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Tunnista tietokannan avulla täysmäyksen suuntaa</target> + <source>Detect moved files</source> <target>Tunnista siirretyt tiedostot</target> @@ -952,24 +994,21 @@ Käsky suoritetaan jos: - Tunnistus alkaa ensimmäisestä täsmäyksestä </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Tunnista tietokannan avulla täysmäyksen suuntaa</target> - <source>Delete files:</source> <target>Poista tiedosto:</target> -<source>&Permanent</source> -<target>&Pysyvä</target> - -<source>Delete or overwrite files permanently</source> -<target>Poista tai korvaa tiedostoja pysyvästi</target> - <source>&Recycle bin</source> <target>&Roskakori</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Tallenna poistetut/korvatut tiedostot Roskakoriin</target> +<source>&Permanent</source> +<target>&Pysyvä</target> + +<source>Delete or overwrite files permanently</source> +<target>Poista tai korvaa tiedostoja pysyvästi</target> + <source>&Versioning</source> <target>&Versiointi</target> @@ -982,15 +1021,15 @@ Käsky suoritetaan jos: <source>Handle errors:</source> <target>Hoida virheet:</target> -<source>Hide all error and warning messages</source> -<target>Piilota kaikki virhe- ja varoitusviestit</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Näytä ponnahdusikkuna virheiden tai varoituksien kohdalla</target> +<source>Hide all error and warning messages</source> +<target>Piilota kaikki virhe- ja varoitusviestit</target> + <source>On completion:</source> <target>Toimet kun valmis:</target> @@ -1096,9 +1135,6 @@ Käsky suoritetaan jos: <source>The following settings are used for all synchronization jobs.</source> <target>Näitä asetuksia käytetään kaikkiin täsmäyksiin.</target> -<source>Fail-safe file copy</source> -<target>Varmennettu tiedostokopiointi</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>(recommended)</source> <target>(suositus)</target> -<source>Copy locked files</source> -<target>Kopioi lukitut tiedostot</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Jaettujen tai lukittujen tiedostojen kopiointi käyttäen Volume Shadow Copy Service.</target> <source>(requires administrator rights)</source> <target>(edellyttää pääkäyttäjän oikeuksia)</target> -<source>Copy file access permissions</source> -<target>Kopioi tiedoston käyttöoikeudet</target> - <source>Transfer file and folder permissions.</source> <target>Siirrä tiedostojen ja hakemistojen käyttöoikeudet.</target> @@ -1600,9 +1630,6 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>Percentage</source> <target>Prosenttia</target> -<source>Internet access failed.</source> -<target>Ei pääsyä internettiin.</target> - <source>Check for Program Updates</source> <target>Etsi ohjelmaan päivitystä</target> @@ -1612,18 +1639,24 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>FreeFileSync is up to date.</source> <target>FreeFileSync on ajan tasalla.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Ei yhteyttä www.freefilesync.org:iin.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Tarkista</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Järjestelmäfunktiota %x ei löydy.</target> + <source>Unable to register to receive system messages.</source> <target>Kirjautuminen järjestelmäviestien vastaanottamiseksi ei onnistu.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x laiteviestien kirjaaminen ei onnistu.</target> @@ -1633,9 +1666,6 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>The file is locked by another process:</source> <target>Tiedosto on toisen prosessin lukitsema:</target> -<source>Cannot write file attributes of %x.</source> -<target>Tiedoston %x ominaisuuksia ei voitu tallentaa.</target> - <source>Cannot read security context of %x.</source> <target>Ei voi lukea %x:n suojauskontekstia.</target> @@ -1651,9 +1681,6 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>%x is not a regular directory name.</source> <target>%x on epämääräinen hakemisto nimi.</target> -<source>Cannot find system function %x.</source> -<target>Järjestelmäfunktiota %x ei löydy.</target> - <source>Cannot copy file %x to %y.</source> <target>Tiedostoa %x ei voida kopioida kohtaan %y.</target> @@ -1714,6 +1741,9 @@ Tällä varmistetaan eheys, vaikka vakava virhe tapahtuisi. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Kokoonpanotiedosto %x ladattu vain osittain. Puuttuvat asetetaan oletusarvoihin.</target> +<source>Internet access failed.</source> +<target>Ei pääsyä internettiin.</target> + <source>Prepare installation</source> <target>Alusta asennus</target> diff --git a/FreeFileSync/Build/Languages/french.lng b/FreeFileSync/Build/Languages/french.lng index b3fd3e5c..7a9afd2a 100644 --- a/FreeFileSync/Build/Languages/french.lng +++ b/FreeFileSync/Build/Languages/french.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Génération de la liste des fichiers...</target> +<source>Fail-safe file copy</source> +<target>Copie de fichiers sécurisé</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copier les fichiers verrouillés</target> + +<source>Copy file access permissions</source> +<target>Copie des droits d'accès aux fichiers</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Comparaison en cours</target> @@ -291,8 +324,8 @@ Trouvé : %y octets <source>Error Code %x:</source> <target>Code erreur %x :</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Impossible de se connecter au server SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Trouvé : %y octets <source>Cannot access the Volume Shadow Copy Service.</source> <target>Impossible d'accéder au service Volume Shadow Copy.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Utilisez la version FreeFileSync 64-bit pour créer des "shadow copies" sur ce système.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Impossible de déterminer le nom du volume de %x.</target> @@ -581,6 +614,9 @@ La commande est déclenchée si : <source>Updating attributes of %x</source> <target>Mise à jour des attributs de %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Impossible d'écrire les attributs de fichier de %x.</target> + <source>%x and %y have different content.</source> <target>%x et %y ont des contenus différents.</target> @@ -878,6 +914,9 @@ La commande est déclenchée si : <source>Folder pair:</source> <target>Paire de dossiers :</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Utiliser les paramètres locaux :</target> @@ -938,6 +977,9 @@ La commande est déclenchée si : <source>C&lear</source> <target>&Effacer</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Détection du sens de la synchronisation à l'aide de la base de données</target> + <source>Detect moved files</source> <target>Détection des fichiers déplacés</target> @@ -952,24 +994,21 @@ La commande est déclenchée si : - Détection impossible lors de la première synchronisation </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Détection du sens de la synchronisation à l'aide de la base de données</target> - <source>Delete files:</source> <target>Supprimer les fichiers :</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Supprimer ou écraser les fichiers définitivement</target> - <source>&Recycle bin</source> <target>&Corbeille</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Sauvegarder les fichier détruits ou écrasés dans la Corbeille</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Supprimer ou écraser les fichiers définitivement</target> + <source>&Versioning</source> <target>Gestion des &Versions</target> @@ -982,15 +1021,15 @@ La commande est déclenchée si : <source>Handle errors:</source> <target>Gestion des erreurs :</target> -<source>Hide all error and warning messages</source> -<target>Masquer tous les messages d'erreurs et les avertissements</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Montrer les messages d'avertissement ou d'erreur</target> +<source>Hide all error and warning messages</source> +<target>Masquer tous les messages d'erreurs et les avertissements</target> + <source>On completion:</source> <target>A la fin :</target> @@ -1096,9 +1135,6 @@ La commande est déclenchée si : <source>The following settings are used for all synchronization jobs.</source> <target>Les paramètres suivants sont utilisés lors de toutes les synchronisations.</target> -<source>Fail-safe file copy</source> -<target>Copie de fichiers sécurisé</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>(recommended)</source> <target>(recommandé)</target> -<source>Copy locked files</source> -<target>Copier les fichiers verrouillés</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copie les fichiers partagés ou verrouillés à l'aide du Service Volume Shadow Copy.</target> <source>(requires administrator rights)</source> <target>(nécessite les droits administrateur)</target> -<source>Copy file access permissions</source> -<target>Copie des droits d'accès aux fichiers</target> - <source>Transfer file and folder permissions.</source> <target>Transfert des autorisations des fichiers et dossiers.</target> @@ -1600,9 +1630,6 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>Percentage</source> <target>Pourcentage</target> -<source>Internet access failed.</source> -<target>Echec de l'accès Internet.</target> - <source>Check for Program Updates</source> <target>Recherche des Mises à Jour</target> @@ -1612,18 +1639,24 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>FreeFileSync is up to date.</source> <target>FreeFileSync est à jour.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Impossible de se connecter à www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Contrôle</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Impossible de trouver la fonction système %x.</target> + <source>Unable to register to receive system messages.</source> <target>Impossible d'enregistrer la réception des messages système.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Impossible d'enregistrer les notifications de périphérique pour %x.</target> @@ -1633,9 +1666,6 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>The file is locked by another process:</source> <target>Le fichier est verrouillé par un autre process :</target> -<source>Cannot write file attributes of %x.</source> -<target>Impossible d'écrire les attributs de fichier de %x.</target> - <source>Cannot read security context of %x.</source> <target>Impossible de lire les paramètres de sécurité de %x.</target> @@ -1651,9 +1681,6 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>%x is not a regular directory name.</source> <target>%x n'est pas un nom de répertoire valise.</target> -<source>Cannot find system function %x.</source> -<target>Impossible de trouver la fonction système %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Impossible de copier le fichier %x vers %y.</target> @@ -1714,6 +1741,9 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Le fichier de configuration %x est incomplet. Les éléments manquants sont fixés à leur valeur par défaut.</target> +<source>Internet access failed.</source> +<target>Echec de l'accès Internet.</target> + <source>Prepare installation</source> <target>Préparation de l'installation</target> @@ -1736,7 +1766,7 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <target>Enregistrer la configuration dans "%APPDATA%\FreeFileSync"</target> <source>Register FreeFileSync file extensions</source> -<target>Enregistrer les extensions de fichier</target> +<target></target> <source>Create Explorer context menu entries</source> <target>Créer les entrées du menu contextuel de l'Explorateur</target> @@ -1763,10 +1793,10 @@ Cela garantit la cohérence du système de fichiers en cas d'erreur grave. <target>le menu Démarrer</target> <source>Registering FreeFileSync file extensions</source> -<target>Enregistrement des extensions de fichier</target> +<target></target> <source>Unregistering FreeFileSync file extensions</source> -<target>Suppression des extensions de fichier</target> +<target></target> <source>FreeFileSync Configuration</source> <target>Configuration de FreeFileSync</target> diff --git a/FreeFileSync/Build/Languages/german.lng b/FreeFileSync/Build/Languages/german.lng index 5c5ec50c..b8857988 100644 --- a/FreeFileSync/Build/Languages/german.lng +++ b/FreeFileSync/Build/Languages/german.lng @@ -29,7 +29,7 @@ <target>Erstelle Datei %x</target> <source>Creating symbolic link %x</source> -<target>Erstelle symbolischen Verknüpfung %x</target> +<target>Erstelle symbolische Verknüpfung %x</target> <source>Moving file %x to the recycle bin</source> <target>Verschiebe Datei %x in den Papierkorb</target> @@ -438,8 +438,8 @@ Tatsächlich: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Auf den Volumenschattenkopiedienst kann nicht zugegriffen werden.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Bitte benutzen Sie die FreeFileSync 64-Bit Version, um Schattenkopien auf diesem System zu erstellen.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target>Bitte starten Sie die FreeFileSync 64-Bit Version, um Schattenkopien auf diesem System zu erstellen.</target> <source>Cannot determine volume name for %x.</source> <target>Der Laufwerksname für %x kann nicht bestimmt werden.</target> @@ -606,7 +606,7 @@ Die Befehlszeile wird ausgelöst, wenn: <target>Aktualisiere Datei %x</target> <source>Updating symbolic link %x</source> -<target>Aktualisiere symbolischen Verknüpfung %x</target> +<target>Aktualisiere symbolische Verknüpfung %x</target> <source>Verifying file %x</source> <target>Verifiziere Datei %x</target> @@ -731,14 +731,11 @@ Die Befehlszeile wird ausgelöst, wenn: <source>Full path</source> <target>Absoluter Pfad</target> -<source>Name</source> -<target>Name</target> +<source>Relative path</source> +<target>Relativer Pfad</target> -<source>Relative folder</source> -<target>Relativer Ordner</target> - -<source>Base folder</source> -<target>Basisordner</target> +<source>Item name</source> +<target>Elementname</target> <source>Size</source> <target>Größe</target> @@ -1084,6 +1081,12 @@ Die Befehlszeile wird ausgelöst, wenn: <source>Time elapsed:</source> <target>Vergangene Zeit:</target> +<source>Bytes:</source> +<target>Bytes:</target> + +<source>Items:</source> +<target>Elemente:</target> + <source>Synchronizing...</source> <target>Synchronisiere...</target> @@ -1624,15 +1627,15 @@ Dadurch wird ein konsistenter Datenstand auch bei schweren Fehlern garantiert. <source>Files</source> <target>Dateien</target> +<source>Name</source> +<target>Name</target> + <source>Items</source> <target>Elemente</target> <source>Percentage</source> <target>Prozent</target> -<source>Internet access failed.</source> -<target>Der Internetzugriff ist fehlgeschlagen.</target> - <source>Check for Program Updates</source> <target>Suche nach neuer Programmversion</target> @@ -1744,6 +1747,9 @@ Dadurch wird ein konsistenter Datenstand auch bei schweren Fehlern garantiert. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Die Konfigurationsdatei %x ist unvollständig. Die fehlenden Elemente werden auf ihre Standardwerte gesetzt.</target> +<source>Internet access failed.</source> +<target>Der Internetzugriff ist fehlgeschlagen.</target> + <source>Prepare installation</source> <target>Installation vorbereiten</target> diff --git a/FreeFileSync/Build/Languages/greek.lng b/FreeFileSync/Build/Languages/greek.lng index a7a14841..2e2c8d21 100644 --- a/FreeFileSync/Build/Languages/greek.lng +++ b/FreeFileSync/Build/Languages/greek.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Δημιουργία καταλόγου αρχείων...</target> +<source>Fail-safe file copy</source> +<target>Ασφαλής αντιγραφή αρχείων</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Αντιγραφή κλειδωμένων αρχείων</target> + +<source>Copy file access permissions</source> +<target>Αντιγραφή των αδειών προσπέλασης των αρχείων</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Έναρξη της σύγκρισης</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Κωδικός Σφάλματος %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Αποτυχία σύνδεσης με τον διακομιστή SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Δεν είναι δυνατή η πρόσβαση στην Υπηρεσία Σκιώδους Αντίγραφου Τόμου.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Παρακαλούμε χρησιμοποιήστε την 64-μπιτη έκδοση του FreeFileSync για να δημιουργήσετε σκιώδη αντίγραφα σε αυτόν τον υπολογιστή.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Δεν μπορεί να προσδιοριστεί το όνομα τόμου για το %x.</target> @@ -581,6 +614,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Ενημέρωση των χαρακτηριστικών αρχείου του %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Δεν μπορεί να γίνει εγγραφή των χαρακτηριστικών αρχείου του %x.</target> + <source>%x and %y have different content.</source> <target>Τα %x και %y έχουν διαφορετικό περιεχόμενο.</target> @@ -878,6 +914,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Ζεύγος υποκαταλόγων:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Χρήση τοπικών ρυθμίσεων:</target> @@ -938,6 +977,9 @@ The command is triggered if: <source>C&lear</source> <target>&Καθαρισμός</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Ανίχνευση της κατεύθυνσης συγχρονισμού με τη βοήθεια βάσεων δεδομένων</target> + <source>Detect moved files</source> <target>Ανίχνευση των αρχείων που μεταφέρθηκαν</target> @@ -952,24 +994,21 @@ The command is triggered if: - Η ανίχνευση δεν είναι διαθέσιμη κατά τον πρώτο συγχρονισμό </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Ανίχνευση της κατεύθυνσης συγχρονισμού με τη βοήθεια βάσεων δεδομένων</target> - <source>Delete files:</source> <target>Διαγραφή αρχείων:</target> -<source>&Permanent</source> -<target>&Μόνιμη</target> - -<source>Delete or overwrite files permanently</source> -<target>Μόνιμη διαγραφή ή αντικατάσταση των αρχείων</target> - <source>&Recycle bin</source> <target>&Κάδος ανακύκλωσης</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Μεταφορά όλων των διαγραμμένων και αντικατεστημένων αρχείων στον κάδο ανακύκλωσης.</target> +<source>&Permanent</source> +<target>&Μόνιμη</target> + +<source>Delete or overwrite files permanently</source> +<target>Μόνιμη διαγραφή ή αντικατάσταση των αρχείων</target> + <source>&Versioning</source> <target>&Διατήρηση παλιών εκδόσεων</target> @@ -982,15 +1021,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Χειρισμός σφαλμάτων:</target> -<source>Hide all error and warning messages</source> -<target>Απόκρυψη όλων των σφαλμάτων και προειδοποιήσεων</target> - <source>&Pop-up</source> <target>&Αναδυόμενο</target> <source>Show pop-up on errors or warnings</source> <target>Εμφάνιση αναδυόμενου παράθυρου σε σφάλματα ή προειδοποιήσεις</target> +<source>Hide all error and warning messages</source> +<target>Απόκρυψη όλων των σφαλμάτων και προειδοποιήσεων</target> + <source>On completion:</source> <target>Μετά την ολοκλήρωση:</target> @@ -1096,9 +1135,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>Οι ακόλουθες ρυθμίσεις χρησιμοποιούνται για όλες τις εργασίες συγχρονισμού.</target> -<source>Fail-safe file copy</source> -<target>Ασφαλής αντιγραφή αρχείων</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(προτεινόμενο)</target> -<source>Copy locked files</source> -<target>Αντιγραφή κλειδωμένων αρχείων</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Αντιγραφή των κοινών ή κλειδωμένων αρχείων με τη χρήση της Υπηρεσίας Σκιωδών Αντιγράφων Τόμου.</target> <source>(requires administrator rights)</source> <target>(απαιτεί δικαιώματα διαχειριστή)</target> -<source>Copy file access permissions</source> -<target>Αντιγραφή των αδειών προσπέλασης των αρχείων</target> - <source>Transfer file and folder permissions.</source> <target>Μεταφορά των αδειών προσπέλασης αρχείων και υποκαταλόγων.</target> @@ -1600,9 +1630,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Ποσοστό</target> -<source>Internet access failed.</source> -<target>Απέτυχε η πρόσβαση στο Internet.</target> - <source>Check for Program Updates</source> <target>Έλεγχος για ενημερώσεις του προγράμματος</target> @@ -1612,18 +1639,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>Το FreeFileSync είναι ενημερωμένο.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Αδυναμία επικοινωνίας με το www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>Έλε&γχος</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Δεν ανευρίσκεται η λειτουργία συστήματος %x.</target> + <source>Unable to register to receive system messages.</source> <target>Δεν μπορεί να καταχωρηθεί η λήψη μηνυμάτων συστήματος.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Δεν μπορούν να καταχωρηθεί η ειδοποίηση για τη συσκευή %x.</target> @@ -1633,9 +1666,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Το αρχείο είναι κλειδωμένο από μια άλλη διαδικασία:</target> -<source>Cannot write file attributes of %x.</source> -<target>Δεν μπορεί να γίνει εγγραφή των χαρακτηριστικών αρχείου του %x.</target> - <source>Cannot read security context of %x.</source> <target>Δεν μπορεί να αναγνωσθεί το περιβάλλον ασφαλείας του %x.</target> @@ -1651,9 +1681,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>Το %x δεν είναι ένα κανονικό όνομα υποκαταλόγου.</target> -<source>Cannot find system function %x.</source> -<target>Δεν ανευρίσκεται η λειτουργία συστήματος %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Δεν μπορεί να αντιγραφεί το αρχείο %x στο %y.</target> @@ -1714,6 +1741,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Το αρχείο διάταξης %x είναι ατελές. Τα στοιχεία που λείπουν θα αντικατασταθούν με τις προεπιλεγμένες τιμές τους.</target> +<source>Internet access failed.</source> +<target>Απέτυχε η πρόσβαση στο Internet.</target> + <source>Prepare installation</source> <target>Προετοιμασία εγκατάστασης</target> diff --git a/FreeFileSync/Build/Languages/hebrew.lng b/FreeFileSync/Build/Languages/hebrew.lng index 9c3e3ca7..5a0d9b59 100644 --- a/FreeFileSync/Build/Languages/hebrew.lng +++ b/FreeFileSync/Build/Languages/hebrew.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>מייצר רשימת קבצים...</target> +<source>Fail-safe file copy</source> +<target>כשלון באבטחת העתקת קובץ</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>העתק קבצים נעולים</target> + +<source>Copy file access permissions</source> +<target>העתק הרשאות גישה של הקובץ</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>מתחיל השוואה</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>קוד שגיאה %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>התחברות נכשלה אל שרת SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>לא ניתן לגשת אל שרות Volume Shadow Copy.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>אנא השתמש בגירסת 64-bit של FreeFileSync על מנת ליצר shadow copies במערכת הפעלה זו.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>לא יכול לקבוע שם אמצעי אחסון %x.</target> @@ -581,6 +614,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>מעדכן תכונות של %x</target> +<source>Cannot write file attributes of %x.</source> +<target>לא יכול לכתוב תכונות קובץ של %x.</target> + <source>%x and %y have different content.</source> <target>%x ו- %y הם בעלי צוכן שונה.</target> @@ -654,7 +690,7 @@ The command is triggered if: <target>מנקה קבצי יומן ישנים...</target> <source>You can switch to FreeFileSync's main window to resolve this issue.</source> -<target>ניתן לעבור לחלון הראשי של FreeFileSybc כדי לפתור את הסוגיה הזו.</target> +<target>ניתן לעבור לחלון הראשי של FreeFileSync כדי לפתור את הסוגיה הזו.</target> <source>&Don't show this warning again</source> <target>&לא להראות אזהרה זו שוב</target> @@ -666,7 +702,7 @@ The command is triggered if: <target>&החלפה</target> <source>Switching to FreeFileSync's main window</source> -<target>מעבר אל החלון הראשי של FreeFileSybc</target> +<target>מעבר אל החלון הראשי של FreeFileSync</target> <source> <pluralform>Automatic retry in 1 second...</pluralform> @@ -878,6 +914,9 @@ The command is triggered if: <source>Folder pair:</source> <target>זוג תיקיות:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>השתמש בהגדרות מקומיות:</target> @@ -938,6 +977,9 @@ The command is triggered if: <source>C&lear</source> <target>א&פס</target> +<source>Detect synchronization directions with the help of database files</source> +<target>גלה כיווני סינכרון באמצעות קבצי בסיס נתונים</target> + <source>Detect moved files</source> <target>גלה קבצים מועברים</target> @@ -952,24 +994,21 @@ The command is triggered if: - גילוי לא זמין עבור סינכרון ראשוני </target> -<source>Detect synchronization directions with the help of database files</source> -<target>גלה כיווני סינכרון באמצעות קבצי בסיס נתונים</target> - <source>Delete files:</source> <target>מחק קבצים:</target> -<source>&Permanent</source> -<target>&קבוע</target> - -<source>Delete or overwrite files permanently</source> -<target>מחק או דרוס קבצים לצמיתות</target> - <source>&Recycle bin</source> <target>&סל מחזור</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>גבה קבצים שנמחקו או שנדרסו בסל המיחזור</target> +<source>&Permanent</source> +<target>&קבוע</target> + +<source>Delete or overwrite files permanently</source> +<target>מחק או דרוס קבצים לצמיתות</target> + <source>&Versioning</source> <target>&גרסאות</target> @@ -982,15 +1021,15 @@ The command is triggered if: <source>Handle errors:</source> <target>טפל בשגיאות:</target> -<source>Hide all error and warning messages</source> -<target>הסתר את כל הודעות ההזהרה והשגיאה</target> - <source>&Pop-up</source> <target>&מוקפץ</target> <source>Show pop-up on errors or warnings</source> <target>הראה חלונות מוקפצים עבור שגיאות או אזהרות</target> +<source>Hide all error and warning messages</source> +<target>הסתר את כל הודעות ההזהרה והשגיאה</target> + <source>On completion:</source> <target>עם הסיום:</target> @@ -1096,9 +1135,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>ההגדרות הבאות משמשות לכל משימות הסנכרון.</target> -<source>Fail-safe file copy</source> -<target>כשלון באבטחת העתקת קובץ</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(מומלץ)</target> -<source>Copy locked files</source> -<target>העתק קבצים נעולים</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>העתק קבצים בשיתוף או בנעילה באמצעות שרות Volume Shadow Copy.</target> <source>(requires administrator rights)</source> <target>(נדרשות זכויות מנהל)</target> -<source>Copy file access permissions</source> -<target>העתק הרשאות גישה של הקובץ</target> - <source>Transfer file and folder permissions.</source> <target>הרשאות העברת קובץ ותיקייה.</target> @@ -1600,9 +1630,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>אחוז</target> -<source>Internet access failed.</source> -<target>גישה לאינטרנט נכשלה.</target> - <source>Check for Program Updates</source> <target>בדוק קיום עדכוני תוכנה</target> @@ -1612,18 +1639,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync מעודכן לגירסה האחרונה.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>אין תקשורת אל www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&בדוק</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>לא יכול למצוא פונקצית מערכת %x.</target> + <source>Unable to register to receive system messages.</source> <target>לא ניתן להרשם לקבלת הודעות מערכת.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>לא יכול לרשום הודעות עבור התקן %x.</target> @@ -1633,9 +1666,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>הקובץ נעול ע"י תהליך:</target> -<source>Cannot write file attributes of %x.</source> -<target>לא יכול לכתוב תכונות קובץ של %x.</target> - <source>Cannot read security context of %x.</source> <target>לא יכול לקרוא הקשר בטיחות של %x.</target> @@ -1651,9 +1681,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x אינו שם של מחיצה רגילה.</target> -<source>Cannot find system function %x.</source> -<target>לא יכול למצוא פונקצית מערכת %x.</target> - <source>Cannot copy file %x to %y.</source> <target>לא יכול להעתיק קובץ %x אל %y.</target> @@ -1714,6 +1741,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>קובץ תצורה %x אינו שלם. הרכיבים החסרים יוגדרו עם ערכי ברירת המחדל.</target> +<source>Internet access failed.</source> +<target>גישה לאינטרנט נכשלה.</target> + <source>Prepare installation</source> <target>מכין התקנה</target> @@ -1736,7 +1766,7 @@ This guarantees a consistent state even in case of a serious error. <target>שמור נתונים ל "%APPDATA%\FreeFileSync"</target> <source>Register FreeFileSync file extensions</source> -<target>רושם סיומות תוכנת סנכרון קבצים חופשית</target> +<target></target> <source>Create Explorer context menu entries</source> <target>צור תפריט הקשר בסייר הקבצים</target> @@ -1763,10 +1793,10 @@ This guarantees a consistent state even in case of a serious error. <target>תפריט התחל</target> <source>Registering FreeFileSync file extensions</source> -<target>רושם קובצי תוכנת סנכרון קבצים חופשית</target> +<target></target> <source>Unregistering FreeFileSync file extensions</source> -<target>מבטל הרשמת קובצי תוכנת סנכרון קבצים חופשית</target> +<target></target> <source>FreeFileSync Configuration</source> <target>תצורת FreeFileSync</target> diff --git a/FreeFileSync/Build/Languages/hindi.lng b/FreeFileSync/Build/Languages/hindi.lng index b546be2c..bdf312f7 100644 --- a/FreeFileSync/Build/Languages/hindi.lng +++ b/FreeFileSync/Build/Languages/hindi.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>फ़ाइल सूची बनाई जा रही है...</target> +<source>Fail-safe file copy</source> +<target>सुरक्षित फ़ाइल प्रतिलिपि</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>अवरोधित फ़ाइल्स प्रतिलिपित करें</target> + +<source>Copy file access permissions</source> +<target>फ़ाइल अभिगम अनुमतियाँ प्रतिलिपित करें</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>तुलना शुरू हो रही है</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>त्रुटि कोड %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>SFTP सर्वर %x को कनेक्ट करने में विफल।</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>वॉल्यूम शॅडो कॉपी सर्व्हिस अभिगम करने में असमर्थ।</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>इस सिस्टम पर शॅडो कॉपियां बनाने के लिए कृपया FreeFileSync 64-बिट संस्करण उपयोग करें।</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>%x के लिए वॉल्यूम नाम निर्धारण नहीं किया जा सकता।</target> @@ -581,6 +614,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>%x के गुण अद्यतित हो रहे हैं</target> +<source>Cannot write file attributes of %x.</source> +<target>%x के फ़ाइल गुण लिख नहीं सकते।</target> + <source>%x and %y have different content.</source> <target>%x और %y की सामग्री भिन्न है।</target> @@ -878,6 +914,9 @@ The command is triggered if: <source>Folder pair:</source> <target>फ़ोल्डर जोडा:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>स्थानीय सेटिंग्स का उपयोग करें:</target> @@ -938,6 +977,9 @@ The command is triggered if: <source>C&lear</source> <target>हटाएं (&l)</target> +<source>Detect synchronization directions with the help of database files</source> +<target>डेटाबेस फ़ाइल्स की मदद से सिंक्रनाइज़ेशन दिशाओं का पता लगाएं</target> + <source>Detect moved files</source> <target>ले जाई गई फ़ाइल्स का पता लगाएं</target> @@ -952,24 +994,21 @@ The command is triggered if: - पहले सिंक्रनाइज़ेशन के लिए खोज उपलब्ध नहीं </target> -<source>Detect synchronization directions with the help of database files</source> -<target>डेटाबेस फ़ाइल्स की मदद से सिंक्रनाइज़ेशन दिशाओं का पता लगाएं</target> - <source>Delete files:</source> <target>फ़ाइल्स हटाएं:</target> -<source>&Permanent</source> -<target>स्थायी (&P)</target> - -<source>Delete or overwrite files permanently</source> -<target>फ़ाइल्स स्थायी रूप से हटाएं या अधिलेखित करें</target> - <source>&Recycle bin</source> <target>रीसायकल बिन (&R)</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>रीसायकल बिन में हटाई या अधिलेखित फ़ाइल्स बैक अप करें</target> +<source>&Permanent</source> +<target>स्थायी (&P)</target> + +<source>Delete or overwrite files permanently</source> +<target>फ़ाइल्स स्थायी रूप से हटाएं या अधिलेखित करें</target> + <source>&Versioning</source> <target>संस्करण (&V)</target> @@ -982,15 +1021,15 @@ The command is triggered if: <source>Handle errors:</source> <target>त्रुटियां प्रहस्तन करें:</target> -<source>Hide all error and warning messages</source> -<target>सभी त्रुटि और चेतावनी संदेशों को छुपाएं</target> - <source>&Pop-up</source> <target>पॉप-अप (&P)</target> <source>Show pop-up on errors or warnings</source> <target>त्रुटियों या चेतावनियों पर पॉप-अप दिखाएं</target> +<source>Hide all error and warning messages</source> +<target>सभी त्रुटि और चेतावनी संदेशों को छुपाएं</target> + <source>On completion:</source> <target>समापन उपरांत:</target> @@ -1096,9 +1135,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>सभी सिंक्रनाइज़ेशन कार्यों के लिए निम्न सेटिंग्स का उपयोग किया जाता है।</target> -<source>Fail-safe file copy</source> -<target>सुरक्षित फ़ाइल प्रतिलिपि</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(अनुशंसित)</target> -<source>Copy locked files</source> -<target>अवरोधित फ़ाइल्स प्रतिलिपित करें</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>साझा या अवरोधित फ़ाइल्स वॉल्यूम शॅडो कॉपी सर्व्हिस के उपयोग से प्रतिलिपित करें।</target> <source>(requires administrator rights)</source> <target>(प्रबंधक अधिकार आवश्यक)</target> -<source>Copy file access permissions</source> -<target>फ़ाइल अभिगम अनुमतियाँ प्रतिलिपित करें</target> - <source>Transfer file and folder permissions.</source> <target>फ़ाइल और फ़ोल्डर अनुमतियाँ स्थानांतर करें।</target> @@ -1600,9 +1630,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>प्रतिशत</target> -<source>Internet access failed.</source> -<target>इंटरनेट पहुँच विफल।</target> - <source>Check for Program Updates</source> <target>प्रोग्राम अद्यतनों के लिए जाँच करें</target> @@ -1612,18 +1639,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync नवीनतम है।</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>www.freefilesync.org से जुड़ने में असमर्थ।</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>जाँच करें (&C)</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>सिस्टम फ़ंकशन %x ढूंढ नहीं सकते।</target> + <source>Unable to register to receive system messages.</source> <target>सिस्टम संदेशों को प्राप्त करने के लिए पंजीकृत करने में असमर्थ।</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x के लिए डिवाइस सूचनाएँ पंजिकृत करने में असमर्थ।</target> @@ -1633,9 +1666,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>फ़ाइल किसी अन्य प्रक्रिया द्वारा अवरोधित है:</target> -<source>Cannot write file attributes of %x.</source> -<target>%x के फ़ाइल गुण लिख नहीं सकते।</target> - <source>Cannot read security context of %x.</source> <target>%x का सुरक्षा संदर्भ पढ़ नहीं सकते।</target> @@ -1651,9 +1681,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x कोई नियमित निर्देशिका नाम नहीं है।</target> -<source>Cannot find system function %x.</source> -<target>सिस्टम फ़ंकशन %x ढूंढ नहीं सकते।</target> - <source>Cannot copy file %x to %y.</source> <target>फ़ाइल %x से %y प्रतिलिपित नहीं कर सकते।</target> @@ -1714,6 +1741,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>कॉन्फ़िगरेशन फ़ाइल %x अधूरी है। लापता तत्व उनके डिफ़ॉल्ट मानों से सेट होंगे।</target> +<source>Internet access failed.</source> +<target>इंटरनेट पहुँच विफल।</target> + <source>Prepare installation</source> <target>स्थापना तैयारी</target> diff --git a/FreeFileSync/Build/Languages/hungarian.lng b/FreeFileSync/Build/Languages/hungarian.lng index 59a5f5b7..36a2a21b 100644 --- a/FreeFileSync/Build/Languages/hungarian.lng +++ b/FreeFileSync/Build/Languages/hungarian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Fájllista generálása...</target> +<source>Fail-safe file copy</source> +<target>Hibamentes fájlmásolás</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Másolja a zárolt fájlokat</target> + +<source>Copy file access permissions</source> +<target>Másolja a fájl hozzáférési jogosultságokat</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Kezdi az összehasonlítást</target> @@ -291,8 +324,8 @@ Jelenlegi: %y bájt <source>Error Code %x:</source> <target>Hibakód %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Nem sikerült csatlakozni a(z) %x SFTP szerverhez.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Jelenlegi: %y bájt <source>Cannot access the Volume Shadow Copy Service.</source> <target>Nem elérhető a Kötet Árnyék-másolat szolgáltatás.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Kérjük, használd a FreeFileSync 64 bites verzióját az árnyékmásolatok készítéséhez ezen a rendszeren.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>%x számára nem lehet a kötet-nevet meghatározni.</target> @@ -581,6 +614,9 @@ A parancs végrehajtódik, ha: <source>Updating attributes of %x</source> <target>%x attribútumainak frissítése</target> +<source>Cannot write file attributes of %x.</source> +<target>Nem sikerült %x fájl attribútumainak írása.</target> + <source>%x and %y have different content.</source> <target>%x és %y tartalma különböző.</target> @@ -878,6 +914,9 @@ A parancs végrehajtódik, ha: <source>Folder pair:</source> <target>Könyvtár-pár:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Használja a helyi beállításokat:</target> @@ -938,6 +977,9 @@ A parancs végrehajtódik, ha: <source>C&lear</source> <target>&Töröl</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Érzékelje a szinkronizálási irányokat az adatbázis-fájlok segítségével</target> + <source>Detect moved files</source> <target>Érzékelje a mozgatott fájlokat</target> @@ -952,24 +994,21 @@ A parancs végrehajtódik, ha: - Az érzékelés az első szinkronizálásnál nem biztosított </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Érzékelje a szinkronizálási irányokat az adatbázis-fájlok segítségével</target> - <source>Delete files:</source> <target>Törölje a következő fájlokat:</target> -<source>&Permanent</source> -<target>&Állandó</target> - -<source>Delete or overwrite files permanently</source> -<target>Törölje vagy írja felül véglegesen a fájlokat</target> - <source>&Recycle bin</source> <target>Lomtá&r</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Mentse a törölt és felülírt fájlokat a Lomtárba</target> +<source>&Permanent</source> +<target>&Állandó</target> + +<source>Delete or overwrite files permanently</source> +<target>Törölje vagy írja felül véglegesen a fájlokat</target> + <source>&Versioning</source> <target>&Verziókezelés</target> @@ -982,15 +1021,15 @@ A parancs végrehajtódik, ha: <source>Handle errors:</source> <target>A következő hibák kezelése:</target> -<source>Hide all error and warning messages</source> -<target>Rejtse el az összes hibaüzenetet és figyelmeztetést</target> - <source>&Pop-up</source> <target>&Párbeszédablak</target> <source>Show pop-up on errors or warnings</source> <target>Hiba vagy figyelmeztetés esetén mutasson párbeszédablakot</target> +<source>Hide all error and warning messages</source> +<target>Rejtse el az összes hibaüzenetet és figyelmeztetést</target> + <source>On completion:</source> <target>Végrehajtás alatt:</target> @@ -1096,9 +1135,6 @@ A parancs végrehajtódik, ha: <source>The following settings are used for all synchronization jobs.</source> <target>A következő beállítások minden szinkronizálási feladatnál használja.</target> -<source>Fail-safe file copy</source> -<target>Hibamentes fájlmásolás</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>(recommended)</source> <target>(ajánlott)</target> -<source>Copy locked files</source> -<target>Másolja a zárolt fájlokat</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Megosztott vagy zárolt fájlok másolása a Kötet-árnyékmásolat szolgáltatás használatával.</target> <source>(requires administrator rights)</source> <target>(rendszergazdai jogosultság szükséges)</target> -<source>Copy file access permissions</source> -<target>Másolja a fájl hozzáférési jogosultságokat</target> - <source>Transfer file and folder permissions.</source> <target>Vigye át a fájl és könyvtár jogosultságokat.</target> @@ -1600,9 +1630,6 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>Percentage</source> <target>Százalék</target> -<source>Internet access failed.</source> -<target>Nem sikerült az internet hozzáférés.</target> - <source>Check for Program Updates</source> <target>Program-frissítések ellenőrzése</target> @@ -1612,18 +1639,24 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>FreeFileSync is up to date.</source> <target>A FreeFileSync naprakész.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nem lehet csatlakozni a www.freefilesync.org-hoz.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Ellenőriz</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>%x rendszerfunkció nem elérhető.</target> + <source>Unable to register to receive system messages.</source> <target>Nem tud regisztrálni hogy megkapja a rendszerüzeneteket.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x-hez nem lehet eszköz-értesítéseket regisztrálni.</target> @@ -1633,9 +1666,6 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>The file is locked by another process:</source> <target>A fájlt egy másik processz zárolta:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nem sikerült %x fájl attribútumainak írása.</target> - <source>Cannot read security context of %x.</source> <target>Nem sikerült a biztonsági környezet olvasása a következőnél: %x.</target> @@ -1651,9 +1681,6 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>%x is not a regular directory name.</source> <target>%x nem megfelelő könyvtárnév.</target> -<source>Cannot find system function %x.</source> -<target>%x rendszerfunkció nem elérhető.</target> - <source>Cannot copy file %x to %y.</source> <target>%x fájl másolása a(z) %y fájlba nem sikerült.</target> @@ -1714,6 +1741,9 @@ Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>A %x konfigurációs fájl nem teljes. A hiányzó elemeket az alapértelmezés szerinti értékekkel helyettesíti.</target> +<source>Internet access failed.</source> +<target>Nem sikerült az internet hozzáférés.</target> + <source>Prepare installation</source> <target>Telepítés előkészítése</target> diff --git a/FreeFileSync/Build/Languages/italian.lng b/FreeFileSync/Build/Languages/italian.lng index bea508f7..7a306674 100644 --- a/FreeFileSync/Build/Languages/italian.lng +++ b/FreeFileSync/Build/Languages/italian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generazione elenco file...</target> +<source>Fail-safe file copy</source> +<target>Copia file a prova di errore</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copia file bloccati</target> + +<source>Copy file access permissions</source> +<target>Copia permessi di accesso file</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Inizio confronto</target> @@ -291,8 +324,8 @@ Attuale: %y byte <source>Error Code %x:</source> <target>Codice Errore %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Impossibile connettersi al server SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Attuale: %y byte <source>Cannot access the Volume Shadow Copy Service.</source> <target>Impossibile accedere al Volume Shadow Copy Service.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>E' necessario utilizzare FreeFileSync versione 64-bit per creare copie shadow su questo sistema.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Impossibile determinare nome del volume per %x.</target> @@ -581,6 +614,9 @@ Il comando è attivato se: <source>Updating attributes of %x</source> <target>Aggiornamento attributi di %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Impossibile scrivere gli attributi del file %x.</target> + <source>%x and %y have different content.</source> <target>%x e %y hanno un contenuto diverso.</target> @@ -878,6 +914,9 @@ Il comando è attivato se: <source>Folder pair:</source> <target>Coppia di cartelle:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Utilizza impostazioni locali:</target> @@ -938,6 +977,9 @@ Il comando è attivato se: <source>C&lear</source> <target>Cance&lla</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Rileva indicazioni sincronizzazione con l'aiuto del file di database</target> + <source>Detect moved files</source> <target>Rileva file spostati</target> @@ -952,24 +994,21 @@ Il comando è attivato se: - Rilevazione non disponibile per prima sincronizzazione </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Rileva indicazioni sincronizzazione con l'aiuto del file di database</target> - <source>Delete files:</source> <target>Eliminare i file:</target> -<source>&Permanent</source> -<target>&Permanente</target> - -<source>Delete or overwrite files permanently</source> -<target>Elimina o sovrascrivi i file definitivamente</target> - <source>&Recycle bin</source> <target>&Cestino</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Eseguire il back up dei file cancellati o sovrascritti nel cestino</target> +<source>&Permanent</source> +<target>&Permanente</target> + +<source>Delete or overwrite files permanently</source> +<target>Elimina o sovrascrivi i file definitivamente</target> + <source>&Versioning</source> <target>&Versione</target> @@ -982,15 +1021,15 @@ Il comando è attivato se: <source>Handle errors:</source> <target>Gestire gli errori:</target> -<source>Hide all error and warning messages</source> -<target>Nascondi tutti gli errori e i messaggi d'avviso</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Mostra pop-up di errore o avviso</target> +<source>Hide all error and warning messages</source> +<target>Nascondi tutti gli errori e i messaggi d'avviso</target> + <source>On completion:</source> <target>Al termine:</target> @@ -1096,9 +1135,6 @@ Il comando è attivato se: <source>The following settings are used for all synchronization jobs.</source> <target>Le seguenti impostazioni vengono utilizzate per tutti i processi di sincronizzazione.</target> -<source>Fail-safe file copy</source> -<target>Copia file a prova di errore</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>(recommended)</source> <target>(consigliato)</target> -<source>Copy locked files</source> -<target>Copia file bloccati</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copiare file condivisi o bloccati con il Volume Shadow Copy Service.</target> <source>(requires administrator rights)</source> <target>(richiede i diritti di amministratore)</target> -<source>Copy file access permissions</source> -<target>Copia permessi di accesso file</target> - <source>Transfer file and folder permissions.</source> <target>Trasferimento autorizzazioni di file e cartelle.</target> @@ -1600,9 +1630,6 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>Percentage</source> <target>Percentuale</target> -<source>Internet access failed.</source> -<target>L'accesso a Internet non è riuscito.</target> - <source>Check for Program Updates</source> <target>Controlla Aggiornamenti del Programma</target> @@ -1612,18 +1639,24 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>FreeFileSync is up to date.</source> <target>FreeFileSync è aggiornato.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Impossibile connettersi al www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Controllare</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Impossibile trovare la funzione di sistema %x.</target> + <source>Unable to register to receive system messages.</source> <target>Impossibile registrarsi per ricevere i messaggi di sistema.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Impossibile registrare le notifiche di dispositivo per %x.</target> @@ -1633,9 +1666,6 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>The file is locked by another process:</source> <target>Il file è bloccato da un altro processo:</target> -<source>Cannot write file attributes of %x.</source> -<target>Impossibile scrivere gli attributi del file %x.</target> - <source>Cannot read security context of %x.</source> <target>Impossibile leggere il contesto di protezione di %x.</target> @@ -1651,9 +1681,6 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>%x is not a regular directory name.</source> <target>%x non è un nome di directory normale.</target> -<source>Cannot find system function %x.</source> -<target>Impossibile trovare la funzione di sistema %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Impossibile copiare il file %x in %y.</target> @@ -1714,6 +1741,9 @@ Questo garantisce uno stato consistente anche in caso di errore grave. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>File di configurazione %x incompleta. Gli elementi mancanti saranno impostati sui valori predefiniti.</target> +<source>Internet access failed.</source> +<target>L'accesso a Internet non è riuscito.</target> + <source>Prepare installation</source> <target>Preparare l'installazione</target> diff --git a/FreeFileSync/Build/Languages/japanese.lng b/FreeFileSync/Build/Languages/japanese.lng index b75ca319..11bcc34f 100644 --- a/FreeFileSync/Build/Languages/japanese.lng +++ b/FreeFileSync/Build/Languages/japanese.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>ファイル一覧を作成中...</target> +<source>Fail-safe file copy</source> +<target>安全なファイルコピーを実施</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>ロックされたファイルをコピーする</target> + +<source>Copy file access permissions</source> +<target>ファイルのアクセスパーミッションをコピーする</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>比較処理を開始中</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>エラーコード %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>SFTP サーバ %x への接続に失敗.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -402,8 +435,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>ボリュームシャドウコピーサービスにアクセス出来ません.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>FreeFileSync 64-bit 版を使用してこのシステムにシャドウコピーを作成してください.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>%x のボリューム名が決定されていません.</target> @@ -578,6 +611,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>%x の属性を更新</target> +<source>Cannot write file attributes of %x.</source> +<target>%x のファイル属性を書き込めません.</target> + <source>%x and %y have different content.</source> <target>%x と %y の内容は異なります.</target> @@ -874,6 +910,9 @@ The command is triggered if: <source>Folder pair:</source> <target>フォルダ ペア:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>ローカル設定を使用:</target> @@ -934,6 +973,9 @@ The command is triggered if: <source>C&lear</source> <target>クリア(&L)</target> +<source>Detect synchronization directions with the help of database files</source> +<target>データベースファイルを利用して、同期の方向を検出します。</target> + <source>Detect moved files</source> <target>移動済みのファイルを検出する</target> @@ -948,24 +990,21 @@ The command is triggered if: - 最初の同期では検知できません </target> -<source>Detect synchronization directions with the help of database files</source> -<target>データベースファイルを利用して、同期の方向を検出します。</target> - <source>Delete files:</source> <target>ファイルの削除:</target> -<source>&Permanent</source> -<target>完全消去(&P)</target> - -<source>Delete or overwrite files permanently</source> -<target>ファイルを上書き/または完全に消去します</target> - <source>&Recycle bin</source> <target>ゴミ箱(&R)</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>ファイルを削除/上書きする時に、ゴミ箱にバックアップをとる</target> +<source>&Permanent</source> +<target>完全消去(&P)</target> + +<source>Delete or overwrite files permanently</source> +<target>ファイルを上書き/または完全に消去します</target> + <source>&Versioning</source> <target>バージョン管理(&V)</target> @@ -978,15 +1017,15 @@ The command is triggered if: <source>Handle errors:</source> <target>エラーの取り扱い:</target> -<source>Hide all error and warning messages</source> -<target>すべてのエラーと警告メッセージを非表示</target> - <source>&Pop-up</source> <target>ポップアップ(&P)</target> <source>Show pop-up on errors or warnings</source> <target>エラーと警告をポップアップで表示</target> +<source>Hide all error and warning messages</source> +<target>すべてのエラーと警告メッセージを非表示</target> + <source>On completion:</source> <target>完了時の動作:</target> @@ -1092,9 +1131,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>以下の設定は、すべての同期ジョブで使用されます.</target> -<source>Fail-safe file copy</source> -<target>安全なファイルコピーを実施</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1107,18 +1143,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(推奨)</target> -<source>Copy locked files</source> -<target>ロックされたファイルをコピーする</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>共有、ロックされたファイルをボリュームシャドウコピーサービスを使用してコピー.</target> <source>(requires administrator rights)</source> <target>(管理者権限が必要)</target> -<source>Copy file access permissions</source> -<target>ファイルのアクセスパーミッションをコピーする</target> - <source>Transfer file and folder permissions.</source> <target>ファイルとフォルダのパーミッションを転送します.</target> @@ -1589,9 +1619,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>パーセント</target> -<source>Internet access failed.</source> -<target>インターネットのアクセスに失敗.</target> - <source>Check for Program Updates</source> <target>プログラムのアップデートを確認</target> @@ -1601,18 +1628,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync は最新です.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>www.freefilesync.org に接続できません.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>チェック(&C)</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>システム関数 %x がみつかりません.</target> + <source>Unable to register to receive system messages.</source> <target>システム受信メッセージに登録できません.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x のデバイス通知を登録できません.</target> @@ -1622,9 +1655,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>次のファイルは別のプロセスで使用中です:</target> -<source>Cannot write file attributes of %x.</source> -<target>%x のファイル属性を書き込めません.</target> - <source>Cannot read security context of %x.</source> <target>%x のセキュリティコンテキストを読み込めません.</target> @@ -1640,9 +1670,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x は通常のディレクトリ名ではありません。</target> -<source>Cannot find system function %x.</source> -<target>システム関数 %x がみつかりません.</target> - <source>Cannot copy file %x to %y.</source> <target>%x から %y にコピーできません.</target> @@ -1700,6 +1727,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>構成設定ファイル %x は不完全です。存在しない要素が既定値としてセットされています.</target> +<source>Internet access failed.</source> +<target>インターネットのアクセスに失敗.</target> + <source>Prepare installation</source> <target>インストールの準備</target> @@ -1722,7 +1752,7 @@ This guarantees a consistent state even in case of a serious error. <target>設定の保存先 "%APPDATA%\FreeFileSync"</target> <source>Register FreeFileSync file extensions</source> -<target>ファイル拡張子を登録</target> +<target></target> <source>Create Explorer context menu entries</source> <target>エクスプローラのメニュー項目に統合</target> diff --git a/FreeFileSync/Build/Languages/korean.lng b/FreeFileSync/Build/Languages/korean.lng index 06dbe5f9..0da38541 100644 --- a/FreeFileSync/Build/Languages/korean.lng +++ b/FreeFileSync/Build/Languages/korean.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>파일 리스트 생성 중...</target> +<source>Fail-safe file copy</source> +<target>실패 - 안전 파일 복사</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>락 걸린 파일 복사</target> + +<source>Copy file access permissions</source> +<target>파일 접근 권한 복사</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>비교 시작</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>오류 코드 %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>SFTP 서버 %x로의 연결 실패.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -402,8 +435,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Volume Shadow Copy Service에 접근할 수 없습니다.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>본 운영체제에서의 Shadow Copy 생성은 FreeFileSync 64-비트 버전을 사용하세요.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>%x 에 대한 볼륨 이름을 결정할 수 없습니다.</target> @@ -578,6 +611,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>%x 속성 업데이트 중</target> +<source>Cannot write file attributes of %x.</source> +<target>%x의 파일 속성을 쓸 수 없습니다.</target> + <source>%x and %y have different content.</source> <target>%x와(과) %y의 콘텐츠가 다릅니다.</target> @@ -874,6 +910,9 @@ The command is triggered if: <source>Folder pair:</source> <target>폴더 페어:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>로컬 설정 사용:</target> @@ -934,6 +973,9 @@ The command is triggered if: <source>C&lear</source> <target>제거(&l)</target> +<source>Detect synchronization directions with the help of database files</source> +<target>데이터베이스 파일로 동기화 방향 감지</target> + <source>Detect moved files</source> <target>이동 파일 탐지</target> @@ -948,24 +990,21 @@ The command is triggered if: - 첫 번째 동기화를 위한 탐지기능 사용불가 </target> -<source>Detect synchronization directions with the help of database files</source> -<target>데이터베이스 파일로 동기화 방향 감지</target> - <source>Delete files:</source> <target>파일 삭제:</target> -<source>&Permanent</source> -<target>영구(&P)</target> - -<source>Delete or overwrite files permanently</source> -<target>파일 영구 삭제 또는 덮어쓰기</target> - <source>&Recycle bin</source> <target>휴지통(&R)</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>휴지통에 삭제되고 덮어 씌어진 파일 백업</target> +<source>&Permanent</source> +<target>영구(&P)</target> + +<source>Delete or overwrite files permanently</source> +<target>파일 영구 삭제 또는 덮어쓰기</target> + <source>&Versioning</source> <target>버저닝(&V)</target> @@ -978,15 +1017,15 @@ The command is triggered if: <source>Handle errors:</source> <target>오류 발생시:</target> -<source>Hide all error and warning messages</source> -<target>모든 오류/경고 메세지 숨기기</target> - <source>&Pop-up</source> <target>팝업(&P)</target> <source>Show pop-up on errors or warnings</source> <target>오류 또는 경고에 대한 팝업 보이기</target> +<source>Hide all error and warning messages</source> +<target>모든 오류/경고 메세지 숨기기</target> + <source>On completion:</source> <target>완료 시:</target> @@ -1092,9 +1131,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>다음 설정은 모든 동기화 작업에 사용됩니다.</target> -<source>Fail-safe file copy</source> -<target>실패 - 안전 파일 복사</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1107,18 +1143,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(권장)</target> -<source>Copy locked files</source> -<target>락 걸린 파일 복사</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Volume Shadow Copy Service를 사용하여 공유 또는 잠긴 파일 복사.</target> <source>(requires administrator rights)</source> <target>(관리자 권한 필요)</target> -<source>Copy file access permissions</source> -<target>파일 접근 권한 복사</target> - <source>Transfer file and folder permissions.</source> <target>파일 및 폴더 권한 전송.</target> @@ -1589,9 +1619,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>퍼센티지(%)</target> -<source>Internet access failed.</source> -<target>인터넷 접속에 실패했습니다.</target> - <source>Check for Program Updates</source> <target>프로그램 업데이트 확인</target> @@ -1601,18 +1628,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync는 현재 최신버전 상태입니다.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>www.freefilesync.org.에 접속할 수 없습니다.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>체크(&C)</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>시스템 함수 %x을(를) 찾을 수 없습니다.</target> + <source>Unable to register to receive system messages.</source> <target>시스템 메시지 수신을 위한 등록을 할 수 없습니다.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x에 대한 장치 알림 등록을 할 수 없습니다.</target> @@ -1622,9 +1655,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>파일이 다른 프로세스에 의해 잠겨 있습니다:</target> -<source>Cannot write file attributes of %x.</source> -<target>%x의 파일 속성을 쓸 수 없습니다.</target> - <source>Cannot read security context of %x.</source> <target>%x의 보안 컨텍스트를 읽을 수 없습니다.</target> @@ -1640,9 +1670,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x(은)는 일반 디렉토리 이름이 아닙니다.</target> -<source>Cannot find system function %x.</source> -<target>시스템 함수 %x을(를) 찾을 수 없습니다.</target> - <source>Cannot copy file %x to %y.</source> <target>파일 %x을(를) %y(으)로 복사할 수 없습니다.</target> @@ -1700,6 +1727,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>구성 파일 %x(이)가 불완전합니다. 누락된 요소는 기본 값으로 설정됩니다.</target> +<source>Internet access failed.</source> +<target>인터넷 접속에 실패했습니다.</target> + <source>Prepare installation</source> <target>설치 준비</target> diff --git a/FreeFileSync/Build/Languages/lithuanian.lng b/FreeFileSync/Build/Languages/lithuanian.lng index 6b88f722..678216e5 100644 --- a/FreeFileSync/Build/Languages/lithuanian.lng +++ b/FreeFileSync/Build/Languages/lithuanian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Sukuriamas failų sąrašas...</target> +<source>Fail-safe file copy</source> +<target>Apsauginė failo kopija</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopijuoti užrakintus failus</target> + +<source>Copy file access permissions</source> +<target>Kopijuoti failo leidimus</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Pradedamas palyginimas</target> @@ -291,8 +324,8 @@ Esamas: %y baitai <source>Error Code %x:</source> <target>Klaidos kodas %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Nepavyko prisijungti prie SFTP serverio %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Esamas: %y baitai <source>Cannot access the Volume Shadow Copy Service.</source> <target>Duomenų Šešėlinės Kopijos Paslauga nepasiekiama.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Prašome naudoti 64-bit FreeFileSync versiją, kad sukurti šėšėlines kopijas šioje sistemoje.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Vietos vardo %x nustatyti nepavyko.</target> @@ -584,6 +617,9 @@ Komanda inicijuojama jei: <source>Updating attributes of %x</source> <target>Atnaujinami atributai %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Nepavyksta įrašyti atributų failui %x.</target> + <source>%x and %y have different content.</source> <target>%x ir %y turi skirtingą turinį.</target> @@ -882,6 +918,9 @@ Komanda inicijuojama jei: <source>Folder pair:</source> <target>Aplanko pora:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Naudoti vietinius nustatymus:</target> @@ -942,6 +981,9 @@ Komanda inicijuojama jei: <source>C&lear</source> <target>&Išvalyti</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Aptikti suvienodinimo kryptis, naudojant duomenų bazės failus</target> + <source>Detect moved files</source> <target>Rasti perkeltus failus</target> @@ -956,24 +998,21 @@ Komanda inicijuojama jei: - Pirmame suderinime aptikimas negalimas </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Aptikti suvienodinimo kryptis, naudojant duomenų bazės failus</target> - <source>Delete files:</source> <target>Ištrinti failus:</target> -<source>&Permanent</source> -<target>&Pastovus</target> - -<source>Delete or overwrite files permanently</source> -<target>Trinti ar perrašyti failus visam laikui</target> - <source>&Recycle bin</source> <target>&Šiukšliadėžė</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Padaryti šiukšlių dėžėje esančių ištrintų ar perrašytų failų atsarginę kopiją</target> +<source>&Permanent</source> +<target>&Pastovus</target> + +<source>Delete or overwrite files permanently</source> +<target>Trinti ar perrašyti failus visam laikui</target> + <source>&Versioning</source> <target>&Atsarginės versijos kūrimas</target> @@ -986,15 +1025,15 @@ Komanda inicijuojama jei: <source>Handle errors:</source> <target>Klaidų taisymas:</target> -<source>Hide all error and warning messages</source> -<target>Slėpti visus klaidų ir perspėjimų pranešimus</target> - <source>&Pop-up</source> <target>&Iškylančiame</target> <source>Show pop-up on errors or warnings</source> <target>Rodyti pranešimą esant klaidoms ar perspėjimams</target> +<source>Hide all error and warning messages</source> +<target>Slėpti visus klaidų ir perspėjimų pranešimus</target> + <source>On completion:</source> <target>Pasibaigus:</target> @@ -1100,9 +1139,6 @@ Komanda inicijuojama jei: <source>The following settings are used for all synchronization jobs.</source> <target>Sekantys parametrai yra naudojami visiems suvienodinimo darbams.</target> -<source>Fail-safe file copy</source> -<target>Apsauginė failo kopija</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>(recommended)</source> <target>(rekomenduojama)</target> -<source>Copy locked files</source> -<target>Kopijuoti užrakintus failus</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopijuoti bendrintus arba užrakintus failus naudojant duomenų šešėlinės kopijos paslaugą.</target> <source>(requires administrator rights)</source> <target>(administratoriaus teisės būtinos)</target> -<source>Copy file access permissions</source> -<target>Kopijuoti failo leidimus</target> - <source>Transfer file and folder permissions.</source> <target>Failų ir aplankų perkėlimo leidimai.</target> @@ -1611,9 +1641,6 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>Percentage</source> <target>Procentai</target> -<source>Internet access failed.</source> -<target>Interneto prieiga nepasiekiama.</target> - <source>Check for Program Updates</source> <target>Tikrinti programos atnaujinimus</target> @@ -1623,18 +1650,24 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>FreeFileSync is up to date.</source> <target>FreeFileSync yra naujausia.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nepavyko prisijungti prie www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Tikrinti</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Nepavyksta rasti sisteminės funkcijos %x.</target> + <source>Unable to register to receive system messages.</source> <target>Nepavyko aktyvuoti sisteminių žinučių gavimo funkciją.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nepavyko priregistruoti %x įrenginio pranešimų.</target> @@ -1644,9 +1677,6 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>The file is locked by another process:</source> <target>Failas yra užrakintas kito procceso:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nepavyksta įrašyti atributų failui %x.</target> - <source>Cannot read security context of %x.</source> <target>Nepavyksta perskaityti %x saugumo konteksto.</target> @@ -1662,9 +1692,6 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>%x is not a regular directory name.</source> <target>%x nėra reguliarus katalogo vardas.</target> -<source>Cannot find system function %x.</source> -<target>Nepavyksta rasti sisteminės funkcijos %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Nepavyksta nukopijuoti failų %x į %y.</target> @@ -1728,6 +1755,9 @@ Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Konfiguracinis failas %x yra neužbaigtas. Trūkstamiems elementams bus priskirtos pradinės rekšmės.</target> +<source>Internet access failed.</source> +<target>Interneto prieiga nepasiekiama.</target> + <source>Prepare installation</source> <target>Ruošiamasi įdiegimui</target> diff --git a/FreeFileSync/Build/Languages/outdated/norwegian.lng b/FreeFileSync/Build/Languages/outdated/norwegian.lng index f0558e6d..072eda86 100644 --- a/FreeFileSync/Build/Languages/outdated/norwegian.lng +++ b/FreeFileSync/Build/Languages/outdated/norwegian.lng @@ -7,6 +7,275 @@ <plural_definition>n == 1 ? 0 : 1</plural_definition> </header> +<source>Download the regular version from the FreeFileSync homepage now?</source> +<target></target> + +<source>This FreeFileSync installer for donors has reached its daily installation limit.</source> +<target></target> + +<source>Thanks for your donation and support!</source> +<target></target> + +<source>Internet access failed.</source> +<target></target> + +<source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> +<target></target> + +<source>The following XML elements could not be read:</source> +<target></target> + +<source>Cannot copy attributes from %x to %y.</source> +<target></target> + +<source>%x is not a regular directory name.</source> +<target></target> + +<source>Cannot copy permissions from %x to %y.</source> +<target></target> + +<source>Unable to register device notifications for %x.</source> +<target></target> + +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> +<target></target> + +<source>empty</source> +<target></target> + +<source>Main config</source> +<target></target> + +<source>Identify equal files by comparing their file size.</source> +<target></target> + +<source>Copy DACL, SACL, Owner, Group</source> +<target></target> + +<source>Please enter a target folder.</source> +<target></target> + +<source> +<pluralform>Copy the following item to another folder?</pluralform> +<pluralform>Copy the following %x items to another folder?</pluralform> +</source> +<target></target> + +<source>Loading...</source> +<target></target> + +<source>Move down</source> +<target></target> + +<source>Move up</source> +<target></target> + +<source>Save as default</source> +<target></target> + +<source>Remove entry from list</source> +<target></target> + +<source>&Delete</source> +<target></target> + +<source>&Copy to...</source> +<target></target> + +<source>A new version of FreeFileSync is available:</source> +<target></target> + +<source>Copy items</source> +<target></target> + +<source>SSH File Transfer Protocol</source> +<target></target> + +<source>&Overwrite existing files</source> +<target></target> + +<source>&Keep relative paths</source> +<target></target> + +<source>Items:</source> +<target></target> + +<source>Bytes:</source> +<target></target> + +<source>Select Folder</source> +<target></target> + +<source>Select a directory on the server:</source> +<target></target> + +<source>Directory on server:</source> +<target></target> + +<source>&Show password</source> +<target></target> + +<source>Password:</source> +<target></target> + +<source>User name:</source> +<target></target> + +<source>Port:</source> +<target></target> + +<source>Server name or IP address:</source> +<target></target> + +<source>Enter your SFTP login details:</source> +<target></target> + +<source>Arrange folder pair</source> +<target></target> + +<source> +- Not supported by all file systems +- Requires and creates database files +- Detection not available for first sync +</source> +<target></target> + +<source>Example:</source> +<target></target> + +<source>List of file time offsets to ignore</source> +<target></target> + +<source>&Ignore time shift [hh:mm]</source> +<target></target> + +<source>&Direct</source> +<target></target> + +<source>&Follow</source> +<target></target> + +<source>Include &symbolic links:</source> +<target></target> + +<source>Main settings:</source> +<target></target> + +<source>Folder pair:</source> +<target></target> + +<source>&Preferences</source> +<target></target> + +<source>Select alternative folder type</source> +<target></target> + +<source>Select SFTP folder</source> +<target></target> + +<source>SFTP folder</source> +<target></target> + +<source>Please select a folder on a local file system, network or an MTP device.</source> +<target></target> + +<source>The selected folder %x cannot be used with FreeFileSync.</source> +<target></target> + +<source>Item name</source> +<target></target> + +<source>Relative path</source> +<target></target> + +<source>Switching to FreeFileSync's main window</source> +<target></target> + +<source>The following folders are significantly different. Make sure you have selected the correct folders for synchronization.</source> +<target></target> + +<source>Data verification error:</source> +<target></target> + +<source>%x and %y have different content.</source> +<target></target> + +<source>File size</source> +<target></target> + +<source>The following path does not support directory monitoring:</source> +<target></target> + +<source>Start</source> +<target></target> + +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> + +<source>Timeout while searching for folder %x.</source> +<target></target> + +<source>Unable to connect to %x.</source> +<target></target> + +<source>Cannot determine free disk space for %x.</source> +<target></target> + +<source>Cannot find device %x.</source> +<target></target> + +<source>Cannot find %x.</source> +<target></target> + +<source> +Unexpected size of data stream. +Expected: %x bytes +Actual: %y bytes +</source> +<target></target> + +<source>Operation not supported for different base folder types.</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>File time tolerance</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Enabled</source> +<target></target> + +<source>If you ignore this error the folders will be considered empty. Missing folders are created automatically when needed.</source> +<target></target> + +<source>Open configuration for editing without executing it.</source> +<target></target> + +<source>Cannot find file %x.</source> +<target></target> + <source>Both sides have changed since last synchronization.</source> <target>Begge sider er endret siden siste synkronisering.</target> @@ -22,8 +291,14 @@ <source>Setting default synchronization directions: Old files will be overwritten with newer files.</source> <target>Setter standardretning: Gamle filer overskrives med nyere.</target> -<source>Checking recycle bin availability for folder %x...</source> -<target>Sjekker papirkurvens tilgjengelighet for mappen %x...</target> +<source>Creating folder %x</source> +<target>Oppretter mappen %x</target> + +<source>Creating file %x</source> +<target>Oppretter filen %x</target> + +<source>Creating symbolic link %x</source> +<target>Oppretter symlinken %x</target> <source>Moving file %x to the recycle bin</source> <target>Flytter filen %x til papirkurv</target> @@ -43,6 +318,9 @@ <source>Deleting symbolic link %x</source> <target>Sletter symlink %x</target> +<source>Checking recycle bin availability for folder %x...</source> +<target>Sjekker papirkurvens tilgjengelighet for mappen %x...</target> + <source>The recycle bin is not available for the following folders. Files will be deleted permanently instead:</source> <target>Papirkurven kan ikke brukes til følgende mapper. Filene slettes permanent:</target> @@ -55,8 +333,8 @@ <source>Syntax error</source> <target>Syntaksfeil</target> -<source>Cannot find file %x.</source> -<target></target> +<source>Error</source> +<target>Feil</target> <source>File %x does not contain a valid configuration.</source> <target>Filen %x inneholder ikke gyldige innstillinger.</target> @@ -94,15 +372,9 @@ <source>Any number of alternative directory pairs for at most one config file.</source> <target>Et ubegrenset antall alternative kataloger for maksimalt én konfigurasjonsfil.</target> -<source>Open configuration for editing without executing it.</source> -<target></target> - <source>Cannot find the following folders:</source> <target>Kan ikke finne følgende mapper:</target> -<source>You can ignore this error to consider each folder as empty. The folders then will be created automatically during synchronization.</source> -<target>Ignorer denne fil for at betrakte hver mappe som tom. Mapperne blir så automatisk opprettet ved synkronisering.</target> - <source>A folder input field is empty.</source> <target>Der er ikke valgt noen mapper.</target> @@ -139,6 +411,15 @@ <source>Generating file list...</source> <target>Oppretter filliste...</target> +<source>Fail-safe file copy</source> +<target>Sikker filkopiering</target> + +<source>Copy locked files</source> +<target>Kopier låste filer</target> + +<source>Copy file access permissions</source> +<target>Kopier adgangstillatelser</target> + <source>Starting comparison</source> <target>Starter analyse</target> @@ -202,22 +483,9 @@ <source>Update attributes on right</source> <target>Oppdater attributter til høyre</target> -<source>Cannot read file %x.</source> -<target>Kan ikke lese filen %x.</target> - -<source> -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes -</source> -<target></target> - <source>Cannot write permissions of %x.</source> <target>Kan ikke skrive tillatelsene til %x.</target> -<source>Operation not supported for different base folder types.</source> -<target></target> - <source>Cannot write file %x.</source> <target>Kan ikke opprette filen %x.</target> @@ -233,27 +501,21 @@ Actual: %y bytes <source>Cannot read file attributes of %x.</source> <target>Kan ikke lese filattributterne på %x.</target> -<source>Cannot find %x.</source> -<target></target> - <source>Cannot open file %x.</source> <target>Filen %x kan ikke åpnes.</target> +<source>Cannot read file %x.</source> +<target>Kan ikke lese filen %x.</target> + +<source>Cannot create directory %x.</source> +<target>Kan ikke opprette mappen %x.</target> + <source>Cannot delete directory %x.</source> <target>Kan ikke slette mappen %x.</target> <source>Cannot delete file %x.</source> <target>Kan ikke slette filen %x.</target> -<source>Cannot find device %x.</source> -<target></target> - -<source>Cannot determine free disk space for %x.</source> -<target></target> - -<source>Cannot create directory %x.</source> -<target>Kan ikke opprette mappen %x.</target> - <source>Cannot write modification time of %x.</source> <target>Kan ikke oppdatere tidsendring på %x.</target> @@ -263,21 +525,18 @@ Actual: %y bytes <source>Cannot resolve symbolic link %x.</source> <target>Kan ikke følge symlinken %x.</target> -<source>Unable to move %x to the recycle bin.</source> -<target>Kunne ikke flytte %x til papirkurv.</target> - <source>Cannot open directory %x.</source> <target>Kan ikke åpne mappen %x.</target> +<source>Unable to move %x to the recycle bin.</source> +<target>Kunne ikke flytte %x til papirkurv.</target> + <source>Incorrect command line:</source> <target>Ugyldig kommando:</target> <source>Error Code %x:</source> <target>Feilkode %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target></target> - <source> <pluralform>1 byte</pluralform> <pluralform>%x bytes</pluralform> @@ -317,9 +576,6 @@ Actual: %y bytes <source>Searching for folder %x...</source> <target>Søker etter mappen %x...</target> -<source>Timeout while searching for folder %x.</source> -<target></target> - <source>Cannot get process information.</source> <target>Kan ikke hente prosessinformasjon.</target> @@ -341,9 +597,6 @@ Actual: %y bytes <source>Detecting abandoned lock...</source> <target>Finner etterlatt lås...</target> -<source>Creating file %x</source> -<target>Oppretter filen %x</target> - <source>Saving file %x...</source> <target>Lagrer fil %x...</target> @@ -362,9 +615,6 @@ Actual: %y bytes <source>Cannot set directory lock for %x.</source> <target>Kan ikke låse mappen %x.</target> -<source>Scanning:</source> -<target>Skanner:</target> - <source> <pluralform>1 thread</pluralform> <pluralform>%x threads</pluralform> @@ -374,6 +624,9 @@ Actual: %y bytes <pluralform>%x tråder</pluralform> </target> +<source>Scanning:</source> +<target>Skanner:</target> + <source>/sec</source> <target>/sek</target> @@ -392,9 +645,6 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>VSS tjenesten er ikke tilgjengelig.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Bruk FreeFileSync 64-bit til å lage VSS kopier på dette system.</target> - <source>Cannot determine volume name for %x.</source> <target>Kan ikke bestemme volumnavn for %x.</target> @@ -450,7 +700,7 @@ Actual: %y bytes <target>3. Klikk 'Start'.</target> <source>To get started just import a .ffs_batch file.</source> -<target>Importer en .ffs_batchfil (Filer > Åpne...) for å komme igang.</target> +<target>Importer en .ffs_batchfil for å komme igang.</target> <source>Folders to watch:</source> <target>Jobbens mapper:</target> @@ -484,9 +734,6 @@ Kommandoen utføres hvis: - nye mapper finnes (f.eks USB nøkkel) </target> -<source>&Start</source> -<target>&Start</target> - <source>About</source> <target>Om</target> @@ -505,9 +752,6 @@ Kommandoen utføres hvis: <source>Waiting until all directories are available...</source> <target>Venter til alle mapper er tilgjengelige...</target> -<source>Error</source> -<target>Feil</target> - <source>&Restore</source> <target>&Vis vinduer</target> @@ -520,12 +764,12 @@ Kommandoen utføres hvis: <source>&Retry</source> <target>&Prøv igjen</target> -<source>File content</source> -<target>Innhold</target> - <source>File time and size</source> <target>Størrelse og tid</target> +<source>File content</source> +<target>Innhold</target> + <source>Two way</source> <target>Toveis</target> @@ -553,12 +797,6 @@ Kommandoen utføres hvis: <source>Removing old versions...</source> <target>Fjerner gamle utgaver...</target> -<source>Creating symbolic link %x</source> -<target>Oppretter symlinken %x</target> - -<source>Creating folder %x</source> -<target>Oppretter mappen %x</target> - <source>Updating file %x</source> <target>Oppdaterer fil %x</target> @@ -571,11 +809,8 @@ Kommandoen utføres hvis: <source>Updating attributes of %x</source> <target>Oppdaterer attributter for %x</target> -<source>%x and %y have different content.</source> -<target></target> - -<source>Data verification error:</source> -<target></target> +<source>Cannot write file attributes of %x.</source> +<target>Kan ikke skrive filattributter til %x.</target> <source>Creating a Volume Shadow Copy for %x...</source> <target>Oppretter VSS kopi for %x...</target> @@ -595,9 +830,6 @@ Kommandoen utføres hvis: <source>The following items have unresolved conflicts and will not be synchronized:</source> <target>Følgende mapper har uløste konflikter og synkroniseres ikke:</target> -<source>The following folders are significantly different. Make sure you have selected the correct folders for synchronization.</source> -<target></target> - <source>Not enough free disk space available in:</source> <target>Ikke nok ledig diskplass på:</target> @@ -655,9 +887,6 @@ Kommandoen utføres hvis: <source>&Switch</source> <target>&Skift</target> -<source>Switching to FreeFileSync's main window</source> -<target>Skifter til hovedvinduet</target> - <source> <pluralform>Automatic retry in 1 second...</pluralform> <pluralform>Automatic retry in %x seconds...</pluralform> @@ -676,30 +905,6 @@ Kommandoen utføres hvis: <source>Serious Error</source> <target>Kritisk feil</target> -<source>Check for Program Updates</source> -<target>Søk etter oppdatering</target> - -<source>A new version of FreeFileSync is available:</source> -<target>Oppdatering tilgjengelig:</target> - -<source>Download now?</source> -<target>Last ned nå?</target> - -<source>&Download</source> -<target>&Last ned</target> - -<source>FreeFileSync is up to date.</source> -<target>FreeFileSync er oppdatert.</target> - -<source>Unable to connect to www.freefilesync.org.</source> -<target>Kan ikke koble til www.freefilesync.org</target> - -<source>Cannot find current FreeFileSync version number online. Do you want to check manually?</source> -<target>Kunne ikke finne FreeFileSync's versjonsnummer online. Vil du kontrollere manuelt?</target> - -<source>&Check</source> -<target>&Kontroller</target> - <source>Symlink</source> <target>Symlink</target> @@ -709,15 +914,6 @@ Kommandoen utføres hvis: <source>Full path</source> <target>Full sti</target> -<source>Name</source> -<target>Navn</target> - -<source>Relative folder</source> -<target>Relativ mappe</target> - -<source>Base folder</source> -<target>Hovedmappe</target> - <source>Size</source> <target>Størrelse</target> @@ -760,12 +956,6 @@ Kommandoen utføres hvis: <source>Paste</source> <target>Lim inn</target> -<source>Local Synchronization Settings</source> -<target>Lokale synkroniseringsinstillinger</target> - -<source>The selected folder %x cannot be used with FreeFileSync. Please select a folder on a local file system, network or an MTP device.</source> -<target></target> - <source>&New</source> <target>&Ny</target> @@ -773,7 +963,7 @@ Kommandoen utføres hvis: <target>&Lagre</target> <source>Save as &batch job...</source> -<target>Lagre som &batchfil</target> +<target>Lagre som &batchfil...</target> <source>Start &comparison</source> <target>Start &sammenligning</target> @@ -793,14 +983,11 @@ Kommandoen utføres hvis: <source>&Actions</source> <target>&Handling</target> -<source>&Options</source> -<target>&Valg</target> - <source>&Language</source> <target>&Språk</target> <source>&Find...</source> -<target>&Søk</target> +<target>&Søk...</target> <source>&Reset layout</source> <target>&Reset layout</target> @@ -835,9 +1022,6 @@ Kommandoen utføres hvis: <source>Remove folder pair</source> <target>Fjern mappepar</target> -<source>Select SFTP folder</source> -<target></target> - <source>Swap sides</source> <target>Bytt side</target> @@ -848,7 +1032,7 @@ Kommandoen utføres hvis: <target>Søk:</target> <source>Match case</source> -<target>Treffølsomhet (a/A)</target> +<target>Treffølsomhet</target> <source>New</source> <target>Ny</target> @@ -860,7 +1044,7 @@ Kommandoen utføres hvis: <target>Lagre</target> <source>Save as...</source> -<target>Lagre som</target> +<target>Lagre som...</target> <source>View type:</source> <target>Visning:</target> @@ -884,40 +1068,19 @@ Kommandoen utføres hvis: <target>Antal bytes som kopieres</target> <source>Use local settings:</source> -<target>Bruk lokale instillinger</target> +<target>Bruk lokale instillinger:</target> <source>Select a variant:</source> <target>Velg metode:</target> -<source>Identify equal files by comparing modification time and size.</source> -<target>Gjennkjenn like filer etter filtid og størrelse.</target> - -<source>Identify equal files by comparing the file content.</source> -<target>Gjennkjenn like filer etter innhold.</target> - -<source>&Ignore time shift (in hours)</source> -<target></target> - -<source>Consider file times with specified offset as equal</source> -<target>Vurder filtidspunkt med spesifisert oppstilling som like</target> +<source>More information</source> +<target>Mer informasjon</target> <source>Handle daylight saving time</source> <target>Behandle sommertid</target> -<source>Include &symbolic links:</source> -<target></target> - -<source>&Follow</source> -<target></target> - -<source>&Direct</source> -<target></target> - -<source>More information</source> -<target>Mer informasjon</target> - <source>Local settings:</source> -<target>Lokale instillinger</target> +<target>Lokale instillinger:</target> <source>Include:</source> <target>Inkludér:</target> @@ -946,34 +1109,27 @@ Kommandoen utføres hvis: <source>C&lear</source> <target>F&jern</target> -<source>Detect moved files</source> -<target>Gjennkjenn flyttede filer</target> - -<source> -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync -</source> -<target></target> - <source>Detect synchronization directions with the help of database files</source> <target>Gjennkjenn synkretninger ved hjelp av databasefiler</target> +<source>Detect moved files</source> +<target>Gjennkjenn flyttede filer</target> + <source>Delete files:</source> <target>Slett filer:</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Slett eller overskriv filer permanent</target> - <source>&Recycle bin</source> <target>&Papirkurv</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Backup slettede og overskrevne filer i papirkurven</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Slett eller overskriv filer permanent</target> + <source>&Versioning</source> <target>&Versjonering</target> @@ -986,44 +1142,21 @@ Kommandoen utføres hvis: <source>Handle errors:</source> <target>Feilhåndtering:</target> -<source>Hide all error and warning messages</source> -<target>Skjul feilmeldinger og advarsler</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Vis feilmeldinger og advarsler</target> +<source>Hide all error and warning messages</source> +<target>Skjul feilmeldinger og advarsler</target> + <source>On completion:</source> <target>Når gjennomført:</target> <source>OK</source> <target>OK</target> -<source>Enter your SFTP login details:</source> -<target></target> - -<source>Server name or IP address:</source> -<target></target> - -<source>Examples:</source> -<target></target> - -<source>User name:</source> -<target></target> - -<source>Password:</source> -<target></target> - -<source>&Show password</source> -<target></target> - -<source>Directory on server:</source> -<target></target> - - - <source>Start synchronization now?</source> <target>Synkroniser nå?</target> @@ -1033,9 +1166,6 @@ Kommandoen utføres hvis: <source>&Don't show this dialog again</source> <target>&Ikke vis igjen</target> -<source>Arrange folder pair</source> -<target></target> - <source>Items found:</source> <target>Mapper funnet:</target> @@ -1052,7 +1182,7 @@ Kommandoen utføres hvis: <target>Minimér til systemfeltet</target> <source>Bytes copied:</source> -<target>Byte kopiert</target> +<target>Byte kopiert:</target> <source>Close</source> <target>Lukk</target> @@ -1090,9 +1220,6 @@ Kommandoen utføres hvis: <source>The following settings are used for all synchronization jobs.</source> <target>Disse innstillinger gjelder alle synkroniseringer.</target> -<source>Fail-safe file copy</source> -<target>Sikker filkopiering</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1102,18 +1229,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(anbefalt)</target> -<source>Copy locked files</source> -<target>Kopier låste filer</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopiér delte eller låste filer med VSS kopiering.</target> <source>(requires administrator rights)</source> <target>(administrator)</target> -<source>Copy file access permissions</source> -<target>Kopier adgangstillatelser</target> - <source>Transfer file and folder permissions.</source> <target>Overfør fil og mappetillatelser.</target> @@ -1165,9 +1286,6 @@ This guarantees a consistent state even in case of a serious error. <source>Many thanks for localization:</source> <target>Takk for oversettelse:</target> -<source>SSH File Transfer Protocol</source> -<target></target> - <source>Save as Batch Job</source> <target>Lagre som batchfil</target> @@ -1180,8 +1298,8 @@ This guarantees a consistent state even in case of a serious error. <source>Select Time Span</source> <target>Velg tidsintervall</target> -<source>&Preferences</source> -<target></target> +<source>&Options</source> +<target>&Valg</target> <source>Main Bar</source> <target>Hovedlinje</target> @@ -1201,6 +1319,9 @@ This guarantees a consistent state even in case of a serious error. <source>Overview</source> <target>Oversikt</target> +<source>&Download</source> +<target>&Last ned</target> + <source>Confirm</source> <target>Bekreft</target> @@ -1261,9 +1382,6 @@ This guarantees a consistent state even in case of a serious error. <source>Exclude temporarily</source> <target>Ekskluder midlertidig</target> -<source>Delete</source> -<target>Slett</target> - <source>Include all</source> <target>Velg alle</target> @@ -1309,12 +1427,6 @@ This guarantees a consistent state even in case of a serious error. <source>Do&n't save</source> <target>&Ikke lagre</target> -<source>Remove entry from list</source> -<target></target> - -<source>Synchronization Settings</source> -<target>Synkroniseringsinnstillinger</target> - <source>Clear filter</source> <target>Slett filter</target> @@ -1363,9 +1475,6 @@ This guarantees a consistent state even in case of a serious error. <source>Show filtered or temporarily excluded files</source> <target>Vis filtrerte eller midlertidig ekskluderte filer</target> -<source>Save as default</source> -<target></target> - <source>Filter</source> <target>Filter</target> @@ -1375,12 +1484,6 @@ This guarantees a consistent state even in case of a serious error. <source>Cannot find %x</source> <target>Kan ikke finne %x</target> -<source>Move up</source> -<target></target> - -<source>Move down</source> -<target></target> - <source>Comma-separated values</source> <target>Kommaoppdelte verdier</target> @@ -1402,27 +1505,27 @@ This guarantees a consistent state even in case of a serious error. <source>Shut down</source> <target>Avslutt</target> +<source>Paused</source> +<target>Pauset</target> + +<source>Initializing...</source> +<target>Forbereder...</target> + <source>Scanning...</source> <target>Skanner...</target> <source>Comparing content...</source> <target>Analyserer innhold...</target> +<source>Completed</source> +<target>Gjennomført</target> + <source>Info</source> <target>Info</target> <source>Select all</source> <target>Velg alt</target> -<source>Paused</source> -<target>Pauset</target> - -<source>Initializing...</source> -<target>Forbereder...</target> - -<source>Completed</source> -<target>Gjennomført</target> - <source>&Continue</source> <target>&Fortsett</target> @@ -1453,12 +1556,6 @@ This guarantees a consistent state even in case of a serious error. <pluralform>Vil du slette følgende %x mapper?</pluralform> </target> -<source>Preferences</source> -<target>Egenskaper</target> - -<source>Copy DACL, SACL, Owner, Group</source> -<target></target> - <source>Integrate external applications into context menu. The following macros are available:</source> <target>Integrer eksterne programmer i kontekstmeny. Bruk følgende makroer:</target> @@ -1480,11 +1577,17 @@ This guarantees a consistent state even in case of a serious error. <source>&Show</source> <target>&Vis</target> +<source>Identify equal files by comparing modification time and size.</source> +<target>Gjennkjenn like filer etter filtid og størrelse.</target> + +<source>Identify equal files by comparing the file content.</source> +<target>Gjennkjenn like filer etter innhold.</target> + <source>Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database.</source> <target>Finn og fordel endringer på begge sider. Slettede filer, omdøpninger og konflikter finnes automatisk i en database.</target> <source>Create a mirror backup of the left folder by adapting the right folder to match.</source> -<target>Oppret speiling av venstre mappe ved å tilpasse den høyre mappe</target> +<target>Oppret speiling av venstre mappe ved å tilpasse den høyre mappe.</target> <source>Copy new and updated files to the right folder.</source> <target>Kopier nye og oppdaterte filer til høyre mappe.</target> @@ -1492,6 +1595,15 @@ This guarantees a consistent state even in case of a serious error. <source>Configure your own synchronization rules.</source> <target>Oppret dine egne synkroniseringsregler.</target> +<source>Synchronization Settings</source> +<target>Synkroniseringsinnstillinger</target> + +<source>Comparison</source> +<target>Sammenligning</target> + +<source>Synchronization</source> +<target>Synkronisering</target> + <source>Today</source> <target>I dag</target> @@ -1528,12 +1640,6 @@ This guarantees a consistent state even in case of a serious error. <source>Append a time stamp to each file name</source> <target>Legg til tidsstempel til hvert filnavn</target> -<source>Comparison</source> -<target>Sammenligning</target> - -<source>Synchronization</source> -<target>Synkronisering</target> - <source>Leave as unresolved conflict</source> <target>Etterlat som uløst konflikt</target> @@ -1546,27 +1652,39 @@ This guarantees a consistent state even in case of a serious error. <source>Files</source> <target>Filer</target> +<source>Name</source> +<target>Navn</target> + <source>Items</source> <target>Mapper</target> <source>Percentage</source> <target>Prosent</target> +<source>Check for Program Updates</source> +<target>Søk etter oppdatering</target> + +<source>Download now?</source> +<target>Last ned nå?</target> + +<source>FreeFileSync is up to date.</source> +<target>FreeFileSync er oppdatert.</target> + +<source>&Check</source> +<target>&Kontroller</target> + +<source>Cannot find system function %x.</source> +<target>Kan ikke finne systemfunksjonen %x.</target> + <source>Unable to register to receive system messages.</source> <target>Kunne ikke registrere mottakelse av systembesjkeder.</target> -<source>Unable to register device notifications for %x.</source> -<target></target> - <source>Cannot monitor directory %x.</source> <target>Kan ikke overvåke mappen %x.</target> <source>The file is locked by another process:</source> <target>Filen er låst av en annen prosess:</target> -<source>Cannot write file attributes of %x.</source> -<target>Kan ikke skrive filattributter til %x.</target> - <source>Cannot read security context of %x.</source> <target>Kan ikke lese sikkerhetsinnstillinger på %x.</target> @@ -1576,15 +1694,6 @@ This guarantees a consistent state even in case of a serious error. <source>Cannot read permissions of %x.</source> <target>Kan ikke lese tillatelsene på %x.</target> -<source>Cannot copy permissions from %x to %y.</source> -<target></target> - -<source>Cannot find system function %x.</source> -<target>Kan ikke finne systemfunksjonen %x.</target> - -<source>Cannot copy attributes from %x to %y.</source> -<target></target> - <source>Cannot copy file %x to %y.</source> <target>Kan ikke kopiere filen %x til %y.</target> @@ -1634,28 +1743,22 @@ This guarantees a consistent state even in case of a serious error. <target>Kan ikke endre I/O prioriteter.</target> <source>Checking recycle bin failed for folder %x.</source> -<target>Sjekk papirkurv-feil for mappen %x</target> - -<source>The following XML elements could not be read:</source> -<target></target> - -<source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> -<target></target> +<target>Sjekk papirkurv-feil for mappen %x.</target> <source>Prepare installation</source> <target>Forbered installering</target> <source>Choose which components you want to install.</source> -<target>Velg hva du vil installere</target> +<target>Velg hva du vil installere.</target> <source>Select installation type:</source> -<target>Velg installasjonstype</target> +<target>Velg installasjonstype:</target> <source>Local</source> <target>Lokal</target> <source>Portable</source> -<target>Portabel (USB)</target> +<target>Portabel</target> <source>recommended</source> <target>anbefalt</target> diff --git a/FreeFileSync/Build/Languages/outdated/scottish_gaelic.lng b/FreeFileSync/Build/Languages/outdated/scottish_gaelic.lng deleted file mode 100644 index cd52c07c..00000000 --- a/FreeFileSync/Build/Languages/outdated/scottish_gaelic.lng +++ /dev/null @@ -1,1740 +0,0 @@ -<header> - <language>Gàidhlig</language> - <translator>enter your name here</translator> - <locale>gd</locale> - <image>flag_scotland.png</image> - <plural_count>4</plural_count> - <plural_definition>(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3</plural_definition> -</header> - -<source>Edit with FreeFileSync</source> -<target></target> - -<source>RealTimeSync Configuration</source> -<target></target> - -<source>FreeFileSync Synchronization Database</source> -<target></target> - -<source>FreeFileSync Batch File</source> -<target></target> - -<source>FreeFileSync Configuration</source> -<target></target> - -<source>Unregistering FreeFileSync file extensions</source> -<target></target> - -<source>Registering FreeFileSync file extensions</source> -<target></target> - -<source>Start menu</source> -<target></target> - -<source>Desktop</source> -<target></target> - -<source>Create shortcuts:</source> -<target></target> - -<source>Choose a directory for installation:</source> -<target></target> - -<source>Just copy the files</source> -<target></target> - -<source>Do not write to Registry</source> -<target></target> - -<source>Save settings in installation directory</source> -<target></target> - -<source>Create Explorer context menu entries</source> -<target></target> - -<source>Register FreeFileSync file extensions</source> -<target></target> - -<source>Save settings to "%APPDATA%\FreeFileSync"</source> -<target></target> - -<source>recommended</source> -<target></target> - -<source>Portable</source> -<target></target> - -<source>Local</source> -<target></target> - -<source>Select installation type:</source> -<target></target> - -<source>Choose which components you want to install.</source> -<target></target> - -<source>Prepare installation</source> -<target></target> - -<source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> -<target></target> - -<source>The following XML elements could not be read:</source> -<target></target> - -<source>Cannot copy attributes from %x to %y.</source> -<target></target> - -<source>Cannot copy permissions from %x to %y.</source> -<target></target> - -<source>Unable to register device notifications for %x.</source> -<target></target> - -<source>Copy DACL, SACL, Owner, Group</source> -<target></target> - -<source>Move down</source> -<target></target> - -<source>Move up</source> -<target></target> - -<source>Save as default</source> -<target></target> - -<source>Show files that will be updated on the right side</source> -<target></target> - -<source>Show files that will be updated on the left side</source> -<target></target> - -<source>Remove entry from list</source> -<target></target> - -<source>&Preferences</source> -<target></target> - -<source>SSH File Transfer Protocol</source> -<target></target> - -<source>Donate with PayPal</source> -<target></target> - -<source>Arrange folder pair</source> -<target></target> - -<source>Directory on server:</source> -<target></target> - -<source>&Show password</source> -<target></target> - -<source>Password:</source> -<target></target> - -<source>User name:</source> -<target></target> - -<source>Examples:</source> -<target></target> - -<source>Server name or IP address:</source> -<target></target> - -<source>Enter your SFTP login details:</source> -<target></target> - -<source> -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync -</source> -<target></target> - -<source>&Direct</source> -<target></target> - -<source>&Follow</source> -<target></target> - -<source>Include &symbolic links:</source> -<target></target> - -<source>&Ignore time shift (in hours)</source> -<target></target> - -<source>Number of files that will be updated</source> -<target></target> - -<source>Select SFTP folder</source> -<target></target> - -<source>&Actions</source> -<target></target> - -<source>S&ynchronization settings</source> -<target></target> - -<source>&Filter settings</source> -<target></target> - -<source>C&omparison settings</source> -<target></target> - -<source>The selected folder %x cannot be used with FreeFileSync. Please select a folder on a local file system, network or an MTP device.</source> -<target></target> - -<source>Unable to connect to www.freefilesync.org.</source> -<target></target> - -<source>Cleaning up old log files...</source> -<target></target> - -<source>The following folders are significantly different. Make sure you have selected the correct folders for synchronization.</source> -<target></target> - -<source>Data verification error:</source> -<target></target> - -<source>%x and %y have different content.</source> -<target></target> - -<source>Updating symbolic link %x</source> -<target></target> - -<source>Updating file %x</source> -<target></target> - -<source>E&xit</source> -<target></target> - -<source>Saving file %x...</source> -<target></target> - -<source>Timeout while searching for folder %x.</source> -<target></target> - -<source>Failed to connect to SFTP server %x.</source> -<target></target> - -<source>Cannot determine free disk space for %x.</source> -<target></target> - -<source>Cannot find device %x.</source> -<target></target> - -<source>Cannot find %x.</source> -<target></target> - -<source>Cannot copy symbolic link %x to %y.</source> -<target></target> - -<source>Operation not supported for different base folder types.</source> -<target></target> - -<source> -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes -</source> -<target></target> - -<source>Update right item</source> -<target></target> - -<source>Update left item</source> -<target></target> - -<source>Open configuration for editing without executing it.</source> -<target></target> - -<source>Cannot find file %x.</source> -<target></target> - -<source>Both sides have changed since last synchronization.</source> -<target>Chaidh an dà thaobh atharrachadh on t-sioncronachadh mu dheireadh.</target> - -<source>Cannot determine sync-direction:</source> -<target>Cha ghabh comhair an t-sioncronachaidh aithneachadh:</target> - -<source>No change since last synchronization.</source> -<target>Cha deach dad atharrachadh on t-sioncronachadh mu dheireadh.</target> - -<source>The database entry is not in sync considering current settings.</source> -<target>Chan eil innteart an stòir-dhàta sioncronaicht a-rèir nan roghainnean làithreach</target> - -<source>Setting default synchronization directions: Old files will be overwritten with newer files.</source> -<target>A’ suidheachadh comhair bhunaiteach an t-sioncronachaidh: Thèid faidhlichean nas ùire a sgrìobhadh thairis air seann-fhaidhlichean.</target> - -<source>Checking recycle bin availability for folder %x...</source> -<target>A’ toirt sùil a bheil am biona ri fhaighin airson a’ phasgain %x...</target> - -<source>Moving file %x to the recycle bin</source> -<target>A’ gluasad an fhaidhle %x dhan bhiona</target> - -<source>Moving folder %x to the recycle bin</source> -<target>A’ gluasad a’ phasgain %x dhan bhiona</target> - -<source>Moving symbolic link %x to the recycle bin</source> -<target>A’ gluasad an symbolic link %x dhan bhiona</target> - -<source>Deleting file %x</source> -<target>A’ sguabadh às an fhaidhle %x</target> - -<source>Deleting folder %x</source> -<target>A’ sguabadh às a’ phasgain %x</target> - -<source>Deleting symbolic link %x</source> -<target>A’ sguabadh às an symbolic link %x</target> - -<source>The recycle bin is not available for the following folders. Files will be deleted permanently instead:</source> -<target>Chan eil am biona ri làimh airson nam pasganan a leanas. Thèid an sguabadh às gu buan an àite sin:</target> - -<source>An exception occurred</source> -<target>Thachair eisgeachd</target> - -<source>A directory path is expected after %x.</source> -<target>Tha dùil ri slighe pasgain an dèidh %x</target> - -<source>Syntax error</source> -<target>Mearachd co-chàraidh</target> - -<source>File %x does not contain a valid configuration.</source> -<target>Chan eil rèiteachadh dligheach san fhaidhle %x.</target> - -<source>Unequal number of left and right directories specified.</source> -<target>Chan eil àireamh nam pasganan air an taobh chlì ’s an taobh deas co-ionnann</target> - -<source>The config file must not contain settings at directory pair level when directories are set via command line.</source> -<target>Chan fhaod roghainnean aig ìre paidhrichean nam pasganan a bhith san fhaidhle rèiteachaidh nuair a thathar a’ cur pasganan slighe na loidhne-àithne.</target> - -<source>Directories cannot be set for more than one configuration file.</source> -<target>Cha ghabh pasganan a shuidheachadh airson barrachd air aon fhaidhle rèiteachaidh.</target> - -<source>Command line</source> -<target>Loidhne-àithne</target> - -<source>Syntax:</source> -<target>Co-chàradh:</target> - -<source>global config file:</source> -<target>faidhle uile-choitcheann an rèiteachaidh</target> - -<source>config files:</source> -<target>faidhlichean rèiteachaidh:</target> - -<source>directory</source> -<target>pasgan</target> - -<source>Path to an alternate GlobalSettings.xml file.</source> -<target>Slighe gu faidhle GlobalSettings.xml eile</target> - -<source>Any number of FreeFileSync .ffs_gui and/or .ffs_batch configuration files.</source> -<target>Àireamh sam bith de dh’fhaidhlichean rèiteachaidh FreeFileSync .ffs_gui agus/no .ffs_batch</target> - -<source>Any number of alternative directory pairs for at most one config file.</source> -<target>Àireamh sam bith de phaidhrichean pasgain eile airson aon fhaidhle rèiteachaidh air a’ char as fhaide</target> - -<source>Cannot find the following folders:</source> -<target>Chan urrainn dhuinn na pasgain a leanas a lorg:</target> - -<source>You can ignore this error to consider each folder as empty. The folders then will be created automatically during synchronization.</source> -<target>’S urrainn dhut a’ mhearachd seo a leigeil seachad ma tha thu airson ’s gun dèilig sinn ri gach pasgan mar gum biodh iad falamh. Thèid na pasgain a chruthachadh gu fèin-obrachail an uairsin rè an t-sioncronachaidh</target> - -<source>A folder input field is empty.</source> -<target>Tha co-dhiù aon raon pasgain ann a tha falamh.</target> - -<source>The corresponding folder will be considered as empty.</source> -<target>Thèid am pasgan a leanas a làimhseachadh mar phasgan falamh.</target> - -<source>The following folder paths are dependent from each other:</source> -<target>Tha slighean nam pasganan a leanas an eisimeil a chèile:</target> - -<source>File %x has an invalid date.</source> -<target>Tha ceann-là mì-dhligheach aig an fhaidhle %x.</target> - -<source>Date:</source> -<target>Ceann-là:</target> - -<source>Files %x have the same date but a different size.</source> -<target>Tha an dearbh cheann-là aig na faidhlichean %x ach chan eil am meud co-ionnann.</target> - -<source>Size:</source> -<target>Meud:</target> - -<source>Content comparison was skipped for excluded files %x.</source> -<target>Leumadh thairis air coimeas na susbaint mu choinneamh nam faidhlichean a chaidh an dùnadh às (%x).</target> - -<source>Items differ in attributes only</source> -<target>Chan eil diofar eatarra ach a thaobh an cuid bhuadhan</target> - -<source>Resolving symbolic link %x</source> -<target>Duilgheadas a’ rèiteachadh a’ symbolic link %x</target> - -<source>Comparing content of files %x</source> -<target>A’ dèanamh coimheas eadar na faidhlichean %x</target> - -<source>Generating file list...</source> -<target>A’ gintinn liosta nam faidhle...</target> - -<source>Starting comparison</source> -<target>A’ tòiseachadh air a’ choimeasadh</target> - -<source>Calculating sync directions...</source> -<target>Ag àireamhachadh comhairean an t-sioncronachaidh...</target> - -<source>Out of memory.</source> -<target>Chan eil cuimhne gu leòr ann.</target> - -<source>Item exists on left side only</source> -<target>Chan eil an nì seo ann ach air an taobh chlì</target> - -<source>Item exists on right side only</source> -<target>Chan eil an nì seo ann ach air an taobh deas</target> - -<source>Left side is newer</source> -<target>Tha an taobh clì nas ùire</target> - -<source>Right side is newer</source> -<target>Tha an taobh deas nas ùire</target> - -<source>Items have different content</source> -<target>Tha diofar susbaint sna nithean</target> - -<source>Both sides are equal</source> -<target>Tha an dà thaobh co-ionnann</target> - -<source>Conflict/item cannot be categorized</source> -<target>Tha còmhstri/nì ann nach urrainn dhuinn aithneachadh</target> - -<source>Copy new item to left</source> -<target>Cuir lethbhreac dhen nì ùr dhan taobh chlì</target> - -<source>Copy new item to right</source> -<target>Cuir lethbhreac dhen nì ùr dhan taobh deas</target> - -<source>Delete left item</source> -<target>Sguab às an nì air an taobh chlì</target> - -<source>Delete right item</source> -<target>Sguab às an nì air an taobh deas</target> - -<source>Move file on left</source> -<target>Gluais am faidhle a tha air an taobh chlì</target> - -<source>Move file on right</source> -<target>Gluais am faidhle a tha air an taobh deas</target> - -<source>Do nothing</source> -<target>Na dèan dad</target> - -<source>Update attributes on left</source> -<target>Ùraich na buadhan air an taobh chlì</target> - -<source>Update attributes on right</source> -<target>Ùraich na buadhan air an taobh deas</target> - -<source>Cannot read file %x.</source> -<target>Cha ghabh am faidhle %x a leughadh.</target> - -<source>Cannot write permissions of %x.</source> -<target>Cha ghabh ceadan %x a sgrìobhadh.</target> - -<source>Cannot write file %x.</source> -<target>Cha ghabh am faidhle %x a sgrìobhadh.</target> - -<source>Cannot move file %x to %y.</source> -<target>Cha ghabh am faidhle %x a ghluasad dha %y.</target> - -<source>Cannot enumerate directory %x.</source> -<target>Cha ghabh am pasgan %x àireamhachadh.</target> - -<source>Cannot read file attributes of %x.</source> -<target>Cha ghabh buadhan an fhaidhle %x a leughadh.</target> - -<source>Cannot open file %x.</source> -<target>Cha ghabh am faidhle %x fhosgladh.</target> - -<source>Cannot create directory %x.</source> -<target>Cha ghabh am pasgan %x a chruthachadh.</target> - -<source>Cannot delete directory %x.</source> -<target>Cha ghabh am pasgan %x a sguabadh às.</target> - -<source>Cannot delete file %x.</source> -<target>Cha ghabh am faidhle %x a sguabadh às.</target> - -<source>Cannot write modification time of %x.</source> -<target>Cha ghabh àm atharrachaidh %x a sgrìobhadh.</target> - -<source>Cannot determine final path for %x.</source> -<target>Chan urrainn dhuinn an t-slighe dheireannach airson %x a dhearbhadh.</target> - -<source>Cannot resolve symbolic link %x.</source> -<target>Cha ghabh an symbolic link %x fhuasgladh.</target> - -<source>Unable to move %x to the recycle bin.</source> -<target>Cha ghabh %x a ghluasad dhan bhiona.</target> - -<source>Cannot open directory %x.</source> -<target>Cha ghabh am pasgan %x fhosgladh.</target> - -<source>Incorrect command line:</source> -<target>Loidhne-àithne chearr:</target> - -<source>Error Code %x:</source> -<target>Còd na mearachd %x:</target> - -<source> -<pluralform>1 byte</pluralform> -<pluralform>%x bytes</pluralform> -</source> -<target> -<pluralform>%x byte</pluralform> -<pluralform>%x bytes</pluralform> -<pluralform>%x bytes</pluralform> -<pluralform>%x bytes</pluralform> -</target> - -<source>%x MB</source> -<target>%x MB</target> - -<source>%x KB</source> -<target>%x KB</target> - -<source>%x GB</source> -<target>%x GB</target> - -<source>Cannot load file %x.</source> -<target>Cha ghabh am faidhle %x a lorg.</target> - -<source>Database file %x is incompatible.</source> -<target>Chan eil am faidhle stòir-dhàta %x co-chòrdail.</target> - -<source>Initial synchronization:</source> -<target>A’ chiad sioncronachadh:</target> - -<source>Database file %x does not yet exist.</source> -<target>Chan eil am faidhle stòir-dhàta %x ann fhathast.</target> - -<source>Database file is corrupt:</source> -<target>Tha am faidhle stòir-dhàta coirbte:</target> - -<source>Database files do not share a common session.</source> -<target>Chan eil seisean an cumantas aig na faidhlichean stòir-dhàta.</target> - -<source>Searching for folder %x...</source> -<target>A’ lorg a’ phasgain %x...</target> - -<source>Cannot get process information.</source> -<target>Chan urrainn dhuinn greim fhaighinn air fiosrachadh a’ phròiseis.</target> - -<source>Waiting while directory is locked:</source> -<target>A’ feitheamh fhad ’s a thèid am pasgan a ghlasadh:</target> - -<source>Lock owner:</source> -<target>Glais an sealbhadair:</target> - -<source> -<pluralform>1 sec</pluralform> -<pluralform>%x sec</pluralform> -</source> -<target> -<pluralform>%x diog</pluralform> -<pluralform>%x dhiog</pluralform> -<pluralform>%x diogan</pluralform> -<pluralform>%x diog</pluralform> -</target> - -<source>Detecting abandoned lock...</source> -<target>A’ mothachadh ri glasan trèigte...</target> - -<source>Creating file %x</source> -<target>A’ cruthachadh an fhaidhle %x</target> - -<source>Items processed:</source> -<target>Nithean a tha deiseil:</target> - -<source>Items remaining:</source> -<target>Nithean a tha ri dhèanamh:</target> - -<source>Total time:</source> -<target>An ùine gu lèir:</target> - -<source>Error parsing file %x, row %y, column %z.</source> -<target>Mearachd le parsadh an fhaidhle %x, loidhne %y, colbh %z.</target> - -<source>Cannot set directory lock for %x.</source> -<target>Cha ghabh glas a’ phasgain airson %x a shuidheachadh.</target> - -<source>Scanning:</source> -<target>’Ga sganadh:</target> - -<source> -<pluralform>1 thread</pluralform> -<pluralform>%x threads</pluralform> -</source> -<target> -<pluralform>%x shnàithlean</pluralform> -<pluralform>%x shnàithlean</pluralform> -<pluralform>%x snàithleanan</pluralform> -<pluralform>%x snàithlean</pluralform> -</target> - -<source>/sec</source> -<target>/diog</target> - -<source>%x items/sec</source> -<target>%x nithean/diog</target> - -<source>Show in Explorer</source> -<target>Seall san taisgealaiche</target> - -<source>Open with default application</source> -<target>Fosgail leis an aplacaid bhunaiteach</target> - -<source>Browse directory</source> -<target>Rùraich am pasgan</target> - -<source>Cannot access the Volume Shadow Copy Service.</source> -<target>Chan fhaigh sinn cothrom air seirbheise lethbhreacan sgàil an draibh.</target> - -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Nach cleachd sibh an tionndadh 64 biot de FreeFileSync gus lethbhreacan-sgàile a chruthachadh air an t-siostam seo?</target> - -<source>Cannot determine volume name for %x.</source> -<target>Chan urrainn dhuinn ainm an draibh airson %x a dhearbhadh.</target> - -<source>Volume name %x is not part of file path %y.</source> -<target>Chan eil ainm an draibh %x ’na phàirt de shlighe an fhaodhle %y.</target> - -<source>Stop requested: Waiting for current operation to finish...</source> -<target>Dh’iarr thu oirnn sgur: A’ feitheamh ri crìoch na h-obrach làithreach...</target> - -<source>Unable to create time stamp for versioning:</source> -<target>Cha ghabh stampa ama a chruthachadh airson versioning:</target> - -<source>Drag && drop</source> -<target>Slaod ⁊ leig às</target> - -<source>Cannot find folder %x.</source> -<target>Chan urrainn dhuinn am pasgan %x a lorg</target> - -<source>Select a folder</source> -<target>Tagh pasgan</target> - -<source>&Open...</source> -<target>F&osgail...</target> - -<source>Save &as...</source> -<target>Sàbhail &mar...</target> - -<source>&File</source> -<target>&Faidhle</target> - -<source>&View help</source> -<target>&Faic a’ chobhair</target> - -<source>&About</source> -<target>&Mu dheidhinn</target> - -<source>&Help</source> -<target>&Cobhair</target> - -<source>Usage:</source> -<target>Cleachdadh:</target> - -<source>1. Select folders to watch.</source> -<target>1. Tagh na pasgain air an cumar sùil.</target> - -<source>2. Enter a command line.</source> -<target>2. Cuir a-steach àithne.</target> - -<source>3. Press 'Start'.</source> -<target>3. Briog air ”Tòisich”.</target> - -<source>To get started just import a .ffs_batch file.</source> -<target>Cha leig thu leas ach faidhle .ffs_batch ion-phortadh airson toiseach tòiseachaidh.</target> - -<source>Folders to watch:</source> -<target>Pasganan air an cumar sùil:</target> - -<source>Add folder</source> -<target>Cuir pasgan ris</target> - -<source>Remove folder</source> -<target>Thoir am pasgan air falbh</target> - -<source>Browse</source> -<target>Rùraich</target> - -<source>Idle time (in seconds):</source> -<target>Ùine ’na thàmh (ann an diogan):</target> - -<source>Idle time between last detected change and execution of command</source> -<target>An tàmh eadar an t-atharrachadh mu dheireadh agus gnìomhachadh na h-àithne</target> - -<source>Command line:</source> -<target>Loidhne-àithne:</target> - -<source> -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) -</source> -<target> -Thèid an loidhne-àithne a chur gu dol: -- ma dh’atharraicheas faidhlichean no fo-phasgain -- ma nochdas pasgain ùra (m.e. ma chuireas tu a-steach bioran USB) -</target> - -<source>&Start</source> -<target>Tòi&sich</target> - -<source>About</source> -<target>Mu dheidhinn</target> - -<source>Build: %x</source> -<target>Build: %x</target> - -<source>All files</source> -<target>Gach faidhle</target> - -<source>Automated Synchronization</source> -<target>Sioncronachadh fèin-obrachail</target> - -<source>Directory monitoring active</source> -<target>Tha na pasganan ’gam marasgladh</target> - -<source>Waiting until all directories are available...</source> -<target>A’ feitheamh gus am bi gach pasgan ri làimh...</target> - -<source>Error</source> -<target>Mearachd</target> - -<source>&Restore</source> -<target>&Aisig</target> - -<source>&Show error</source> -<target>&Seall a’ mhearachd</target> - -<source>&Quit</source> -<target>&Fàg</target> - -<source>&Retry</source> -<target>&Feuch ris a-rithist</target> - -<source>File content</source> -<target>Susbaint an fhaidhle</target> - -<source>File time and size</source> -<target>Ceann-là is meud</target> - -<source>Two way</source> -<target>An dà chomhair</target> - -<source>Mirror</source> -<target>Sgàthanaich</target> - -<source>Update</source> -<target>Ùraich</target> - -<source>Custom</source> -<target>Gnàthaichte</target> - -<source>Multiple...</source> -<target>Iomadh fear...</target> - -<source>Moving file %x to %y</source> -<target>A’ gluasad an fhaidhle %x gu %y</target> - -<source>Moving folder %x to %y</source> -<target>A’ gluasad a’ phasgain %x gu %y</target> - -<source>Moving symbolic link %x to %y</source> -<target>A’ gluasad an symbolic link %x gu %y</target> - -<source>Removing old versions...</source> -<target>A’ toirt air falbh nan seann tionndaidhean...</target> - -<source>Creating symbolic link %x</source> -<target>A’ cruthachadh an symbolic link %x</target> - -<source>Creating folder %x</source> -<target>A’ cruthachadh a’ phasgain %x</target> - -<source>Verifying file %x</source> -<target>A’ dearbhadh an fhaidhle %x</target> - -<source>Updating attributes of %x</source> -<target>Ag ùrachadh buadhan %x</target> - -<source>Creating a Volume Shadow Copy for %x...</source> -<target>A’ cruthachadh lethbhreac sgàil draibh airson %x...</target> - -<source>Target folder %x already existing.</source> -<target>Tha am pasgan-uidhe %x ann mu thràth.</target> - -<source>Target folder input field must not be empty.</source> -<target>Chan fhaod raon a’ phasgain a bhith falamh.</target> - -<source>Source folder %x not found.</source> -<target>Cha deach am pasgan tùsail %x a lorg.</target> - -<source>Please enter a target folder for versioning.</source> -<target>Cuir a-steach pasgan-targaide a chum versioning.</target> - -<source>The following items have unresolved conflicts and will not be synchronized:</source> -<target>Tha còmstrithean aig na nithean a leanas fhathast is cha dèid an sioncronachadh:</target> - -<source>Not enough free disk space available in:</source> -<target>Chan eil rùm saor gu leòr air an diosga:</target> - -<source>Required:</source> -<target>Na tha feum air:</target> - -<source>Available:</source> -<target>Na tha ri làimh:</target> - -<source>Multiple folder pairs write to a common subfolder. Please review your configuration.</source> -<target>Tha grunnan a phaidhrichean phasganan a’ sgrìobhadh anns an aon fho-phasgan. Thoir sùil air an rèiteachadh</target> - -<source>Synchronizing folder pair:</source> -<target>A’ sioncronachadh paidhir nam pasgan:</target> - -<source>Generating database...</source> -<target>A’ gintinn an stòir-dhàta...</target> - -<source>job name</source> -<target>ainm na h-obrach</target> - -<source>Synchronization stopped</source> -<target>Sguireadh dhen t-sioncronachadh</target> - -<source>Stopped</source> -<target>Chaidh stad a chur air</target> - -<source>Synchronization completed with errors</source> -<target>Chaidh an sioncronachadh a choileanadh ach bha mearachdan ann</target> - -<source>Synchronization completed with warnings</source> -<target>Chaidh a shioncronachadh ach bha rabhaidhean ann</target> - -<source>Warning</source> -<target>Rabhadh</target> - -<source>Nothing to synchronize</source> -<target>Chan eil dad ri shioncronachadh</target> - -<source>Synchronization completed successfully</source> -<target>Chaidh a shioncronachadh</target> - -<source>You can switch to FreeFileSync's main window to resolve this issue.</source> -<target>’S urrainn dhut leum a ghearradh gu prìomh-uinneag FreeFileSync gus an duilgheadas seo fhuasgladh.</target> - -<source>&Don't show this warning again</source> -<target>Na seall an rabha&dh seo a-rithist</target> - -<source>&Ignore</source> -<target>&Leig seachad</target> - -<source>&Switch</source> -<target>&Dèan suids</target> - -<source>Switching to FreeFileSync's main window</source> -<target>A’ gearradh leum gu prìomh-uinneag FreeFileSync</target> - -<source> -<pluralform>Automatic retry in 1 second...</pluralform> -<pluralform>Automatic retry in %x seconds...</pluralform> -</source> -<target> -<pluralform>A’ feuchainn ris às ùr gu fèin-obrachail ann an %x diog...</pluralform> -<pluralform>A’ feuchainn ris às ùr gu fèin-obrachail ann an %x dhiog...</pluralform> -<pluralform>A’ feuchainn ris às ùr gu fèin-obrachail ann an %x diogan...</pluralform> -<pluralform>A’ feuchainn ris às ùr gu fèin-obrachail ann an %x diog...</pluralform> -</target> - -<source>&Ignore subsequent errors</source> -<target>Le&ig seachad mearachdan às a dhèidh seo</target> - -<source>Retrying operation...</source> -<target>A’ feuchainn ris a-rithist...</target> - -<source>Serious Error</source> -<target>Mearachd mhòr</target> - -<source>Check for Program Updates</source> -<target>Thoir sùil ach a bheil ùrachadh ann airson a’ phrògraim</target> - -<source>A new version of FreeFileSync is available:</source> -<target>Tha tionndadh ùr de FreeFileSync ann:</target> - -<source>Download now?</source> -<target>A bheil thu airson a luchdadh a-nuas an-dràsta?</target> - -<source>&Download</source> -<target>&Luchdaich a-nuas</target> - -<source>FreeFileSync is up to date.</source> -<target>Tha FreeFileSync cho ùr ’s a ghabhas.</target> - -<source>Cannot find current FreeFileSync version number online. Do you want to check manually?</source> -<target>Chan urrainn dhuinn àireamh an tionndaidh làithrich aig FreeFileSync a lorg air loidhne. A bheil thu airson sùil a thoirt thu fhèin?</target> - -<source>&Check</source> -<target>&Sgrùd</target> - -<source>Symlink</source> -<target>Symlink</target> - -<source>Folder</source> -<target>Pasgan</target> - -<source>Full path</source> -<target>Slighe shlan</target> - -<source>Name</source> -<target>Ainm</target> - -<source>Relative folder</source> -<target>Pasgan dàimheach</target> - -<source>Base folder</source> -<target>Bun-phasgan</target> - -<source>Size</source> -<target>Meud</target> - -<source>Date</source> -<target>Ceann-là</target> - -<source>Extension</source> -<target>Leudachan</target> - -<source>Category</source> -<target>Roinn seòrsa</target> - -<source>Action</source> -<target>Gnìomh</target> - -<source>Local comparison settings</source> -<target>Roghainnean coimeis ionadail</target> - -<source>Local synchronization settings</source> -<target>Roghainnean sioncronachaidh ionadail</target> - -<source>Local filter</source> -<target>Criathrag ionadail</target> - -<source>Active</source> -<target>Gnìomhach</target> - -<source>None</source> -<target>Chan eil gin</target> - -<source>Remove local settings</source> -<target>Thoir air falbh na roghainnean ionadail</target> - -<source>Clear local filter</source> -<target>Falamhaich a’ chriathrag iondail</target> - -<source>Copy</source> -<target>Dèan lethbhreac</target> - -<source>Paste</source> -<target>Cuir ann</target> - -<source>Local Synchronization Settings</source> -<target>Roghainnean sioncronachaidh ionadail</target> - -<source>&New</source> -<target>Ù&r</target> - -<source>&Save</source> -<target>&Sàbhail</target> - -<source>Save as &batch job...</source> -<target>Sàbhail mar obair &baidse...</target> - -<source>Start &comparison</source> -<target>Tòisich air a’ &choimheas</target> - -<source>Start &synchronization</source> -<target>Tòisich air an t-&sioncronachadh</target> - -<source>&Options</source> -<target>R&oghainnean</target> - -<source>&Language</source> -<target>&Cànan</target> - -<source>&Find...</source> -<target>L&org...</target> - -<source>&Reset layout</source> -<target>&Ath-shuidhich a’ cho-dhealbhachd</target> - -<source>&Export file list...</source> -<target>Às-p&hortaich liosta nam faidhle...</target> - -<source>&Tools</source> -<target>&Innealan</target> - -<source>&Check for new version</source> -<target>Thoir sùil a&ch a bheil tionndadh ùr ann</target> - -<source>&Check now</source> -<target>&Thoir sùil an-dràsta</target> - -<source>Check &automatically once a week</source> -<target>Thoir sùil gu &fèin-obrachail turas san t-seachdain</target> - -<source>Cancel</source> -<target>Sguir dheth</target> - -<source>Compare</source> -<target>Dèan coimeas</target> - -<source>Synchronize</source> -<target>Dèan sioncronachadh</target> - -<source>Add folder pair</source> -<target>Cuir paidhir de phasgain ris</target> - -<source>Remove folder pair</source> -<target>Thoir air falbh am paidhir seo de phasgain</target> - -<source>Swap sides</source> -<target>Cuir an dà thaobh an àite a chèile</target> - -<source>Close search bar</source> -<target>Dùin bàr an luirg</target> - -<source>Find:</source> -<target>Lorg:</target> - -<source>Match case</source> -<target>An aire do litrichean mòra ’s beaga</target> - -<source>New</source> -<target>Ùr</target> - -<source>Open...</source> -<target>Fosgail...</target> - -<source>Save</source> -<target>Sàbhail</target> - -<source>Save as...</source> -<target>Sàbhail mar...</target> - -<source>View type:</source> -<target>Seall an seòrsa:</target> - -<source>Select view:</source> -<target>Tagh an seòrsa:</target> - -<source>Statistics:</source> -<target>Stats:</target> - -<source>Number of files and folders that will be deleted</source> -<target>Àireamh nam faidhle ’s nam pasgan a thèid a sguabadh às</target> - -<source>Number of files and folders that will be created</source> -<target>Àireamh nam faidhle ’s nam pasgan a thèid a chruthachadh</target> - -<source>Total bytes to copy</source> -<target>Co mheud baidht a thèid lethbhreac a dhèanamh dhiubh</target> - -<source>Use local settings:</source> -<target>Cleachd na roghainnean ionadail</target> - -<source>Select a variant:</source> -<target>Tagh eug-samhail:</target> - -<source>Identify equal files by comparing modification time and size.</source> -<target>Lorg faidhlichean a tha co-ionnann le bhith a’ dèanamh coimeas eadar an cuid meud is ama.</target> - -<source>Identify equal files by comparing the file content.</source> -<target>Lorg faidhlichean a tha co-ionnann le bhith a’ dèanamh coimeas eadar susbaint nam faidhlichean.</target> - -<source>Consider file times with specified offset as equal</source> -<target>Làimhsich amannan fhaidhlichean aig a bheil an offset sin mar gum biodh iad co-ionnann</target> - -<source>Handle daylight saving time</source> -<target>Aire ri tìde an t-samhraidh</target> - -<source>More information</source> -<target>Barrachd fiosrachaidh</target> - -<source>Local settings:</source> -<target>Roghainnean ionadail</target> - -<source>Include:</source> -<target>Gabh a-staigh:</target> - -<source>Exclude:</source> -<target>Dùin a-mach:</target> - -<source>Show examples</source> -<target>Seall buill-eisimpleir</target> - -<source>Time span:</source> -<target>An rainse ama:</target> - -<source>File size:</source> -<target>Meud an fhaidhle:</target> - -<source>Minimum:</source> -<target>Air a’ char as lugha:</target> - -<source>Maximum:</source> -<target>Air a’ char as motha:</target> - -<source>Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair.</source> -<target>Tagh riaghailteach criathraidh gus seòrsachan àraidh de dh’fhaidhlichean fhàgail às an t-sioncronachadh. Cuir a-steach slighean fhaidhlichean a-rèir paidhir an dà phasgan aca.</target> - -<source>C&lear</source> -<target>Fala&mhaich</target> - -<source>Detect moved files</source> -<target>Mothaich do dh’fhaidhlichean a chaidh a ghluasad</target> - -<source>Detect synchronization directions with the help of database files</source> -<target>Mothaich do chomhair an t-sioncronachaidh le taic o fhaidhlichean stòir-dhàta</target> - -<source>Delete files:</source> -<target>Sguab às na faidhlichean:</target> - -<source>&Permanent</source> -<target>&Buan</target> - -<source>Delete or overwrite files permanently</source> -<target>Sguab às no sgrìobh thairis air faidhlichean gu buan</target> - -<source>&Recycle bin</source> -<target>A&m biona</target> - -<source>Back up deleted and overwritten files in the recycle bin</source> -<target>Dèan lethbhreac-glèidhidh de dh’fhaidhlichean sa bhiona a chaidh a sguabadh às no a chaidh sgrìobhadh thairis orra</target> - -<source>&Versioning</source> -<target>&Versioning</target> - -<source>Move files to a user-defined folder</source> -<target>Gluais na faidhlichean gu àite a shònraich an cleachdaiche</target> - -<source>Naming convention:</source> -<target>Gnàthas nan ainmean:</target> - -<source>Handle errors:</source> -<target>Mearachdan làimhseachaidh:</target> - -<source>Hide all error and warning messages</source> -<target>Falaich gach teachdaireachd mu mhearachdan no rabhaidhean</target> - -<source>&Pop-up</source> -<target>&Priob-uinneag</target> - -<source>Show pop-up on errors or warnings</source> -<target>Seall priob-uinneagan a thaobh mhearachdan no rabhaidhean</target> - -<source>On completion:</source> -<target>An dèidh coileanaidh:</target> - -<source>OK</source> -<target>Ceart ma-thà</target> - -<source>Start synchronization now?</source> -<target>A bheil thu airson tòiseachadh air an t-sioncronachadh an-dràsta?</target> - -<source>Variant:</source> -<target>Eug-samhail:</target> - -<source>&Don't show this dialog again</source> -<target>&Na seall an còmhradh seo a-rithist</target> - -<source>Items found:</source> -<target>Rudan a chaidh a lorg:</target> - -<source>Time remaining:</source> -<target>An ùine a tha air fhàgail:</target> - -<source>Time elapsed:</source> -<target>An ùine a dh’fhalbh:</target> - -<source>Synchronizing...</source> -<target>A’ sioncronachadh...</target> - -<source>Minimize to notification area</source> -<target>Lùghdach ’s gluais gu raon nam brathan</target> - -<source>Bytes copied:</source> -<target>Bytes a chaidh lethbhreac a dhèanamh dhiubh</target> - -<source>Close</source> -<target>Dùin</target> - -<source>&Pause</source> -<target>&Cuir ’na stad</target> - -<source>Stop</source> -<target>Sguir dheth</target> - -<source>Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x</source> -<target>Cruthaich faidhle batch airson sioncronachadh a dh’obraicheas gun thusa a bhith an làthair. Gus a thòiseachadh, dèan briogadh dùbailte air an fhaidhle seo ann am planadair shaothraichean: %x</target> - -<source>&Stop</source> -<target>&Sguir dheth</target> - -<source>Stop synchronization at first error</source> -<target>Sguir dhen t-sioncronachadh aig a’ chiad mhearachd</target> - -<source>Run minimized</source> -<target>Ruith e sa mhodh lùghdaichte</target> - -<source>Save log:</source> -<target>Sàbhail an loga:</target> - -<source>Limit:</source> -<target>Crìoch:</target> - -<source>Limit maximum number of log files</source> -<target>Cuingich an àireamh as motha de dh’fhaidhlichean an loga</target> - -<source>How can I schedule a batch job?</source> -<target>Ciamar a chuireas mi obair baidse air an sgeideal?</target> - -<source>The following settings are used for all synchronization jobs.</source> -<target>Thèid na roghainnean a leanas a chleachdadh airson a h-uile obair sioncronachaidh.</target> - -<source>Fail-safe file copy</source> -<target>Dèan lethbhreac nach gabh fàilligeadh</target> - -<source> -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. -</source> -<target> -Cuir lethbhreac dheth ann am faidhle sealach (*.ffs_tmp) mus sgrìobhar thairis air an targaid. -Nì seo cinnteach gum bi fuasgladh ann ma thachras mearachd mhòr. -</target> - -<source>(recommended)</source> -<target>(mholamaid seo)</target> - -<source>Copy locked files</source> -<target>Dèan lethbhreac de dh’fhaidhlichean glaiste</target> - -<source>Copy shared or locked files using the Volume Shadow Copy Service.</source> -<target>Dèan lethbhreac de dh’fhaidhlichean co-roinnte no glaiste le seirbheis lethbhreacan sgàil an draibh.</target> - -<source>(requires administrator rights)</source> -<target>(feumaidh seo còraichean rianadair)</target> - -<source>Copy file access permissions</source> -<target>Dèan lethbhreac de cheadan-inntrigidh nam faidhle</target> - -<source>Transfer file and folder permissions.</source> -<target>Tar-chuir am faidhle ’s ceadan a’ phasgain</target> - -<source>Automatic retry on error:</source> -<target>Feuch ris a-rithist gu fèin-obrachail ri linn mearachd:</target> - -<source>Retry count:</source> -<target>Co mheud turas a dh’fheudadh ris a-rithist:</target> - -<source>Delay (in seconds):</source> -<target>An dàil (ann an diogan):</target> - -<source>Customize context menu:</source> -<target>Gnàthaich an clàr-taice co-theacsail</target> - -<source>Description</source> -<target>Tuairisgeul</target> - -<source>Show hidden dialogs again</source> -<target>Seall na còmraidhean falaichte a-rithist</target> - -<source>Show all permanently hidden dialogs and warning messages again</source> -<target>Seall na còmraidhean is rabhaidhean falaichte uile a-rithist</target> - -<source>&Default</source> -<target>&Bun-roghainn</target> - -<source>Source code written in C++ using:</source> -<target>Chaidh an còd tùsail a sgrìobhadh ann an C++ le taic:</target> - -<source>If you like FreeFileSync:</source> -<target>Ma tha FreeFileSync a’ còrdadh riut:</target> - -<source>Feedback and suggestions are welcome</source> -<target>Tha sinn a’ cur fàilte mhòr air beachd is moladh sam bith</target> - -<source>Homepage</source> -<target>An duilleag-dhachaigh</target> - -<source>Email</source> -<target>Post-d</target> - -<source>Published under the GNU General Public License</source> -<target>Air fhoillseachadh fo GNU General Public License</target> - -<source>Many thanks for localization:</source> -<target>Tha sinn fada an comain nan daoine a leanas airson eadar-theangachadh:</target> - -<source>Save as Batch Job</source> -<target>Sàbhail mar obair baidse</target> - -<source>Delete Items</source> -<target>Sguab às na nithean</target> - -<source>Options</source> -<target>Roghainnean</target> - -<source>Select Time Span</source> -<target>Tagh an rainse ama</target> - -<source>Main Bar</source> -<target>Am prìomh-bhàr</target> - -<source>Folder Pairs</source> -<target>Paidhrichean nam pasganan</target> - -<source>Find</source> -<target>Lorg</target> - -<source>View Settings</source> -<target>Seall na roghainnean</target> - -<source>Configuration</source> -<target>Rèiteachadh</target> - -<source>Overview</source> -<target>Foir-shealladh</target> - -<source>Confirm</source> -<target>Dearbh</target> - -<source> -<pluralform>Do you really want to execute the command %y for one item?</pluralform> -<pluralform>Do you really want to execute the command %y for %x items?</pluralform> -</source> -<target> -<pluralform>A bheil thu cinnteach gu bheil thu airson an àithne seo (%y) a ruith air %x nì?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson an àithne seo (%y) a ruith air %x nì?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson an àithne seo (%y) a ruith air %x nithean?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson an àithne seo (%y) a ruith air %x nì?</pluralform> -</target> - -<source>&Execute</source> -<target>&Cuir an gnìomh</target> - -<source> -<pluralform>1 directory</pluralform> -<pluralform>%x directories</pluralform> -</source> -<target> -<pluralform>%x phasgan</pluralform> -<pluralform>%x phasgan</pluralform> -<pluralform>%x pasgain</pluralform> -<pluralform>%x pasgan</pluralform> -</target> - -<source> -<pluralform>1 file</pluralform> -<pluralform>%x files</pluralform> -</source> -<target> -<pluralform>%x fhaidhle</pluralform> -<pluralform>%x fhaidhle</pluralform> -<pluralform>%x faidhlichean</pluralform> -<pluralform>%x faidhle</pluralform> -</target> - -<source> -<pluralform>Showing %y of 1 row</pluralform> -<pluralform>Showing %y of %x rows</pluralform> -</source> -<target> -<pluralform>A’ sealltainn %y à %x ràgh</pluralform> -<pluralform>A’ sealltainn %y à %x ràgh</pluralform> -<pluralform>A’ sealltainn %y à %x ràghan</pluralform> -<pluralform>A’ sealltainn %y à %x ràgh</pluralform> -</target> - -<source>Set direction:</source> -<target>Suidhich a’ chomhair:</target> - -<source>multiple selection</source> -<target>Ioma-thaghadh</target> - -<source>Include via filter:</source> -<target>Gach a-steach slighe na criathraige:</target> - -<source>Exclude via filter:</source> -<target>Dùin a-mach le criathrag:</target> - -<source>Include temporarily</source> -<target>Gabh a-steach gu sealach</target> - -<source>Exclude temporarily</source> -<target>Dùin a-mach gu sealach</target> - -<source>Delete</source> -<target>Sguab às</target> - -<source>Include all</source> -<target>Gabh a-steach na h-uile</target> - -<source>Exclude all</source> -<target>Dùin a-mach na h-uile</target> - -<source>Show icons:</source> -<target>Meud nan ìomhaigheagan:</target> - -<source>Small</source> -<target>Beag</target> - -<source>Medium</source> -<target>Meadhanach</target> - -<source>Large</source> -<target>Mòr</target> - -<source>Select time span...</source> -<target>Tagh an raon-ama...</target> - -<source>Show "%x"</source> -<target>Seall “%x”</target> - -<source>Last session</source> -<target>An seisean mu dheireadh</target> - -<source>Folder Comparison and Synchronization</source> -<target>Coimeas eadar na pasgain is sioncronachadh</target> - -<source>Configuration saved</source> -<target>Chaidh an rèiteachadh a shàbhaladh</target> - -<source>FreeFileSync batch</source> -<target>FreeFileSync batch</target> - -<source>Do you want to save changes to %x?</source> -<target>An sàbhail sinn dhut na h-atharraichean air %x?</target> - -<source>Never save &changes</source> -<target>Na sàbhail atharrai&chean idir</target> - -<source>Do&n't save</source> -<target>&Na sàbhail</target> - -<source>Synchronization Settings</source> -<target>Roghainnean an t-sioncronachaidh</target> - -<source>Clear filter</source> -<target>Falamhaich a’ chriathrag</target> - -<source>Show files that exist on left side only</source> -<target>Na seall ach faidhlichean a tha air an taobh chlì a-mhàin</target> - -<source>Show files that exist on right side only</source> -<target>Na seall ach faidhlichean a tha air an taobh deas a-mhàin</target> - -<source>Show files that are newer on left</source> -<target>Seall faidhlichean a tha nas ùire air an taobh chlì</target> - -<source>Show files that are newer on right</source> -<target>Seall faidhlichean a tha nas ùire air an taobh deas</target> - -<source>Show files that are equal</source> -<target>Seall faidhlichean a tha co-ionnann</target> - -<source>Show files that are different</source> -<target>Seall faidhlichean a tha eadar-dhealaichte</target> - -<source>Show conflicts</source> -<target>Seall còmhstrithean</target> - -<source>Show files that will be created on the left side</source> -<target>Seall faidhlichean a thèid a chruthachadh air an taobh chlì</target> - -<source>Show files that will be created on the right side</source> -<target>Seall faidhlichean a thèid a chruthachadh air an taobh deas</target> - -<source>Show files that will be deleted on the left side</source> -<target>Seall faidhlichean a thèid a sguabadh às air an taobh chlì</target> - -<source>Show files that will be deleted on the right side</source> -<target>Seall faidhlichean a thèid a sguabadh às air an taobh deas</target> - -<source>Show files that won't be copied</source> -<target>Seall faidhlichean nach dèid lethbhreac a dhèanamh dhiubh</target> - -<source>Show filtered or temporarily excluded files</source> -<target>Seall faidhlichean a tha ’gan dùnadh a-mach no air an criathradh a-mach an-dràsta fhèin</target> - -<source>Filter</source> -<target>Criathrag</target> - -<source>All files are in sync</source> -<target>Tha gach faidhle sioncronaichte</target> - -<source>Cannot find %x</source> -<target>Chan urrainn dhuinn %x a lorg.</target> - -<source>Comma-separated values</source> -<target>Luachan le cromagan eatarra</target> - -<source>File list exported</source> -<target>Chaidh liosta nam faidhle às-phortadh</target> - -<source>Searching for program updates...</source> -<target>A’ lorg ùrachaidhean a’ phrògraim...</target> - -<source>Close progress dialog</source> -<target>Dùin còmhradh an adhartais</target> - -<source>Log off</source> -<target>Clàraich a-mach</target> - -<source>Standby</source> -<target>Cuir ’na fhuireachas</target> - -<source>Shut down</source> -<target>Dùin sìos an siostam</target> - -<source>Scanning...</source> -<target>’Ga sganadh...</target> - -<source>Comparing content...</source> -<target>A’ dèanamh coimeas eadar an cuid susbaint...</target> - -<source>Info</source> -<target>Fiosrachadh</target> - -<source>Select all</source> -<target>Tagh na h-uile</target> - -<source>Paused</source> -<target>’Na stad</target> - -<source>Initializing...</source> -<target>A’ tòiseachadh...</target> - -<source>Completed</source> -<target>Deiseil</target> - -<source>&Continue</source> -<target>Lean air adhar&t</target> - -<source>Progress</source> -<target>Adhartas</target> - -<source>Log</source> -<target>Logaich</target> - -<source> -<pluralform>Do you really want to move the following item to the recycle bin?</pluralform> -<pluralform>Do you really want to move the following %x items to the recycle bin?</pluralform> -</source> -<target> -<pluralform>A bheil thu cinnteach gu bheil thu airson an %x nì seo a chur dhan bhiona?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson an %x nì seo a chur dhan bhiona?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson na %x nithean seo a chur dhan bhiona?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson an %x nì seo a chur dhan bhiona?</pluralform> -</target> - -<source>Move</source> -<target>Gluais</target> - -<source> -<pluralform>Do you really want to delete the following item?</pluralform> -<pluralform>Do you really want to delete the following %x items?</pluralform> -</source> -<target> -<pluralform>A bheil thu cinnteach gu bheil thu airson an %x nì seo a sguabadh às?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson na %x nì seo a sguabadh às?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson na %x nithean seo a sguabadh às?</pluralform> -<pluralform>A bheil thu cinnteach gu bheil thu airson na %x nì seo a sguabadh às?</pluralform> -</target> - -<source>Preferences</source> -<target>Roghainnean</target> - -<source>Integrate external applications into context menu. The following macros are available:</source> -<target>Amalaichidh seo aplacaidean air an taobh a-muigh dhan chlàr-taice cho-theacsail. Tha na macrothan a leanas ri làimh:</target> - -<source>- full file or folder name</source> -<target>- ainm slàn dhen fhaidhle no dhen phasgan</target> - -<source>- folder part only</source> -<target>- cuid a’ phasgain a-mhàin</target> - -<source>- Other side's counterpart to %item_path%</source> -<target>- Seise %item_folder% aig a’ choimpiutair eile</target> - -<source>- Other side's counterpart to %item_folder%</source> -<target>- Seise %item_folder% aig a’ choimpiutair eile</target> - -<source>Show hidden dialogs and warning messages again?</source> -<target>A bheil thu airson na còmhraidhean is rabhaidhean falaichte a shealltainn a-rithist?</target> - -<source>&Show</source> -<target>&Seall</target> - -<source>Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database.</source> -<target>Lorg is sìolaich na h-atharraichean air an dà thaobh. Mothaichidh sinn do rudan a chaidh a sguabadh às, a ghluasad no còmhstrithean gu fèin-obrachail le stòr-dàta.</target> - -<source>Create a mirror backup of the left folder by adapting the right folder to match.</source> -<target>Cruthaich lethbhreac-glèidhidh sgàthanaichte dhen phasgan air an taobh clì ’s am pasgan air an taobh deas ’ga atharrachadh d’ a rèir.</target> - -<source>Copy new and updated files to the right folder.</source> -<target>Cuir lethbhreac de dh’fhaidhlichean ùra ’s ùraichte dhan phasgan air an taobh deas.</target> - -<source>Configure your own synchronization rules.</source> -<target>Sònraich riaghailtean sioncronachaidh thu fhèin.</target> - -<source>Today</source> -<target>An-diugh</target> - -<source>This week</source> -<target>An t-seachdain seo</target> - -<source>This month</source> -<target>Am mìos seo</target> - -<source>This year</source> -<target>Am bliadhna</target> - -<source>Last x days</source> -<target>Na x làithean seo chaidh</target> - -<source>Byte</source> -<target>Baidht</target> - -<source>KB</source> -<target>KB</target> - -<source>MB</source> -<target>MB</target> - -<source>Replace</source> -<target>Cuir ’na àite</target> - -<source>Move files and replace if existing</source> -<target>Gluais na faidhlichean ’s cuir iad an àite na feadhainn làithreach ma tha gin ann</target> - -<source>Time stamp</source> -<target>Stampa ama</target> - -<source>Append a time stamp to each file name</source> -<target>Cuir stampa ama ri gach ainm faidhle</target> - -<source>Comparison</source> -<target>Coimeas</target> - -<source>Synchronization</source> -<target>Sioncronachadh</target> - -<source>Leave as unresolved conflict</source> -<target>Fàg mar còmhstri gun rèiteachadh</target> - -<source>File</source> -<target>Faidhle</target> - -<source>YYYY-MM-DD hhmmss</source> -<target>BBBB-MM-LL uummdd</target> - -<source>Files</source> -<target>Faidhlichean</target> - -<source>Items</source> -<target>Nithean</target> - -<source>Percentage</source> -<target>Ceudad</target> - -<source>Unable to register to receive system messages.</source> -<target>Chan urrainn dhuinn clàradh gus teachdaireachdan an t-siostaim fhaighinn.</target> - -<source>Cannot monitor directory %x.</source> -<target>Chan urrainn dhuinn sùil a chumail air %x.</target> - -<source>The file is locked by another process:</source> -<target>Tha am faidhle glaiste aig pròiseas eile:</target> - -<source>Cannot write file attributes of %x.</source> -<target>Chan urrainn dhuinn buadhan an fhaidhle %x a sgrìobhadh.</target> - -<source>Cannot read security context of %x.</source> -<target>Cha ghabh susbaint tèarainteachd %x a leughadh.</target> - -<source>Cannot write security context of %x.</source> -<target>Cha ghabh susbaint tèarainteachd %x a sgrìobhadh.</target> - -<source>Cannot read permissions of %x.</source> -<target>Cha ghabh ceadan %x a leughadh.</target> - -<source>Cannot find system function %x.</source> -<target>Chan urrainn dhuinn foincsean an t-siostaim %x a lorg.</target> - -<source>Cannot copy file %x to %y.</source> -<target>Cha ghabh lethbhreac an fhaidhle %x a chur gu %y.</target> - -<source>Type of item %x is not supported:</source> -<target>Chan eil taic ri nì dhen t-seòrsa %x:</target> - -<source>%x TB</source> -<target>%x TB</target> - -<source>%x PB</source> -<target>%x PB</target> - -<source> -<pluralform>1 min</pluralform> -<pluralform>%x min</pluralform> -</source> -<target> -<pluralform>%x mhionaid</pluralform> -<pluralform>%x mhionaid</pluralform> -<pluralform>%x mionaidean</pluralform> -<pluralform>%x mionaid</pluralform> -</target> - -<source> -<pluralform>1 hour</pluralform> -<pluralform>%x hours</pluralform> -</source> -<target> -<pluralform>%x uair a thìde</pluralform> -<pluralform>%x uair a thìde</pluralform> -<pluralform>%x uairean a thìde</pluralform> -<pluralform>%x uair a thìde</pluralform> -</target> - -<source> -<pluralform>1 day</pluralform> -<pluralform>%x days</pluralform> -</source> -<target> -<pluralform>%x latha</pluralform> -<pluralform>%x latha</pluralform> -<pluralform>%x làithean</pluralform> -<pluralform>%x latha</pluralform> -</target> - -<source>Cannot set privilege %x.</source> -<target>Cha ghabh a’ phribhleid %x a shuidheachadh.</target> - -<source>Unable to suspend system sleep mode.</source> -<target>Chan urrainn dhuinn modh cadal an t-siostaim a chur dheth.</target> - -<source>Cannot change process I/O priorities.</source> -<target>Chan urrainn dhuinn na prìomhachasan I/O atharrachadh.</target> - -<source>Checking recycle bin failed for folder %x.</source> -<target>Dh’fhàillig sgrùdadh a’ bhiona airson a’ phasgain %x.</target> - diff --git a/FreeFileSync/Build/Languages/polish.lng b/FreeFileSync/Build/Languages/polish.lng index 841cc6d5..1f684e18 100644 --- a/FreeFileSync/Build/Languages/polish.lng +++ b/FreeFileSync/Build/Languages/polish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generowanie listy plików...</target> +<source>Fail-safe file copy</source> +<target>Bezpieczne kopiowanie</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopiuj zablokowane pliki</target> + +<source>Copy file access permissions</source> +<target>Kopiuj uprawnienia plików</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Kompresowanie</target> @@ -291,8 +324,8 @@ Przesłany: %y bajtów <source>Error Code %x:</source> <target>Kod błędu %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Błąd podczas łączenia z serwerem %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Przesłany: %y bajtów <source>Cannot access the Volume Shadow Copy Service.</source> <target>Nie można uzyskać dostępu do usługi Volume Shadow Copy.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Usługa shadow copy jest aktywna tylko w wersji 64 bitowej programu FreeFileSync.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Nie można określić nazwy dysku dla %x.</target> @@ -584,6 +617,9 @@ Komenda jest wykonywana gdy: <source>Updating attributes of %x</source> <target>Aktualizowanie atrybutów %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Nie można zapisać atrybutów %x.</target> + <source>%x and %y have different content.</source> <target>%x i %y mają różną zawartość.</target> @@ -790,7 +826,7 @@ Komenda jest wykonywana gdy: <target>Rozpocznij &synchronizację</target> <source>&Actions</source> -<target>&akcje</target> +<target>&Akcje</target> <source>&Preferences</source> <target>&Ustawienia</target> @@ -882,6 +918,9 @@ Komenda jest wykonywana gdy: <source>Folder pair:</source> <target>Para folderów:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Korzystaj z ustawień lokalnych:</target> @@ -942,6 +981,9 @@ Komenda jest wykonywana gdy: <source>C&lear</source> <target>&Wyczyść</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Kierunki synchronizacji określane są przy pomocy bazy danych</target> + <source>Detect moved files</source> <target>Wykryj przeniesione pliki</target> @@ -956,24 +998,21 @@ Komenda jest wykonywana gdy: - Wykrywanie niedostępne podczas pierwszej synchronizacji </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Kierunki synchronizacji określane są przy pomocy bazy danych</target> - <source>Delete files:</source> <target>Usuwanie plików:</target> -<source>&Permanent</source> -<target>&Permanentne</target> - -<source>Delete or overwrite files permanently</source> -<target>Usuń lub nadpisz pliki na stałe</target> - <source>&Recycle bin</source> <target>&Kosz systemowy</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Przechowuj pliki, które zostały usunięte lub nadpisane w koszu</target> +<source>&Permanent</source> +<target>&Permanentne</target> + +<source>Delete or overwrite files permanently</source> +<target>Usuń lub nadpisz pliki na stałe</target> + <source>&Versioning</source> <target>&Wersjonowanie</target> @@ -986,15 +1025,15 @@ Komenda jest wykonywana gdy: <source>Handle errors:</source> <target>Obsługa błędów:</target> -<source>Hide all error and warning messages</source> -<target>Ukryj wszystkie informacje błędach i ostrzeżeniach</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Pokazuj okna pop-up dla błędów i ostrzeżeń</target> +<source>Hide all error and warning messages</source> +<target>Ukryj wszystkie informacje błędach i ostrzeżeniach</target> + <source>On completion:</source> <target>Po zakończeniu:</target> @@ -1100,9 +1139,6 @@ Komenda jest wykonywana gdy: <source>The following settings are used for all synchronization jobs.</source> <target>Następujące ustawienia stosowane są do wszystkich zadań synchronizacji.</target> -<source>Fail-safe file copy</source> -<target>Bezpieczne kopiowanie</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>(recommended)</source> <target>(rekomendowane)</target> -<source>Copy locked files</source> -<target>Kopiuj zablokowane pliki</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopiuj pliki współdzielone lub zablokowane używając usługi Volume Shadow Copy.</target> <source>(requires administrator rights)</source> <target>(wymagane uprawnienia administratora)</target> -<source>Copy file access permissions</source> -<target>Kopiuj uprawnienia plików</target> - <source>Transfer file and folder permissions.</source> <target>kopiuj uprawnienia plików i katalogów.</target> @@ -1611,9 +1641,6 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>Percentage</source> <target>Procentowo</target> -<source>Internet access failed.</source> -<target>Błąd połączenia Internetowego.</target> - <source>Check for Program Updates</source> <target>Sprawdź dostępne aktualizacje.</target> @@ -1623,18 +1650,24 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>FreeFileSync is up to date.</source> <target>Posiadasz aktualną wersję FreeFileSync.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nie można połączyć się z www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>S&prawdź</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Nie można odnaleźć funkcji systemowej %x.</target> + <source>Unable to register to receive system messages.</source> <target>Błąd podczas rejestrowania do odbioru komunikatów systemowych.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nie można zarejestrować powiadomień urządzenia dla %x.</target> @@ -1644,9 +1677,6 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>The file is locked by another process:</source> <target>Plik jest zablokowany przez inny proces:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nie można zapisać atrybutów %x.</target> - <source>Cannot read security context of %x.</source> <target>Nie można odczytać ustawień bezpieczeństwa %x.</target> @@ -1662,9 +1692,6 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>%x is not a regular directory name.</source> <target>%x nie jest zwykłą nazwą katalogu.</target> -<source>Cannot find system function %x.</source> -<target>Nie można odnaleźć funkcji systemowej %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Nie można skopiować pliku %x do %y.</target> @@ -1728,6 +1755,9 @@ program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadp <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Plik konfiguracyjny %x jest niekompletny. Zostaną ustawione domyśle wartości dla brakujących elementów.</target> +<source>Internet access failed.</source> +<target>Błąd połączenia Internetowego.</target> + <source>Prepare installation</source> <target>Przygotuj instalację</target> diff --git a/FreeFileSync/Build/Languages/portuguese.lng b/FreeFileSync/Build/Languages/portuguese.lng index a374f87d..77181f08 100644 --- a/FreeFileSync/Build/Languages/portuguese.lng +++ b/FreeFileSync/Build/Languages/portuguese.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>A gerar lista ficheiros...</target> +<source>Fail-safe file copy</source> +<target>Cópia à prova de falhas</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copiar ficheiros bloqueados</target> + +<source>Copy file access permissions</source> +<target>Copiar permissões de acesso do ficheiro</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>A iniciar a comparação</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Código de erro %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Falhou em conectar no servidor SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Não é possível aceder ao serviço Volume Shadow Copy.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Utilize a versão 64-bit do FreeFileSync para criar cópias sombra neste sistema.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Não é possível determinar o nome do volume para %x.</target> @@ -581,6 +614,9 @@ O comando é executado se: <source>Updating attributes of %x</source> <target>Actualizar atributos de %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Não é possível escrever os atributos de %x.</target> + <source>%x and %y have different content.</source> <target>%x e %y tem conteúdos distintos.</target> @@ -878,6 +914,9 @@ O comando é executado se: <source>Folder pair:</source> <target>Par da pasta:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Usar opções locais:</target> @@ -938,6 +977,9 @@ O comando é executado se: <source>C&lear</source> <target>&Limpar</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detectar a direcção de sincronização com a ajuda de base de dados</target> + <source>Detect moved files</source> <target>Detectar ficheiros movidos</target> @@ -952,24 +994,21 @@ O comando é executado se: - A detecção não está disponível para a primeira sincronização </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detectar a direcção de sincronização com a ajuda de base de dados</target> - <source>Delete files:</source> <target>Eliminar ficheiros:</target> -<source>&Permanent</source> -<target>&Permanente</target> - -<source>Delete or overwrite files permanently</source> -<target>Apagar ou substituir ficheiros permanentemente</target> - <source>&Recycle bin</source> <target>&Reciclagem</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Fazer backup dos ficheiros apagados e substituidos na reciclagem</target> +<source>&Permanent</source> +<target>&Permanente</target> + +<source>Delete or overwrite files permanently</source> +<target>Apagar ou substituir ficheiros permanentemente</target> + <source>&Versioning</source> <target>Controlo &Versões</target> @@ -982,15 +1021,15 @@ O comando é executado se: <source>Handle errors:</source> <target>Tratar erros:</target> -<source>Hide all error and warning messages</source> -<target>Ocultar todas as mensagens de erro/aviso</target> - <source>&Pop-up</source> <target>&Popup</target> <source>Show pop-up on errors or warnings</source> <target>Mostrar popup em caso de erros ou avisos</target> +<source>Hide all error and warning messages</source> +<target>Ocultar todas as mensagens de erro/aviso</target> + <source>On completion:</source> <target>Ao completar:</target> @@ -1096,9 +1135,6 @@ O comando é executado se: <source>The following settings are used for all synchronization jobs.</source> <target>As seguintes definições são usadas para todas as sincronizações.</target> -<source>Fail-safe file copy</source> -<target>Cópia à prova de falhas</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>(recommended)</source> <target>(recomendado)</target> -<source>Copy locked files</source> -<target>Copiar ficheiros bloqueados</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copiar ficheiros partilhados ou bloqueados usando o serviço Volume Shadow Copy.</target> <source>(requires administrator rights)</source> <target>(requer permissões de administrador)</target> -<source>Copy file access permissions</source> -<target>Copiar permissões de acesso do ficheiro</target> - <source>Transfer file and folder permissions.</source> <target>Transferir permissões de pasta e ficheiro.</target> @@ -1600,9 +1630,6 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>Percentage</source> <target>Percentagem</target> -<source>Internet access failed.</source> -<target>Falha ao acessar a Internet.</target> - <source>Check for Program Updates</source> <target>Procurar actualizações do programa</target> @@ -1612,18 +1639,24 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>FreeFileSync is up to date.</source> <target>FreeFileSync está actualizado.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Não é possível ligar a www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Verificar</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Não é possível encontrar a função do sistema %x.</target> + <source>Unable to register to receive system messages.</source> <target>Não foi possível registar para receber mensagens do sistema.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Não é possível registrar as notificações do dispositivo para %x.</target> @@ -1633,9 +1666,6 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>The file is locked by another process:</source> <target>O ficheiro está bloqueado por outro processo:</target> -<source>Cannot write file attributes of %x.</source> -<target>Não é possível escrever os atributos de %x.</target> - <source>Cannot read security context of %x.</source> <target>Não é possível ler o contexto de segurança %x.</target> @@ -1651,9 +1681,6 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>%x is not a regular directory name.</source> <target>%x não é um nome regular de directório.</target> -<source>Cannot find system function %x.</source> -<target>Não é possível encontrar a função do sistema %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Não é possível copiar o ficheiro %x para %y.</target> @@ -1714,6 +1741,9 @@ Isto garante um estado consistente mesmo em caso de falha grave. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>O ficheiro de instalação %x está incompleto. Os elementos em falta serão definidos para seus valores iniciais.</target> +<source>Internet access failed.</source> +<target>Falha ao acessar a Internet.</target> + <source>Prepare installation</source> <target>A preparar a instalação</target> diff --git a/FreeFileSync/Build/Languages/portuguese_br.lng b/FreeFileSync/Build/Languages/portuguese_br.lng index 485f32e3..8276dd8b 100644 --- a/FreeFileSync/Build/Languages/portuguese_br.lng +++ b/FreeFileSync/Build/Languages/portuguese_br.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Gerando lista de arquivos...</target> +<source>Fail-safe file copy</source> +<target>Cópia de arquivos a prova de falhas</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copiar arquivos bloqueados (em uso)</target> + +<source>Copy file access permissions</source> +<target>Copiar permissões de acesso aos arquivos</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Iniciando comparação</target> @@ -291,8 +324,8 @@ Atual: %y bytes <source>Error Code %x:</source> <target>Código do Erro %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Falha ao conectar ao servidor SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Atual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Não foi possível acessar o Serviço de Cópia de Sombra de Volume.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Por favor, utilize a versão 64 bits do FreeFileSync para criar cópias de sombra neste sistema.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Não foi possível determinar o nome do volume para %x.</target> @@ -581,6 +614,9 @@ O comando é disparado se: <source>Updating attributes of %x</source> <target>Atualizando atributos de %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Não foi possível escrever os atributos de arquivo de %x.</target> + <source>%x and %y have different content.</source> <target>%x e %y têm conteúdos diferentes.</target> @@ -878,6 +914,9 @@ O comando é disparado se: <source>Folder pair:</source> <target>Par de pastas:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Usar configurações locais:</target> @@ -938,6 +977,9 @@ O comando é disparado se: <source>C&lear</source> <target>&Limpar</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detecta a direção de sincronização com a ajuda do arquivo de banco de dados</target> + <source>Detect moved files</source> <target>Detectar arquivos movidos</target> @@ -952,24 +994,21 @@ O comando é disparado se: - Detecção não disponível para a primeira sincronização </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detecta a direção de sincronização com a ajuda do arquivo de banco de dados</target> - <source>Delete files:</source> <target>Apagar arquivos:</target> -<source>&Permanent</source> -<target>&Permanente</target> - -<source>Delete or overwrite files permanently</source> -<target>Apaga ou substitui os arquivos permanentemente</target> - <source>&Recycle bin</source> <target>&Lixeira</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Faz uma cópia dos arquivos apagados ou substituídos na Lixeira</target> +<source>&Permanent</source> +<target>&Permanente</target> + +<source>Delete or overwrite files permanently</source> +<target>Apaga ou substitui os arquivos permanentemente</target> + <source>&Versioning</source> <target>Controle de &versão</target> @@ -982,15 +1021,15 @@ O comando é disparado se: <source>Handle errors:</source> <target>Tratamento de erros:</target> -<source>Hide all error and warning messages</source> -<target>Oculta todas as mensagens de erros e avisos</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Mostra pop-up em caso de erros ou avisos</target> +<source>Hide all error and warning messages</source> +<target>Oculta todas as mensagens de erros e avisos</target> + <source>On completion:</source> <target>Ao finalizar:</target> @@ -1096,9 +1135,6 @@ O comando é disparado se: <source>The following settings are used for all synchronization jobs.</source> <target>As seguintes configurações são utilizadas para todas as tarefas de sincronização.</target> -<source>Fail-safe file copy</source> -<target>Cópia de arquivos a prova de falhas</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>(recommended)</source> <target>(recomendado)</target> -<source>Copy locked files</source> -<target>Copiar arquivos bloqueados (em uso)</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copia arquivos compartilhados ou bloqueados usando o Serviço de Cópia de Sombra de Volume.</target> <source>(requires administrator rights)</source> <target>(requer direitos de administrador)</target> -<source>Copy file access permissions</source> -<target>Copiar permissões de acesso aos arquivos</target> - <source>Transfer file and folder permissions.</source> <target>Transfere permissões de arquivos e pastas.</target> @@ -1600,9 +1630,6 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>Percentage</source> <target>Percentual</target> -<source>Internet access failed.</source> -<target>Acesso à internet falhou.</target> - <source>Check for Program Updates</source> <target>Verificar se existem atualizações</target> @@ -1612,18 +1639,24 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>FreeFileSync is up to date.</source> <target>FreeFileSync está atualizado.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Não foi possível conectar a www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Verificar</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Não foi possível localizar a função de sistema %x.</target> + <source>Unable to register to receive system messages.</source> <target>Não foi possível registrar para receber mensagens do sistema.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Não foi possível registrar notificações para %x.</target> @@ -1633,9 +1666,6 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>The file is locked by another process:</source> <target>O arquivo está bloqueado por outro processo:</target> -<source>Cannot write file attributes of %x.</source> -<target>Não foi possível escrever os atributos de arquivo de %x.</target> - <source>Cannot read security context of %x.</source> <target>Não foi possível ler o contexto de segurança de %x.</target> @@ -1651,9 +1681,6 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>%x is not a regular directory name.</source> <target>%x não é um nome de diretório regular.</target> -<source>Cannot find system function %x.</source> -<target>Não foi possível localizar a função de sistema %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Não foi possível copiar o arquivo %x para %y.</target> @@ -1714,6 +1741,9 @@ Isto garante um estado consistente mesmo em caso de erro grave. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Arquivo de configuração %x está incompleto. Os elementos faltantes serão configurados com seus valores padrões.</target> +<source>Internet access failed.</source> +<target>Acesso à internet falhou.</target> + <source>Prepare installation</source> <target>Preparando a instalação</target> diff --git a/FreeFileSync/Build/Languages/romanian.lng b/FreeFileSync/Build/Languages/romanian.lng index 68448fa7..f301041f 100644 --- a/FreeFileSync/Build/Languages/romanian.lng +++ b/FreeFileSync/Build/Languages/romanian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generez lista de file...</target> +<source>Fail-safe file copy</source> +<target>Copiază filele în modul protejat la eșec [fail-safe]</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copiază filele partajate [shared] sau zăvorîte [locked]</target> + +<source>Copy file access permissions</source> +<target>Copiază permisiunile de acces ale filelor</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Pornesc compararea</target> @@ -291,8 +324,8 @@ Actuală: %y baiți <source>Error Code %x:</source> <target>Cod de Eroare %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Conectare eșuată la serverul SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Actuală: %y baiți <source>Cannot access the Volume Shadow Copy Service.</source> <target>Nu pot accesa Serviciul de Conservare a Volumelor [Volume Shadow Copy].</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Folosește versiunea pe 64-biți a FreeFileSync pentru a crea conservări (copii de rezervă) pe acest sistem.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Nu pot determina numele volumului pentru %x.</target> @@ -584,6 +617,9 @@ Comanda este declanșată dacă: <source>Updating attributes of %x</source> <target>Actualizez atributele lui %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Nu pot scrie atributele de filă ale lui %x.</target> + <source>%x and %y have different content.</source> <target>%x și %y au conținut diferit.</target> @@ -882,6 +918,9 @@ Comanda este declanșată dacă: <source>Folder pair:</source> <target>Perechea de Dosare:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Folosește setările locale:</target> @@ -942,6 +981,9 @@ Comanda este declanșată dacă: <source>C&lear</source> <target>C&urăță</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detectează direcțiile de sincronizare cu ajutorul filelor bază de date</target> + <source>Detect moved files</source> <target>Detectează filele mutate</target> @@ -956,24 +998,21 @@ Comanda este declanșată dacă: - Detectarea nu-i disponibilă la prima sincronizare </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detectează direcțiile de sincronizare cu ajutorul filelor bază de date</target> - <source>Delete files:</source> <target>Ștergerea Filelor:</target> -<source>&Permanent</source> -<target>&Definitivă</target> - -<source>Delete or overwrite files permanently</source> -<target>Filele sînt șterse sau suprascrise în mod definitiv, fără a mai putea fi recuperate</target> - <source>&Recycle bin</source> <target>&Reciclator</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Conservă [back up] în Reciclator filele șterse sau suprascrise</target> +<source>&Permanent</source> +<target>&Definitivă</target> + +<source>Delete or overwrite files permanently</source> +<target>Filele sînt șterse sau suprascrise în mod definitiv, fără a mai putea fi recuperate</target> + <source>&Versioning</source> <target>&Versionare</target> @@ -986,15 +1025,15 @@ Comanda este declanșată dacă: <source>Handle errors:</source> <target>Gestionarea Erorilor:</target> -<source>Hide all error and warning messages</source> -<target>Mesajele de eroare și de avertizare nu sînt arătate</target> - <source>&Pop-up</source> <target>&Popîc</target> <source>Show pop-up on errors or warnings</source> <target>În caz de erori sau avertizări este arătată o fereastră popîc [popup]</target> +<source>Hide all error and warning messages</source> +<target>Mesajele de eroare și de avertizare nu sînt arătate</target> + <source>On completion:</source> <target>La terminare:</target> @@ -1100,9 +1139,6 @@ Comanda este declanșată dacă: <source>The following settings are used for all synchronization jobs.</source> <target>Setările următoare sînt folosite pentru toate sarcinile de sincronizare.</target> -<source>Fail-safe file copy</source> -<target>Copiază filele în modul protejat la eșec [fail-safe]</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>(recommended)</source> <target>(recomandat)</target> -<source>Copy locked files</source> -<target>Copiază filele partajate [shared] sau zăvorîte [locked]</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Filele partajate sau zăvorîte sînt copiate folosind Serviciul de Conservare a Volumelor din Windows [Volume Shadow Copy].</target> <source>(requires administrator rights)</source> <target>(necesită drepturi de Administrator)</target> -<source>Copy file access permissions</source> -<target>Copiază permisiunile de acces ale filelor</target> - <source>Transfer file and folder permissions.</source> <target>Sînt transferate și permisiunile de accesare NTFS ale filelor și dosarelor (Atenție: doar pentru utilizatorii avansați!).</target> @@ -1221,7 +1251,7 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <target>&Descarcă</target> <source>A new version of FreeFileSync is available:</source> -<target>Este disponibilă o versiune nouă a softului:</target> +<target></target> <source>Confirm</source> <target>Confirmă</target> @@ -1611,9 +1641,6 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>Percentage</source> <target>Procent</target> -<source>Internet access failed.</source> -<target>Accesul la internet a eșuat.</target> - <source>Check for Program Updates</source> <target>Caută Actualizări ale Programului</target> @@ -1621,10 +1648,7 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <target>Vrei s-o descarci acum ?</target> <source>FreeFileSync is up to date.</source> -<target>Ai deja ultima versiune a softului.</target> - -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nu pot face conectarea la www.freefilesync.org.</target> +<target></target> <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> @@ -1632,9 +1656,18 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>&Check</source> <target>&Verifică</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Nu pot găsi funcția de sistem %x.</target> + <source>Unable to register to receive system messages.</source> <target>Nu pot înregistra softul pentru a primi mesaje de la sistemul de operare.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nu pot înregistra notificările dispozitivului pentru %x.</target> @@ -1644,9 +1677,6 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>The file is locked by another process:</source> <target>Fila este zăvorîtă [locked] de alt proces:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nu pot scrie atributele de filă ale lui %x.</target> - <source>Cannot read security context of %x.</source> <target>Nu pot citi contextul de securitate pentru %x.</target> @@ -1662,9 +1692,6 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>%x is not a regular directory name.</source> <target>%x nu este un nume regulamentar de dosar.</target> -<source>Cannot find system function %x.</source> -<target>Nu pot găsi funcția de sistem %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Nu pot copia fila %x în %y.</target> @@ -1728,6 +1755,9 @@ Aceasta garantează consecvența stării filelor chiar și în cazul apariției <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Fila configurație %x este incompletă. Elementele lipsă vor fi setate la valorile implicite.</target> +<source>Internet access failed.</source> +<target>Accesul la internet a eșuat.</target> + <source>Prepare installation</source> <target>Pregătirea Instalării</target> diff --git a/FreeFileSync/Build/Languages/russian.lng b/FreeFileSync/Build/Languages/russian.lng index a988dc6f..b97defb5 100644 --- a/FreeFileSync/Build/Languages/russian.lng +++ b/FreeFileSync/Build/Languages/russian.lng @@ -7,15 +7,6 @@ <plural_definition>n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<11 || n%100>14) ? 1 : 2</plural_definition> </header> -<source>Download the regular version from the FreeFileSync homepage now?</source> -<target></target> - -<source>This FreeFileSync installer for donors has reached its daily installation limit.</source> -<target></target> - -<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> -<target></target> - <source>Both sides have changed since last synchronization.</source> <target>Со времени последней синхронизации с обеих сторон произошли изменения.</target> @@ -160,6 +151,39 @@ <source>Generating file list...</source> <target>Создание списка файлов...</target> +<source>Fail-safe file copy</source> +<target>Отказоустойчивое копирование файла</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Копирование заблокированных файлов</target> + +<source>Copy file access permissions</source> +<target>Копирование прав доступа к файлам</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Начать сравнение</target> @@ -300,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Код ошибки %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Не удается соединиться с SFTP сервером %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -417,8 +441,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Невозможно получить доступ к службе Теневого Копирования Тома.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Пожалуйста, используйте 64-разрядную версию FreeFileSync для создания теневых копий на этой системе.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Невозможно определить имя тома для %x.</target> @@ -593,6 +617,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Обновление атрибутов %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Невозможно записать атрибуты файла %x.</target> + <source>%x and %y have different content.</source> <target>%x и %y имеют разное содержание.</target> @@ -891,6 +918,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Пара папок:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Использовать локальные настройки:</target> @@ -951,6 +981,9 @@ The command is triggered if: <source>C&lear</source> <target>&Очистить</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Обнаружение направления синхронизации с помощью базы данных</target> + <source>Detect moved files</source> <target>Обнаруживать перемещенные файлы</target> @@ -965,24 +998,21 @@ The command is triggered if: - Обнаружение не доступно для первой синхронизации </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Обнаружение направления синхронизации с помощью базы данных</target> - <source>Delete files:</source> <target>Удаление файлов:</target> -<source>&Permanent</source> -<target>&Удалять безвозвратно</target> - -<source>Delete or overwrite files permanently</source> -<target>Удалять или перезаписывать файлы, не помещая в "Корзину"</target> - <source>&Recycle bin</source> <target>В "&Корзину"</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Делать резервную копию удаленных и перезаписанных файлов в "Корзине"</target> +<source>&Permanent</source> +<target>&Удалять безвозвратно</target> + +<source>Delete or overwrite files permanently</source> +<target>Удалять или перезаписывать файлы, не помещая в "Корзину"</target> + <source>&Versioning</source> <target>&Архивировать</target> @@ -995,15 +1025,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Обработка ошибкок:</target> -<source>Hide all error and warning messages</source> -<target>Скрывать все ошибки и сообщения с предупреждениями</target> - <source>&Pop-up</source> <target>&Всплывающие окна</target> <source>Show pop-up on errors or warnings</source> <target>Показывать всплывающие окна при ошибках и предупреждениях</target> +<source>Hide all error and warning messages</source> +<target>Скрывать все ошибки и сообщения с предупреждениями</target> + <source>On completion:</source> <target>По завершению:</target> @@ -1109,9 +1139,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>Следующие настройки используются для всех заданий синхронизации.</target> -<source>Fail-safe file copy</source> -<target>Отказоустойчивое копирование файла</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1124,18 +1151,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(рекомендовано)</target> -<source>Copy locked files</source> -<target>Копирование заблокированных файлов</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Копирование общих или заблокированных файлов с использованием службы Теневого Копирования Тома.</target> <source>(requires administrator rights)</source> <target>(требуются права Администратора)</target> -<source>Copy file access permissions</source> -<target>Копирование прав доступа к файлам</target> - <source>Transfer file and folder permissions.</source> <target>Передача прав доступа к файлам/папкам.</target> @@ -1620,9 +1641,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Проценты</target> -<source>Internet access failed.</source> -<target>Отсутствует доступ в Интернет.</target> - <source>Check for Program Updates</source> <target>Проверка обновления программы</target> @@ -1632,15 +1650,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>У Вас самая последняя версия FreeFileSync.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Невозможно соединиться с www.freefilesync.org.</target> +<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> +<target></target> <source>&Check</source> <target>&Проверить</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Невозможно найти системную функцию %x.</target> + <source>Unable to register to receive system messages.</source> <target>Невозможно зарегистрироваться для получения системных сообщений.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Не удалось зарегистрировать уведомления устройств для %x.</target> @@ -1650,9 +1677,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Файл заблокирован другим процессом:</target> -<source>Cannot write file attributes of %x.</source> -<target>Невозможно записать атрибуты файла %x.</target> - <source>Cannot read security context of %x.</source> <target>Невозможно прочитать контекст безопасности %x.</target> @@ -1668,9 +1692,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x не является обычным именем папки.</target> -<source>Cannot find system function %x.</source> -<target>Невозможно найти системную функцию %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Невозможно скопировать файл %x в %y.</target> @@ -1734,6 +1755,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Файл конфигурации %x является неполным. Недостающие элементы будут установлены в значения по умолчанию.</target> +<source>Internet access failed.</source> +<target>Отсутствует доступ в Интернет.</target> + <source>Prepare installation</source> <target>Подготовка установки</target> @@ -1806,3 +1830,9 @@ This guarantees a consistent state even in case of a serious error. <source>Thanks for your donation and support!</source> <target>Спасибо за Ваше пожертвование и поддержку!</target> +<source>This FreeFileSync installer for donors has reached its daily installation limit.</source> +<target></target> + +<source>Download the regular version from the FreeFileSync homepage now?</source> +<target></target> + diff --git a/FreeFileSync/Build/Languages/serbian.lng b/FreeFileSync/Build/Languages/serbian.lng index a741dd76..1e7475d1 100644 --- a/FreeFileSync/Build/Languages/serbian.lng +++ b/FreeFileSync/Build/Languages/serbian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Стварам листу датотека...</target> +<source>Fail-safe file copy</source> +<target>Копирање заштићено од грешака</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Копирај закључане датотеке</target> + +<source>Copy file access permissions</source> +<target>Копирај овлашћења приступа датотекама</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Покретање упоређивања</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Грешка број %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Није успело успостављање везе са SFTP сервером %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Не могу приступити Volume Shadow Copy сервису.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Молимо користите FreeFileSync 64-битну верзију за израду shadow копија на овом систему.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Не могу утврдити назив партиције за %x.</target> @@ -584,6 +617,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Обнављам атрибуте од %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Не могу уписати атрибуте од %x.</target> + <source>%x and %y have different content.</source> <target>%x и %y имају различит садржај.</target> @@ -882,6 +918,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Фолдерски пар:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Употреби локална подешавања:</target> @@ -942,6 +981,9 @@ The command is triggered if: <source>C&lear</source> <target>О&бриши</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Уочи синхронизацијске смерове уз помоћ датотека базе</target> + <source>Detect moved files</source> <target>Уочи премештене датотеке</target> @@ -956,24 +998,21 @@ The command is triggered if: - Детекција није доступна за прву синхронизацију </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Уочи синхронизацијске смерове уз помоћ датотека базе</target> - <source>Delete files:</source> <target>Обриши датотеке:</target> -<source>&Permanent</source> -<target>&Трајно</target> - -<source>Delete or overwrite files permanently</source> -<target>Трајно избриши или замени датотеке</target> - <source>&Recycle bin</source> <target>&Корпа за смеће</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Направи резервне копије обрисаних и замењених датотека у Корпи за смеће</target> +<source>&Permanent</source> +<target>&Трајно</target> + +<source>Delete or overwrite files permanently</source> +<target>Трајно избриши или замени датотеке</target> + <source>&Versioning</source> <target>&Верзионирање</target> @@ -986,15 +1025,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Обрада грешака:</target> -<source>Hide all error and warning messages</source> -<target>Сакриј све грешке и упозорења</target> - <source>&Pop-up</source> <target>&Искачући прозор</target> <source>Show pop-up on errors or warnings</source> <target>Прикажи искачући прозор при грешкама и упозорењима</target> +<source>Hide all error and warning messages</source> +<target>Сакриј све грешке и упозорења</target> + <source>On completion:</source> <target>При завршетку:</target> @@ -1100,9 +1139,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>Следећа подешавања се користе за све синхронизацијске задатке.</target> -<source>Fail-safe file copy</source> -<target>Копирање заштићено од грешака</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(препоручено)</target> -<source>Copy locked files</source> -<target>Копирај закључане датотеке</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Копирај дељене или закључане датотеке користећи Volume Shadow Copy сервис.</target> <source>(requires administrator rights)</source> <target>(потребна администраторска права)</target> -<source>Copy file access permissions</source> -<target>Копирај овлашћења приступа датотекама</target> - <source>Transfer file and folder permissions.</source> <target>Премести овлашћења приступа датотека и фолдера.</target> @@ -1611,9 +1641,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Проценат</target> -<source>Internet access failed.</source> -<target>Приступ интернету није успео.</target> - <source>Check for Program Updates</source> <target>Провери постојање надоградње програма</target> @@ -1623,18 +1650,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync је ажуриран.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Не може се успоставити веза са www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Провера</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Не могу пронаћи системску функцију %x.</target> + <source>Unable to register to receive system messages.</source> <target>Није могућа регистрација примања системских порука.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Не могу регистровати нотификацију уређаја за %x.</target> @@ -1644,9 +1677,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Датотека је блокирана другим процесом:</target> -<source>Cannot write file attributes of %x.</source> -<target>Не могу уписати атрибуте од %x.</target> - <source>Cannot read security context of %x.</source> <target>Не могу читати безбедносни садржај %x.</target> @@ -1662,9 +1692,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x није регуларно име фолдера.</target> -<source>Cannot find system function %x.</source> -<target>Не могу пронаћи системску функцију %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Не могу копирати датотеку %x на %y.</target> @@ -1728,6 +1755,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Конфигурациона датотека %x није комплетна. Недостајући елементи биће постављени на њихове подразумеване вредности.</target> +<source>Internet access failed.</source> +<target>Приступ интернету није успео.</target> + <source>Prepare installation</source> <target>Припремање инсталације</target> diff --git a/FreeFileSync/Build/Languages/slovak.lng b/FreeFileSync/Build/Languages/slovak.lng index 74dd1f68..76dbaee4 100644 --- a/FreeFileSync/Build/Languages/slovak.lng +++ b/FreeFileSync/Build/Languages/slovak.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Vytváranie zoznamu súborov...</target> +<source>Fail-safe file copy</source> +<target>Bezpečné kopírovanie súborov</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopírovať zamknuté súbory</target> + +<source>Copy file access permissions</source> +<target>Kopírovať prístupové oprávnenie súborov</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Spustiť porovnávania</target> @@ -291,8 +324,8 @@ Aktuálne: %y b <source>Error Code %x:</source> <target>Chybový kód %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Nepodarilo sa pripojiť k SFTP servru %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Aktuálne: %y b <source>Cannot access the Volume Shadow Copy Service.</source> <target>Nie je prístup k službe Tieňové kópie.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Prosím použite FreeFileSync 64-bitovou verziu pre použitie služby Tieňové kópie.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>>Nie je možné zistiť názov jednotky pre %x.</target> @@ -584,6 +617,9 @@ Príkaz bude spustení ak: <source>Updating attributes of %x</source> <target>Aktualizácia atribútov súboru %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Nie je možné zapísať atribúty súboru %x.</target> + <source>%x and %y have different content.</source> <target>%x a %y majú odlišný obsah.</target> @@ -882,6 +918,9 @@ Príkaz bude spustení ak: <source>Folder pair:</source> <target>Dvojica priečinkov:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Použiť lokálne nastavenie:</target> @@ -942,6 +981,9 @@ Príkaz bude spustení ak: <source>C&lear</source> <target>Vy&mazať</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Určiť smer synchronizácie pomocou databázy</target> + <source>Detect moved files</source> <target>Detekcia presunutých súborov</target> @@ -956,24 +998,21 @@ Príkaz bude spustení ak: - Detekcia rozdielov je dostupná až po prvej synchronizácií </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Určiť smer synchronizácie pomocou databázy</target> - <source>Delete files:</source> <target>Zmazanie súborov:</target> -<source>&Permanent</source> -<target>&Trvale</target> - -<source>Delete or overwrite files permanently</source> -<target>Zmazať alebo prepísať súbory natrvalo</target> - <source>&Recycle bin</source> <target>&Kôš</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Použiť Kôš pri zmazaní alebo prepisu súborov</target> +<source>&Permanent</source> +<target>&Trvale</target> + +<source>Delete or overwrite files permanently</source> +<target>Zmazať alebo prepísať súbory natrvalo</target> + <source>&Versioning</source> <target>&Archívovanie</target> @@ -986,15 +1025,15 @@ Príkaz bude spustení ak: <source>Handle errors:</source> <target>Spracovanie chýb:</target> -<source>Hide all error and warning messages</source> -<target>Skryť všetky chyby a varovania</target> - <source>&Pop-up</source> <target>&Hlásenie</target> <source>Show pop-up on errors or warnings</source> <target>Zobraziť hlásenie pri chybe alebo varovaní</target> +<source>Hide all error and warning messages</source> +<target>Skryť všetky chyby a varovania</target> + <source>On completion:</source> <target>Po dokončení:</target> @@ -1100,9 +1139,6 @@ Príkaz bude spustení ak: <source>The following settings are used for all synchronization jobs.</source> <target>Toto nastavenie je platné pre všetky synchronizačné úlohy.</target> -<source>Fail-safe file copy</source> -<target>Bezpečné kopírovanie súborov</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1112,18 +1148,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(doporučené)</target> -<source>Copy locked files</source> -<target>Kopírovať zamknuté súbory</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopírovať zdielané alebo zamknuté súbory pomocou služby Tieňové kópie zväzkov.</target> <source>(requires administrator rights)</source> <target>(vyžaduje práva správcu)</target> -<source>Copy file access permissions</source> -<target>Kopírovať prístupové oprávnenie súborov</target> - <source>Transfer file and folder permissions.</source> <target>Preniesť prístupové oprávnenie súborov a priečinkov.</target> @@ -1608,9 +1638,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Percentný podiel</target> -<source>Internet access failed.</source> -<target>Nie je prístup k internetu.</target> - <source>Check for Program Updates</source> <target>Hľadanie aktualizácií programu</target> @@ -1620,18 +1647,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>FreeFileSync je aktuálny.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Nie je možné sa pripojiť k www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Kontrola</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Nie je možné nájsť systémovú funkciu %x.</target> + <source>Unable to register to receive system messages.</source> <target>Nepodarilo sa registrovať k odberu systémových správ.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Nepodarilo sa registrovať správy zaiadenia %x.</target> @@ -1641,9 +1674,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Súbor je uzamknutý iným procesom:</target> -<source>Cannot write file attributes of %x.</source> -<target>Nie je možné zapísať atribúty súboru %x.</target> - <source>Cannot read security context of %x.</source> <target>Nie je možné načítať prístupové práva pre %x.</target> @@ -1659,9 +1689,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x nie je platným názvom adresára.</target> -<source>Cannot find system function %x.</source> -<target>Nie je možné nájsť systémovú funkciu %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Nie je možné kopírovať súbor %x do %y.</target> @@ -1725,6 +1752,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Konfiguračný súbor %x je nekompletný. Chybajúce položky budú nahradené predvolenými hodnotami.</target> +<source>Internet access failed.</source> +<target>Nie je prístup k internetu.</target> + <source>Prepare installation</source> <target>Príprava inštalácie</target> diff --git a/FreeFileSync/Build/Languages/slovenian.lng b/FreeFileSync/Build/Languages/slovenian.lng index 1b6d116d..1d867d17 100644 --- a/FreeFileSync/Build/Languages/slovenian.lng +++ b/FreeFileSync/Build/Languages/slovenian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Ustvarjam seznam datotek...</target> +<source>Fail-safe file copy</source> +<target>Kopiranje datotek varno pred odpovedjo</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopiraj zaklenjene datoteke</target> + +<source>Copy file access permissions</source> +<target>Kopiraj dovoljenja dostopov datoteke</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Začenjam primerjavo</target> @@ -291,8 +324,8 @@ Dejansko: %y bajtov <source>Error Code %x:</source> <target>Koda napake %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Neuspešna povezava na SFTP server %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -411,8 +444,8 @@ Dejansko: %y bajtov <source>Cannot access the Volume Shadow Copy Service.</source> <target>Ne morem dostopati do Volume Shadov Copy servisa.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Prosim uporabite 64-bitno različico FreeFileSync za ustvarjanje senčnih kopij na tem sistemu.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Ne morem določiti ime nosilca za %x.</target> @@ -587,6 +620,9 @@ Ukaz se sproži če: <source>Updating attributes of %x</source> <target>Posodabljam atribute od %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Ne morem zapisati datotečnih atributov od %x.</target> + <source>%x and %y have different content.</source> <target>%x in %y imata različno vsebino.</target> @@ -886,6 +922,9 @@ Ukaz se sproži če: <source>Folder pair:</source> <target>Par map:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Uporabi lokalne nastavitve:</target> @@ -946,6 +985,9 @@ Ukaz se sproži če: <source>C&lear</source> <target>&Počisti</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Zaznaj smer sinhnorizacije s pomočjo datotek podatkovne baze</target> + <source>Detect moved files</source> <target>Zaznaj premaknjene datoteke</target> @@ -960,24 +1002,21 @@ Ukaz se sproži če: - Zaznavanje ni na voljo pri prvem sinhroniziranju </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Zaznaj smer sinhnorizacije s pomočjo datotek podatkovne baze</target> - <source>Delete files:</source> <target>Izbriši datoteke:</target> -<source>&Permanent</source> -<target>&Dokončno</target> - -<source>Delete or overwrite files permanently</source> -<target>Trajno izbriši ali prepiši datoteke</target> - <source>&Recycle bin</source> <target>&Koš</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Naredi varnostno kopijo izbrisanih in prepisanih datotek v koš</target> +<source>&Permanent</source> +<target>&Dokončno</target> + +<source>Delete or overwrite files permanently</source> +<target>Trajno izbriši ali prepiši datoteke</target> + <source>&Versioning</source> <target>&Verzioniranje</target> @@ -990,15 +1029,15 @@ Ukaz se sproži če: <source>Handle errors:</source> <target>Upravljanje napak:</target> -<source>Hide all error and warning messages</source> -<target>Skrij vsa obvestila o napakah in opozorilih</target> - <source>&Pop-up</source> <target>&Pop-up</target> <source>Show pop-up on errors or warnings</source> <target>Prikaži pojavne napaka ali opozorila</target> +<source>Hide all error and warning messages</source> +<target>Skrij vsa obvestila o napakah in opozorilih</target> + <source>On completion:</source> <target>Ob zaključku:</target> @@ -1104,9 +1143,6 @@ Ukaz se sproži če: <source>The following settings are used for all synchronization jobs.</source> <target>Naslednje nastavitve se uporabljajo pri vseh sinhronizacijskih opravilih.</target> -<source>Fail-safe file copy</source> -<target>Kopiranje datotek varno pred odpovedjo</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1119,18 +1155,12 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>(recommended)</source> <target>(priporočeno)</target> -<source>Copy locked files</source> -<target>Kopiraj zaklenjene datoteke</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopiraj zaklenjene in datoteke v skupni rabi s pomočjo Shadow Copy Service.</target> <source>(requires administrator rights)</source> <target>(zahteva pravice administratorja)</target> -<source>Copy file access permissions</source> -<target>Kopiraj dovoljenja dostopov datoteke</target> - <source>Transfer file and folder permissions.</source> <target>Prenesi pravice datotek in map.</target> @@ -1622,9 +1652,6 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>Percentage</source> <target>Odstotek</target> -<source>Internet access failed.</source> -<target>Neuspešna povezava na internet.</target> - <source>Check for Program Updates</source> <target>Prevri obstoj nadgradnje programa</target> @@ -1634,18 +1661,24 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>FreeFileSync is up to date.</source> <target>FreeFileSync je posodobljen.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Povezava na www.freefilesync.org ni mogoča.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Preveri</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Ne morem najti sistemske funkcije %x.</target> + <source>Unable to register to receive system messages.</source> <target>Ne morem se registrirati za prejem sistemskih sporočil.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Omogoči registracijo obvestil naprave za %x.</target> @@ -1655,9 +1688,6 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>The file is locked by another process:</source> <target>Datoteka je zaklenjena s strani drugega procesa:</target> -<source>Cannot write file attributes of %x.</source> -<target>Ne morem zapisati datotečnih atributov od %x.</target> - <source>Cannot read security context of %x.</source> <target>Ne morem prebrati varnostnega konteksta od %x.</target> @@ -1673,9 +1703,6 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>%x is not a regular directory name.</source> <target>%x ni pravilno ime imenika.</target> -<source>Cannot find system function %x.</source> -<target>Ne morem najti sistemske funkcije %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Ne morem kopirati datoteke %x v %y.</target> @@ -1742,6 +1769,9 @@ To zagotavlja konsistenčnost podatkov v primeru napake. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Nastavitvena datoteka %x je nepopolna. Manjkajoči element bo nastavljen na privzete vrednosti.</target> +<source>Internet access failed.</source> +<target>Neuspešna povezava na internet.</target> + <source>Prepare installation</source> <target>Pripravljam namestitev</target> diff --git a/FreeFileSync/Build/Languages/spanish.lng b/FreeFileSync/Build/Languages/spanish.lng index f51aac89..fd995f57 100644 --- a/FreeFileSync/Build/Languages/spanish.lng +++ b/FreeFileSync/Build/Languages/spanish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Generando lista de archivos…</target> +<source>Fail-safe file copy</source> +<target>Copia de archivo a prueba de fallos</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Copiar archivos bloqueados</target> + +<source>Copy file access permissions</source> +<target>Copiar permisos de acceso al archivo</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Iniciando la comparación</target> @@ -291,8 +324,8 @@ Reales: %y bytes <source>Error Code %x:</source> <target>Código de error %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Fallo de conexión con el servidor SFTP %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Reales: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>No se puede acceder al servicio de Instantánea de volumen.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Por favor, use la versión de 64 bits de FreeFileSync para crear copias de Shadow en el sistema.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>No se puede determinar nombre del volumen de %x.</target> @@ -581,6 +614,9 @@ El comando es disparado si: <source>Updating attributes of %x</source> <target>Actualizar atributos de %x</target> +<source>Cannot write file attributes of %x.</source> +<target>No se pueden escribir los atributos de archivo de %x.</target> + <source>%x and %y have different content.</source> <target>%x y %y tienen contenidos diferentes.</target> @@ -878,6 +914,9 @@ El comando es disparado si: <source>Folder pair:</source> <target>Par de carpetas:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Usar Opciones locales:</target> @@ -938,6 +977,9 @@ El comando es disparado si: <source>C&lear</source> <target>B&orrar</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Detectar direcciones de sincronización a partir de archivos de bases de datos</target> + <source>Detect moved files</source> <target>Detectar archivos movidos</target> @@ -952,24 +994,21 @@ El comando es disparado si: - Detección no disponible en primera sincronización </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Detectar direcciones de sincronización a partir de archivos de bases de datos</target> - <source>Delete files:</source> <target>Eliminar archivos:</target> -<source>&Permanent</source> -<target>&Permanente</target> - -<source>Delete or overwrite files permanently</source> -<target>Borrar o sobrescribir los archivos permanentemente</target> - <source>&Recycle bin</source> <target>Papelera de &reciclaje</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Copiar a la papelera de reciclaje los archivos eliminados y reemplazados</target> +<source>&Permanent</source> +<target>&Permanente</target> + +<source>Delete or overwrite files permanently</source> +<target>Borrar o sobrescribir los archivos permanentemente</target> + <source>&Versioning</source> <target>&Versionado</target> @@ -982,15 +1021,15 @@ El comando es disparado si: <source>Handle errors:</source> <target>Tratar errores:</target> -<source>Hide all error and warning messages</source> -<target>Ocultar todos los mensajes de error y aviso</target> - <source>&Pop-up</source> <target>En &ventana</target> <source>Show pop-up on errors or warnings</source> <target>Mostrar ventana emergente de errores o avisos</target> +<source>Hide all error and warning messages</source> +<target>Ocultar todos los mensajes de error y aviso</target> + <source>On completion:</source> <target>Al completar:</target> @@ -1096,9 +1135,6 @@ El comando es disparado si: <source>The following settings are used for all synchronization jobs.</source> <target>Las opciones siguientes son comunes a todas las tareas de sincronización.</target> -<source>Fail-safe file copy</source> -<target>Copia de archivo a prueba de fallos</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>(recommended)</source> <target>(recomendado)</target> -<source>Copy locked files</source> -<target>Copiar archivos bloqueados</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Copiar archivos compartidos o bloqueados usando el servicio de Instantánea de volumen.</target> <source>(requires administrator rights)</source> <target>(requiere derechos de administrador)</target> -<source>Copy file access permissions</source> -<target>Copiar permisos de acceso al archivo</target> - <source>Transfer file and folder permissions.</source> <target>Transferir permisos de archivos y carpetas.</target> @@ -1600,9 +1630,6 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>Percentage</source> <target>Porcentaje</target> -<source>Internet access failed.</source> -<target>Fallo de acceso a Internet.</target> - <source>Check for Program Updates</source> <target>Buscar actualizaciones del programa</target> @@ -1612,18 +1639,24 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>FreeFileSync is up to date.</source> <target>FreeFileSync está actualizado.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>No se puede conectar al sitio www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Comprobar</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>No se puede encontrar la función del sistema %x.</target> + <source>Unable to register to receive system messages.</source> <target>No es posible registrar la recepción de mensajes sistema.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>No es posible registrar las notificaciones de dispositivo para %x.</target> @@ -1633,9 +1666,6 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>The file is locked by another process:</source> <target>El archivo está bloqueado por otro proceso:</target> -<source>Cannot write file attributes of %x.</source> -<target>No se pueden escribir los atributos de archivo de %x.</target> - <source>Cannot read security context of %x.</source> <target>No se puede leer el contexto de seguridad de %x.</target> @@ -1651,9 +1681,6 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>%x is not a regular directory name.</source> <target>%x no es una nombre de directorio autorizado.</target> -<source>Cannot find system function %x.</source> -<target>No se puede encontrar la función del sistema %x.</target> - <source>Cannot copy file %x to %y.</source> <target>No se puede copiar el archivo %x a %y.</target> @@ -1714,6 +1741,9 @@ Se garantiza un estado coherente incluso en caso de error grave. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>El archivo de configuración %x está incompleto. Los elementos ausentes se definirán con valores predeterminados.</target> +<source>Internet access failed.</source> +<target>Fallo de acceso a Internet.</target> + <source>Prepare installation</source> <target>Preparar la instalación</target> diff --git a/FreeFileSync/Build/Languages/swedish.lng b/FreeFileSync/Build/Languages/swedish.lng index 12c9b91f..53a8cbed 100644 --- a/FreeFileSync/Build/Languages/swedish.lng +++ b/FreeFileSync/Build/Languages/swedish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Skapar fillista...</target> +<source>Fail-safe file copy</source> +<target>Felsäker filkopiering</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kopiera låsta filer</target> + +<source>Copy file access permissions</source> +<target>Kopiera filåtkomstbehörigheter</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Startar jämföelse</target> @@ -291,8 +324,8 @@ Aktuell: %y byte <source>Error Code %x:</source> <target>Felkod %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Kunde inte ansluta till SFTP-server %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Aktuell: %y byte <source>Cannot access the Volume Shadow Copy Service.</source> <target>Kan inte komma åt tjänsten 'Volume Shadow Copy'.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Använd FreeFileSync 64-bitarsversion för att skapa skuggkopior på detta system.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Kan inte utläsa volymnamn för %x.</target> @@ -581,6 +614,9 @@ Kommandot triggas om: <source>Updating attributes of %x</source> <target>Uppdaterar attribut för %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Kan inte skriva filattribut för %x.</target> + <source>%x and %y have different content.</source> <target>%x och %y har olika innehåll.</target> @@ -878,6 +914,9 @@ Kommandot triggas om: <source>Folder pair:</source> <target>Katalogpar:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Använd lokala inställningar:</target> @@ -938,6 +977,9 @@ Kommandot triggas om: <source>C&lear</source> <target>&Rensa</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Hitta synkroniseringsmappar med hjälp av databasfiler</target> + <source>Detect moved files</source> <target>Hitta flyttade filer</target> @@ -952,24 +994,21 @@ Kommandot triggas om: - Identifiering ej tillgänglig för första synkronisering </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Hitta synkroniseringsmappar med hjälp av databasfiler</target> - <source>Delete files:</source> <target>Ta bort filer:</target> -<source>&Permanent</source> -<target>&Permanent</target> - -<source>Delete or overwrite files permanently</source> -<target>Ta bort eller skriv över permanent</target> - <source>&Recycle bin</source> <target>&Papperskorgen</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Kopiera borttagna och överskrivna filer till papperskorgen</target> +<source>&Permanent</source> +<target>&Permanent</target> + +<source>Delete or overwrite files permanently</source> +<target>Ta bort eller skriv över permanent</target> + <source>&Versioning</source> <target>&Versionshantering</target> @@ -982,15 +1021,15 @@ Kommandot triggas om: <source>Handle errors:</source> <target>Felhantering:</target> -<source>Hide all error and warning messages</source> -<target>Visa inte fel- och varningsmeddelanden</target> - <source>&Pop-up</source> <target>&Popup</target> <source>Show pop-up on errors or warnings</source> <target>Visa popup vid fel och varningar</target> +<source>Hide all error and warning messages</source> +<target>Visa inte fel- och varningsmeddelanden</target> + <source>On completion:</source> <target>Vid slutförd åtgärd:</target> @@ -1096,9 +1135,6 @@ Kommandot triggas om: <source>The following settings are used for all synchronization jobs.</source> <target>Följande inställningar används för all synkronisering.</target> -<source>Fail-safe file copy</source> -<target>Felsäker filkopiering</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>(recommended)</source> <target>(rekommenderas)</target> -<source>Copy locked files</source> -<target>Kopiera låsta filer</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Kopierar delade eller låsta filer med hjälp av tjänsten 'Volume Shadow Copy'.</target> <source>(requires administrator rights)</source> <target>(kräver administratörsbehörighet)</target> -<source>Copy file access permissions</source> -<target>Kopiera filåtkomstbehörigheter</target> - <source>Transfer file and folder permissions.</source> <target>Överför behörighetsinställningar.</target> @@ -1600,9 +1630,6 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>Percentage</source> <target>Procent</target> -<source>Internet access failed.</source> -<target>Internetåtkomst misslyckades.</target> - <source>Check for Program Updates</source> <target>Sök efter programuppdateringar</target> @@ -1612,18 +1639,24 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>FreeFileSync is up to date.</source> <target>FreeFileSync är uppdaterad.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Kan inte ansluta till www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Kontrollera</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Kan inte hitta systemfunktion %x.</target> + <source>Unable to register to receive system messages.</source> <target>Det gick inte att registrera mottagning av systemmeddelanden.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Kunde inte registrera enhetsavisering för %x.</target> @@ -1633,9 +1666,6 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>The file is locked by another process:</source> <target>Filen är låst av en annan process:</target> -<source>Cannot write file attributes of %x.</source> -<target>Kan inte skriva filattribut för %x.</target> - <source>Cannot read security context of %x.</source> <target>Kan inte läsa säkerhetskontext för %x.</target> @@ -1651,9 +1681,6 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>%x is not a regular directory name.</source> <target>%x är inte ett vanligt mappnamn.</target> -<source>Cannot find system function %x.</source> -<target>Kan inte hitta systemfunktion %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Kan inte kopiera %x till %y.</target> @@ -1714,6 +1741,9 @@ Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Konfigurationsfilen %x är inte komplett. De saknade elementen kommer att anges till standardvärdet.</target> +<source>Internet access failed.</source> +<target>Internetåtkomst misslyckades.</target> + <source>Prepare installation</source> <target>Förbered installation</target> diff --git a/FreeFileSync/Build/Languages/turkish.lng b/FreeFileSync/Build/Languages/turkish.lng index 0d0b620a..7c2e44b3 100644 --- a/FreeFileSync/Build/Languages/turkish.lng +++ b/FreeFileSync/Build/Languages/turkish.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Dosya listesi oluşturuluyor...</target> +<source>Fail-safe file copy</source> +<target>Dosyalar Hatasız Kopyalansın</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Kilitli Dosyalar da Kopyalansın</target> + +<source>Copy file access permissions</source> +<target>Dosya Erişim İzinleri de Kopyalansın</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Karşılaştırmaya başlanıyor</target> @@ -291,8 +324,8 @@ Gerçekleşen: %y bayt <source>Error Code %x:</source> <target>Hata Kodu %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>%x SFTP sunucusuna bağlanılamadı.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -405,8 +438,8 @@ Gerçekleşen: %y bayt <source>Cannot access the Volume Shadow Copy Service.</source> <target>Birim Gölge Hizmetine erişilemiyor.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Bu sistem üzerinde gölge kopyalar oluşturmak için FreeFileSync 64-bit sürümünü kullanın.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>%x için birim adı belirlenemedi.</target> @@ -581,6 +614,9 @@ Komut şu durumlarda yürütülür: <source>Updating attributes of %x</source> <target>%x öznitelikleri güncelleniyor</target> +<source>Cannot write file attributes of %x.</source> +<target>%x dosya öznitelikleri yazılamadı.</target> + <source>%x and %y have different content.</source> <target>%x ve %y farklı içeriklere sahip.</target> @@ -878,6 +914,9 @@ Komut şu durumlarda yürütülür: <source>Folder pair:</source> <target>Klasör Çifti:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Yerel Ayarlar Kullanılsın:</target> @@ -938,6 +977,9 @@ Komut şu durumlarda yürütülür: <source>C&lear</source> <target>&Temizle</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Eşitleme yönleri veritabanı dosyalarının yardımı ile algılanır</target> + <source>Detect moved files</source> <target>Taşınmış dosyalar algılansın</target> @@ -952,24 +994,21 @@ Komut şu durumlarda yürütülür: - Algılama, ilk eşitleme sırasında kullanılamaz </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Eşitleme yönleri veritabanı dosyalarının yardımı ile algılanır</target> - <source>Delete files:</source> <target>Dosya Silme İşlemi:</target> -<source>&Permanent</source> -<target>&Kalıcı Olarak Silinsin</target> - -<source>Delete or overwrite files permanently</source> -<target>Dosyalar kalıcı olarak silinir ya da üzerine yazılır</target> - <source>&Recycle bin</source> <target>Ge&ri Dönüşüm Kutusuna Atılsın</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Silinen ya da üzerine yazılan dosyalar geri dönüşüm kutusuna gönderilir</target> +<source>&Permanent</source> +<target>&Kalıcı Olarak Silinsin</target> + +<source>Delete or overwrite files permanently</source> +<target>Dosyalar kalıcı olarak silinir ya da üzerine yazılır</target> + <source>&Versioning</source> <target>Eski &Sürüm Olarak Saklansın</target> @@ -982,15 +1021,15 @@ Komut şu durumlarda yürütülür: <source>Handle errors:</source> <target>Hata Durumunda:</target> -<source>Hide all error and warning messages</source> -<target>Hiçbir hata ve uyarı iletisi görüntülenmez</target> - <source>&Pop-up</source> <target>&Görüntüle</target> <source>Show pop-up on errors or warnings</source> <target>Hata ya da uyarılar açılır pencerede görüntülenir</target> +<source>Hide all error and warning messages</source> +<target>Hiçbir hata ve uyarı iletisi görüntülenmez</target> + <source>On completion:</source> <target>İşlem Tamamlandığında:</target> @@ -1096,9 +1135,6 @@ Komut şu durumlarda yürütülür: <source>The following settings are used for all synchronization jobs.</source> <target>Aşağıdaki ayarlar tüm eşitleme işlemleri için geçerlidir.</target> -<source>Fail-safe file copy</source> -<target>Dosyalar Hatasız Kopyalansın</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1111,18 +1147,12 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>(recommended)</source> <target>(önerilir)</target> -<source>Copy locked files</source> -<target>Kilitli Dosyalar da Kopyalansın</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Paylaşılan ya da kilitlenmiş dosyalar Birim Gölge Hizmetini kullanılarak kopyalanır.</target> <source>(requires administrator rights)</source> <target>(yönetici hakları gereklidir)</target> -<source>Copy file access permissions</source> -<target>Dosya Erişim İzinleri de Kopyalansın</target> - <source>Transfer file and folder permissions.</source> <target>Dosya ve klasör izinleri de aktarılır.</target> @@ -1600,9 +1630,6 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>Percentage</source> <target>Yüzde</target> -<source>Internet access failed.</source> -<target>İnternet erişimi sağlanamadı.</target> - <source>Check for Program Updates</source> <target>Güncelleme Denetimi</target> @@ -1612,18 +1639,24 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>FreeFileSync is up to date.</source> <target>FreeFileSync güncel.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>www.freefilesync.org sitesine bağlanılamadı.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Denetle</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>%x sistem işlevi bulunamadı.</target> + <source>Unable to register to receive system messages.</source> <target>Sistem iletilerini alabilmek için gerekli kayıt eklenemedi.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>%x aygıtının bildirimleri için gerekli kayıt eklenemedi.</target> @@ -1633,9 +1666,6 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>The file is locked by another process:</source> <target>Dosya başka bir işlem tarafından kilitlenmiş:</target> -<source>Cannot write file attributes of %x.</source> -<target>%x dosya öznitelikleri yazılamadı.</target> - <source>Cannot read security context of %x.</source> <target>%x için güvenlik bağlamı okunamadı.</target> @@ -1651,9 +1681,6 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>%x is not a regular directory name.</source> <target>%x geçerli bir klasör adı değil.</target> -<source>Cannot find system function %x.</source> -<target>%x sistem işlevi bulunamadı.</target> - <source>Cannot copy file %x to %y.</source> <target>%x dosyası %y olarak kopyalanamadı.</target> @@ -1714,6 +1741,9 @@ Bu yöntem, ciddi bir hata oluşması durumunda bile işlemin tutarlı olarak ya <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>%x ayar dosyası tam değil. Eksik bileşenler için varsayılan değerler kullanılacak.</target> +<source>Internet access failed.</source> +<target>İnternet erişimi sağlanamadı.</target> + <source>Prepare installation</source> <target>Yüklemeye hazırlanılıyor</target> diff --git a/FreeFileSync/Build/Languages/ukrainian.lng b/FreeFileSync/Build/Languages/ukrainian.lng index 72f21600..276ca7d0 100644 --- a/FreeFileSync/Build/Languages/ukrainian.lng +++ b/FreeFileSync/Build/Languages/ukrainian.lng @@ -151,6 +151,39 @@ <source>Generating file list...</source> <target>Створення списку файлів...</target> +<source>Fail-safe file copy</source> +<target>Відмовостійке копіювання файлів</target> + +<source>Enabled</source> +<target></target> + +<source>Disabled</source> +<target></target> + +<source>Copy locked files</source> +<target>Копіювати заблоковані файли</target> + +<source>Copy file access permissions</source> +<target>Копіювати права доступу до файлів</target> + +<source>File time tolerance</source> +<target></target> + +<source>Folder access timeout</source> +<target></target> + +<source>Run with background priority</source> +<target></target> + +<source>Lock directories during sync</source> +<target></target> + +<source>Verify copied files</source> +<target></target> + +<source>Using non-default global settings:</source> +<target></target> + <source>Starting comparison</source> <target>Запустити порівняння</target> @@ -291,8 +324,8 @@ Actual: %y bytes <source>Error Code %x:</source> <target>Код помилки %x:</target> -<source>Failed to connect to SFTP server %x.</source> -<target>Не вдається з'єднатися з SFTP сервером %x.</target> +<source>Unable to connect to %x.</source> +<target></target> <source> <pluralform>1 byte</pluralform> @@ -408,8 +441,8 @@ Actual: %y bytes <source>Cannot access the Volume Shadow Copy Service.</source> <target>Не вдається отримати доступ до послуги Тіньового Копіювання Тому.</target> -<source>Please use FreeFileSync 64-bit version to create shadow copies on this system.</source> -<target>Будь ласка, використовуйте 64-розрядну версію FreeFileSync для створення тіньових копій у цій системі.</target> +<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source> +<target></target> <source>Cannot determine volume name for %x.</source> <target>Не вдалося встановити ім'я тому для %x.</target> @@ -584,6 +617,9 @@ The command is triggered if: <source>Updating attributes of %x</source> <target>Оновлення атрибутів %x</target> +<source>Cannot write file attributes of %x.</source> +<target>Не вдається записати атрибути файлу %x.</target> + <source>%x and %y have different content.</source> <target>%x і %y мають різний вміст.</target> @@ -882,6 +918,9 @@ The command is triggered if: <source>Folder pair:</source> <target>Пара папок:</target> +<source>Main settings:</source> +<target></target> + <source>Use local settings:</source> <target>Використати локальні налаштування:</target> @@ -942,6 +981,9 @@ The command is triggered if: <source>C&lear</source> <target>О&чистити</target> +<source>Detect synchronization directions with the help of database files</source> +<target>Визначити напрямок синхронізації за допомогою файлів баз даних</target> + <source>Detect moved files</source> <target>Виявляти переміщені файли</target> @@ -956,24 +998,21 @@ The command is triggered if: - Визначення недоступне для першої синхронізації </target> -<source>Detect synchronization directions with the help of database files</source> -<target>Визначити напрямок синхронізації за допомогою файлів баз даних</target> - <source>Delete files:</source> <target>Вилучати файли:</target> -<source>&Permanent</source> -<target>&Безповоротно</target> - -<source>Delete or overwrite files permanently</source> -<target>Вилучати чи перезаписувати файли безповоротно</target> - <source>&Recycle bin</source> <target>&Корзина</target> <source>Back up deleted and overwritten files in the recycle bin</source> <target>Робити резервну копію вилучених та перезаписаних файлів в Корзині</target> +<source>&Permanent</source> +<target>&Безповоротно</target> + +<source>Delete or overwrite files permanently</source> +<target>Вилучати чи перезаписувати файли безповоротно</target> + <source>&Versioning</source> <target>&Управління версіями</target> @@ -986,15 +1025,15 @@ The command is triggered if: <source>Handle errors:</source> <target>Обробка помилок:</target> -<source>Hide all error and warning messages</source> -<target>Приховати всі помилки і повідомлення з попередженнями</target> - <source>&Pop-up</source> <target>&Спливаючі вікна</target> <source>Show pop-up on errors or warnings</source> <target>Показувати виринаючі вікна при помилках та попередженнях</target> +<source>Hide all error and warning messages</source> +<target>Приховати всі помилки і повідомлення з попередженнями</target> + <source>On completion:</source> <target>Після завершення:</target> @@ -1100,9 +1139,6 @@ The command is triggered if: <source>The following settings are used for all synchronization jobs.</source> <target>Наступні налаштування використовуються для всіх завдань синхронізації.</target> -<source>Fail-safe file copy</source> -<target>Відмовостійке копіювання файлів</target> - <source> Copy to a temporary file (*.ffs_tmp) before overwriting target. This guarantees a consistent state even in case of a serious error. @@ -1115,18 +1151,12 @@ This guarantees a consistent state even in case of a serious error. <source>(recommended)</source> <target>(рекомендовано)</target> -<source>Copy locked files</source> -<target>Копіювати заблоковані файли</target> - <source>Copy shared or locked files using the Volume Shadow Copy Service.</source> <target>Копіювати спільні та заблоковані файли за допомогою сервісу Тіньового Копіювання Тому.</target> <source>(requires administrator rights)</source> <target>(потрібні права адміністратора)</target> -<source>Copy file access permissions</source> -<target>Копіювати права доступу до файлів</target> - <source>Transfer file and folder permissions.</source> <target>Перенести права доступу файлів і папок.</target> @@ -1611,9 +1641,6 @@ This guarantees a consistent state even in case of a serious error. <source>Percentage</source> <target>Проценти</target> -<source>Internet access failed.</source> -<target>Немає доступу до Internet.</target> - <source>Check for Program Updates</source> <target>Перевірка Оновлень Програми</target> @@ -1623,18 +1650,24 @@ This guarantees a consistent state even in case of a serious error. <source>FreeFileSync is up to date.</source> <target>У Вас найновіша версія FreeFileSync.</target> -<source>Unable to connect to www.freefilesync.org.</source> -<target>Не вдалось підключитись до www.freefilesync.org.</target> - <source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source> <target></target> <source>&Check</source> <target>&Перевірити</target> +<source>Consistency check failed for %x.</source> +<target></target> + +<source>Cannot find system function %x.</source> +<target>Не вдається знайти системну функцію %x.</target> + <source>Unable to register to receive system messages.</source> <target>Не вдається зареєструватися для отримання системних повідомлень.</target> +<source>Installation files are corrupt. Please reinstall FreeFileSync.</source> +<target></target> + <source>Unable to register device notifications for %x.</source> <target>Не вдається зареєструвати повідомлення пристрою для %x.</target> @@ -1644,9 +1677,6 @@ This guarantees a consistent state even in case of a serious error. <source>The file is locked by another process:</source> <target>Файл заблоковано іншим процесом:</target> -<source>Cannot write file attributes of %x.</source> -<target>Не вдається записати атрибути файлу %x.</target> - <source>Cannot read security context of %x.</source> <target>Не вдається прочитати контекст безпеки %x.</target> @@ -1662,9 +1692,6 @@ This guarantees a consistent state even in case of a serious error. <source>%x is not a regular directory name.</source> <target>%x не є звичайним іменем папки.</target> -<source>Cannot find system function %x.</source> -<target>Не вдається знайти системну функцію %x.</target> - <source>Cannot copy file %x to %y.</source> <target>Не вдається скопіювати файл %x до %y.</target> @@ -1728,6 +1755,9 @@ This guarantees a consistent state even in case of a serious error. <source>Configuration file %x is incomplete. The missing elements will be set to their default values.</source> <target>Файл конфігурації %x неповний. Елементи, яких не вистачає, будуть заповнені значеннями за замовчуванням.</target> +<source>Internet access failed.</source> +<target>Немає доступу до Internet.</target> + <source>Prepare installation</source> <target>Підготовка встановлення</target> diff --git a/FreeFileSync/Source/RealtimeSync/application.cpp b/FreeFileSync/Source/RealtimeSync/application.cpp index 502e54a9..7b7e45d3 100644 --- a/FreeFileSync/Source/RealtimeSync/application.cpp +++ b/FreeFileSync/Source/RealtimeSync/application.cpp @@ -67,7 +67,7 @@ bool Application::OnInit() #endif //Windows User Experience Interaction Guidelines: tool tips should have 5s timeout, info tips no timeout => compromise: - wxToolTip::SetAutoPop(7000); //http://msdn.microsoft.com/en-us/library/windows/desktop/aa511495.aspx + wxToolTip::SetAutoPop(7000); //https://msdn.microsoft.com/en-us/library/windows/desktop/aa511495 SetAppName(L"RealTimeSync"); @@ -163,7 +163,11 @@ void Application::onQueryEndSession(wxEvent& event) { if (auto mainWin = dynamic_cast<MainDialog*>(GetTopWindow())) mainWin->onQueryEndSession(); - OnExit(); //wxWidgets screws up again: http://trac.wxwidgets.org/ticket/3069 - //wxEntryCleanup(); -> gives popup "dll init failed" on XP - std::exit(FFS_RC_SUCCESS); //Windows will terminate anyway: destruct global objects + //it's futile to try and clean up while the process is in full swing (CRASH!) => just terminate! +#ifdef ZEN_WIN + /*BOOL rv = */ ::TerminateProcess(::GetCurrentProcess(), //_In_ HANDLE hProcess, + FFS_RC_EXCEPTION); //_In_ UINT uExitCode +#else + std::abort(); //on Windows calls ::ExitProcess() which can still internally process Window messages and crash! +#endif } diff --git a/FreeFileSync/Source/RealtimeSync/folder_selector2.cpp b/FreeFileSync/Source/RealtimeSync/folder_selector2.cpp index 9eaff122..76b33091 100644 --- a/FreeFileSync/Source/RealtimeSync/folder_selector2.cpp +++ b/FreeFileSync/Source/RealtimeSync/folder_selector2.cpp @@ -18,6 +18,9 @@ #elif defined ZEN_LINUX #include <gtk/gtk.h> + +#elif defined ZEN_MAC + #include <zen/osx_string.h> #endif using namespace zen; @@ -182,7 +185,16 @@ void FolderSelector2::onSelectDir(wxCommandEvent& event) Zstring FolderSelector2::getPath() const { - return toZ(folderPathCtrl_.GetValue()); + Zstring path = utfCvrtTo<Zstring>(folderPathCtrl_.GetValue()); + +#ifdef ZEN_MAC //normalize all text input (see see native_traverser_impl.h) + try + { + path = osx::normalizeUtfForPosix(path.c_str()); //throw SysError + } + catch (SysError&) { assert(false); } +#endif + return path; } diff --git a/FreeFileSync/Source/algorithm.cpp b/FreeFileSync/Source/algorithm.cpp index 4663165c..45f30926 100644 --- a/FreeFileSync/Source/algorithm.cpp +++ b/FreeFileSync/Source/algorithm.cpp @@ -219,18 +219,18 @@ bool stillInSync(const InSyncFile& dbFile, CompareVariant compareVar, int fileTi { switch (compareVar) { - case CMP_BY_TIME_SIZE: - if (dbFile.cmpVar == CMP_BY_CONTENT) return true; //special rule: this is certainly "good enough" for CMP_BY_TIME_SIZE! + case CompareVariant::TIME_SIZE: + if (dbFile.cmpVar == CompareVariant::CONTENT) return true; //special rule: this is certainly "good enough" for CompareVariant::TIME_SIZE! //case-sensitive short name match is a database invariant! return sameFileTime(dbFile.left.lastWriteTimeRaw, dbFile.right.lastWriteTimeRaw, fileTimeTolerance, ignoreTimeShiftMinutes); - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: //case-sensitive short name match is a database invariant! - return dbFile.cmpVar == CMP_BY_CONTENT; + return dbFile.cmpVar == CompareVariant::CONTENT; //in contrast to comparison, we don't care about modification time here! - case CMP_BY_SIZE: //file size/case-sensitive short name always matches on both sides for an "in-sync" database entry + case CompareVariant::SIZE: //file size/case-sensitive short name always matches on both sides for an "in-sync" database entry return true; } assert(false); @@ -270,17 +270,17 @@ bool stillInSync(const InSyncSymlink& dbLink, CompareVariant compareVar, int fil { switch (compareVar) { - case CMP_BY_TIME_SIZE: - if (dbLink.cmpVar == CMP_BY_CONTENT || dbLink.cmpVar == CMP_BY_SIZE) - return true; //special rule: this is already "good enough" for CMP_BY_TIME_SIZE! + case CompareVariant::TIME_SIZE: + if (dbLink.cmpVar == CompareVariant::CONTENT || dbLink.cmpVar == CompareVariant::SIZE) + return true; //special rule: this is already "good enough" for CompareVariant::TIME_SIZE! //case-sensitive short name match is a database invariant! return sameFileTime(dbLink.left.lastWriteTimeRaw, dbLink.right.lastWriteTimeRaw, fileTimeTolerance, ignoreTimeShiftMinutes); - case CMP_BY_CONTENT: - case CMP_BY_SIZE: //== categorized by content! see comparison.cpp, ComparisonBuffer::compareBySize() + case CompareVariant::CONTENT: + case CompareVariant::SIZE: //== categorized by content! see comparison.cpp, ComparisonBuffer::compareBySize() //case-sensitive short name match is a database invariant! - return dbLink.cmpVar == CMP_BY_CONTENT || dbLink.cmpVar == CMP_BY_SIZE; + return dbLink.cmpVar == CompareVariant::CONTENT || dbLink.cmpVar == CompareVariant::SIZE; } assert(false); return false; @@ -677,7 +677,7 @@ void zen::redetermineSyncDirection(const DirectionConfig& dirCfg, { //try to load sync-database files std::shared_ptr<InSyncFolder> lastSyncState; - if (dirCfg.var == DirectionConfig::TWOWAY || detectMovedFilesEnabled(dirCfg)) + if (dirCfg.var == DirectionConfig::TWO_WAY || detectMovedFilesEnabled(dirCfg)) try { if (allItemsCategoryEqual(baseFolder)) @@ -690,12 +690,12 @@ void zen::redetermineSyncDirection(const DirectionConfig& dirCfg, { if (reportWarning) reportWarning(e.toString() + - (dirCfg.var == DirectionConfig::TWOWAY ? + (dirCfg.var == DirectionConfig::TWO_WAY ? L" \n\n" + _("Setting default synchronization directions: Old files will be overwritten with newer files.") : std::wstring())); } //set sync directions - if (dirCfg.var == DirectionConfig::TWOWAY) + if (dirCfg.var == DirectionConfig::TWO_WAY) { if (lastSyncState) RedetermineTwoWay::execute(baseFolder, *lastSyncState); @@ -1497,7 +1497,7 @@ void zen::deleteFromGridAndHD(const std::vector<FileSystemObject*>& rowsToDelete { SyncDirection newDir = SyncDirection::NONE; - if (cfgIter->second.var == DirectionConfig::TWOWAY) + if (cfgIter->second.var == DirectionConfig::TWO_WAY) newDir = fsObj.isEmpty<LEFT_SIDE>() ? SyncDirection::RIGHT : SyncDirection::LEFT; else { diff --git a/FreeFileSync/Source/application.cpp b/FreeFileSync/Source/application.cpp index 7c1a802e..bd48da14 100644 --- a/FreeFileSync/Source/application.cpp +++ b/FreeFileSync/Source/application.cpp @@ -40,9 +40,8 @@ using namespace xmlAccess; IMPLEMENT_APP(Application) - #ifdef _MSC_VER -//catch CRT floating point errors: http://msdn.microsoft.com/en-us/library/k3backsw.aspx +//catch CRT floating point errors: https://msdn.microsoft.com/en-us/library/k3backsw int _matherr(_Inout_ struct _exception* except) { assert(false); @@ -50,14 +49,13 @@ int _matherr(_Inout_ struct _exception* except) } #endif - namespace { #ifdef ZEN_WIN void enableCrashingOnCrashes() //should be needed for 32-bit code only: http://randomascii.wordpress.com/2012/07/05/when-even-crashing-doesnt-work { - typedef BOOL (WINAPI* GetProcessUserModeExceptionPolicyFun)(LPDWORD lpFlags); - typedef BOOL (WINAPI* SetProcessUserModeExceptionPolicyFun)( DWORD dwFlags); + using GetProcessUserModeExceptionPolicyFun = BOOL (WINAPI*)(LPDWORD lpFlags); + using SetProcessUserModeExceptionPolicyFun = BOOL (WINAPI*)( DWORD dwFlags); const DWORD EXCEPTION_SWALLOWING = 0x1; const SysDllFun<GetProcessUserModeExceptionPolicyFun> getProcessUserModeExceptionPolicy(L"kernel32.dll", "GetProcessUserModeExceptionPolicy"); @@ -114,7 +112,7 @@ std::vector<Zstring> getCommandlineArgs(const wxApp& app) args.emplace_back(iterStart, cmdLine.end()); if (!args.empty()) - args.erase(args.begin()); //remove first argument which is exe path by convention: http://blogs.msdn.com/b/oldnewthing/archive/2006/05/15/597984.aspx + args.erase(args.begin()); //remove first argument which is exe path by convention: https://blogs.msdn.microsoft.com/oldnewthing/20060515-07/?p=31203 for (Zstring& str : args) if (str.size() >= 2 && startsWith(str, L'\"') && endsWith(str, L'\"')) @@ -154,7 +152,7 @@ bool Application::OnInit() #endif //Windows User Experience Interaction Guidelines: tool tips should have 5s timeout, info tips no timeout => compromise: - wxToolTip::SetAutoPop(7000); //http://msdn.microsoft.com/en-us/library/windows/desktop/aa511495.aspx + wxToolTip::SetAutoPop(7000); //https://msdn.microsoft.com/en-us/library/windows/desktop/aa511495 SetAppName(L"FreeFileSync"); //if not set, the default is the executable's name! @@ -167,8 +165,7 @@ bool Application::OnInit() //Note: app start is deferred: batch mode requires the wxApp eventhandler to be established for UI update events. This is not the case at the time of OnInit()! Connect(EVENT_ENTER_EVENT_LOOP, wxEventHandler(Application::onEnterEventLoop), nullptr, this); - wxCommandEvent scrollEvent(EVENT_ENTER_EVENT_LOOP); - AddPendingEvent(scrollEvent); + AddPendingEvent(wxCommandEvent(EVENT_ENTER_EVENT_LOOP)); return true; //true: continue processing; false: exit immediately. } @@ -248,9 +245,13 @@ void Application::onQueryEndSession(wxEvent& event) { if (auto mainWin = dynamic_cast<MainDialog*>(GetTopWindow())) mainWin->onQueryEndSession(); - OnExit(); //wxWidgets screws up again: http://trac.wxwidgets.org/ticket/3069 - //wxEntryCleanup(); -> gives popup "dll init failed" on XP - std::exit(returnCode); //Windows will terminate anyway: destruct global objects + //it's futile to try and clean up while the process is in full swing (CRASH!) => just terminate! +#ifdef ZEN_WIN + /*BOOL rv = */ ::TerminateProcess(::GetCurrentProcess(), //_In_ HANDLE hProcess, + FFS_RC_EXCEPTION); //_In_ UINT uExitCode +#else + std::abort(); //on Windows calls ::ExitProcess() which can still internally process Window messages and crash! +#endif } diff --git a/FreeFileSync/Source/comparison.cpp b/FreeFileSync/Source/comparison.cpp index c96fb05a..0aa82f41 100644 --- a/FreeFileSync/Source/comparison.cpp +++ b/FreeFileSync/Source/comparison.cpp @@ -967,10 +967,10 @@ FolderComparison zen::compare(xmlAccess::OptionalDialogs& warnings, for (const auto& w : totalWorkLoad) switch (w.second.compareVar) { - case CMP_BY_TIME_SIZE: - case CMP_BY_SIZE: + case CompareVariant::TIME_SIZE: + case CompareVariant::SIZE: break; - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: workLoadByContent.push_back(w); break; } @@ -980,13 +980,13 @@ FolderComparison zen::compare(xmlAccess::OptionalDialogs& warnings, for (const auto& w : totalWorkLoad) switch (w.second.compareVar) { - case CMP_BY_TIME_SIZE: + case CompareVariant::TIME_SIZE: output.push_back(cmpBuff.compareByTimeSize(w.first, w.second)); break; - case CMP_BY_SIZE: + case CompareVariant::SIZE: output.push_back(cmpBuff.compareBySize(w.first, w.second)); break; - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: assert(!outputByContent.empty()); if (!outputByContent.empty()) { diff --git a/FreeFileSync/Source/lib/db_file.cpp b/FreeFileSync/Source/lib/db_file.cpp index 47d963a3..959d1858 100644 --- a/FreeFileSync/Source/lib/db_file.cpp +++ b/FreeFileSync/Source/lib/db_file.cpp @@ -229,7 +229,7 @@ private: for (const auto& dbFile : container.files) { writeUtf8(outputBoth, dbFile.first); - writeNumber<std::int32_t >(outputBoth, dbFile.second.cmpVar); + writeNumber(outputBoth, static_cast<std::int32_t>(dbFile.second.cmpVar)); writeNumber<std::uint64_t>(outputBoth, dbFile.second.fileSize); writeFile(outputLeft, dbFile.second.left); @@ -240,7 +240,7 @@ private: for (const auto& dbSymlink : container.symlinks) { writeUtf8(outputBoth, dbSymlink.first); - writeNumber<std::int32_t>(outputBoth, dbSymlink.second.cmpVar); + writeNumber(outputBoth, static_cast<std::int32_t>(dbSymlink.second.cmpVar)); writeLink(outputLeft, dbSymlink.second.left); writeLink(outputRight, dbSymlink.second.right); diff --git a/FreeFileSync/Source/lib/dir_lock.cpp b/FreeFileSync/Source/lib/dir_lock.cpp index 4cc9b9f1..1370356f 100644 --- a/FreeFileSync/Source/lib/dir_lock.cpp +++ b/FreeFileSync/Source/lib/dir_lock.cpp @@ -112,7 +112,7 @@ public: FILE_END)) //__in DWORD dwMoveMethod return; - DWORD bytesWritten = 0; //this parameter is NOT optional: http://blogs.msdn.com/b/oldnewthing/archive/2013/04/04/10407417.aspx + DWORD bytesWritten = 0; //this parameter is NOT optional: https://blogs.msdn.microsoft.com/oldnewthing/20130404-00/?p=4753/ if (!::WriteFile(fileHandle, //_In_ HANDLE hFile, " ", //_In_ LPCVOID lpBuffer, 1, //_In_ DWORD nNumberOfBytesToWrite, diff --git a/FreeFileSync/Source/lib/hard_filter.h b/FreeFileSync/Source/lib/hard_filter.h index a6b68d9c..6b82b62e 100644 --- a/FreeFileSync/Source/lib/hard_filter.h +++ b/FreeFileSync/Source/lib/hard_filter.h @@ -16,7 +16,7 @@ namespace zen //------------------------------------------------------------------ /* Semantics of HardFilter: -1. using it creates a NEW folder hierarchy! -> must be considered by <Automatic>-mode! +1. using it creates a NEW folder hierarchy! -> must be considered by <Two way> variant! 2. it applies equally to both sides => it always matches either both sides or none! => can be used while traversing a single folder! class hierarchy: diff --git a/FreeFileSync/Source/lib/icon_buffer.cpp b/FreeFileSync/Source/lib/icon_buffer.cpp index 3d3683b8..218636b4 100644 --- a/FreeFileSync/Source/lib/icon_buffer.cpp +++ b/FreeFileSync/Source/lib/icon_buffer.cpp @@ -162,8 +162,6 @@ private: class Buffer { public: - Buffer() : firstInsertPos(iconList.end()), lastInsertPos(iconList.end()) {} - //called by main and worker thread: bool hasIcon(const AbstractPath& filePath) const { @@ -311,8 +309,8 @@ private: mutable std::mutex lockIconList; FileIconMap iconList; //shared resource; Zstring is thread-safe like an int - FileIconMap::iterator firstInsertPos; - FileIconMap::iterator lastInsertPos; + FileIconMap::iterator firstInsertPos = iconList.end(); + FileIconMap::iterator lastInsertPos = iconList.end(); }; //################################################################################################################################################ diff --git a/FreeFileSync/Source/lib/icon_loader.cpp b/FreeFileSync/Source/lib/icon_loader.cpp index e12ac549..e3f8137a 100644 --- a/FreeFileSync/Source/lib/icon_loader.cpp +++ b/FreeFileSync/Source/lib/icon_loader.cpp @@ -106,7 +106,7 @@ ImageHolder getIconByAttribute(LPCWSTR pszPath, DWORD dwFileAttributes, int pixe dwFileAttributes, &fileInfo, sizeof(fileInfo), - SHGFI_USEFILEATTRIBUTES | //== no disk access: http://blogs.msdn.com/b/oldnewthing/archive/2004/06/01/145428.aspx + SHGFI_USEFILEATTRIBUTES | //== no disk access: https://blogs.msdn.microsoft.com/oldnewthing/20040601-00/?p=39073/ SHGFI_SYSICONINDEX); if (!imgList) //not owned: no need for IUnknown::Release()! return ImageHolder(); @@ -229,11 +229,11 @@ ImageHolder zen::getFileIcon(const Zstring& filePath, int pixelSize) { (void)imgList; //imgList->Release(); //empiric study: crash on XP if we release this! Seems we do not own it... -> also no GDI leak on Win7 -> okay - //another comment on http://msdn.microsoft.com/en-us/library/bb762179(v=VS.85).aspx describes exact same behavior on Win7/XP + //another comment on https://msdn.microsoft.com/en-us/library/bb762179 describes exact same behavior on Win7/XP //Quote: "The IImageList pointer type, such as that returned in the ppv parameter, can be cast as an HIMAGELIST as needed; // for example, for use in a list view. Conversely, an HIMAGELIST can be cast as a pointer to an IImageList." - //http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185(v=vs.85).aspx + //https://msdn.microsoft.com/en-us/library/windows/desktop/bb762185 //Check for link icon type (= shell links and symlinks): SHGetFileInfo + SHGFI_ATTRIBUTES: //const bool isLink = (fileInfo.dwAttributes & SFGAO_LINK) != 0; diff --git a/FreeFileSync/Source/lib/localization.cpp b/FreeFileSync/Source/lib/localization.cpp index 098f42d7..f0a5ce4b 100644 --- a/FreeFileSync/Source/lib/localization.cpp +++ b/FreeFileSync/Source/lib/localization.cpp @@ -474,7 +474,8 @@ void zen::setLanguage(wxLanguage lng) //throw FileError wxLanguage zen::getLanguage() { - const FFSTranslation* loc = dynamic_cast<const FFSTranslation*>(zen::getTranslator()); + std::shared_ptr<const TranslationHandler> t = zen::getTranslator(); + const FFSTranslation* loc = dynamic_cast<const FFSTranslation*>(t.get()); return loc ? loc->getLangId() : wxLANGUAGE_ENGLISH_US; } diff --git a/FreeFileSync/Source/lib/parallel_scan.cpp b/FreeFileSync/Source/lib/parallel_scan.cpp index 4cc12619..737b2023 100644 --- a/FreeFileSync/Source/lib/parallel_scan.cpp +++ b/FreeFileSync/Source/lib/parallel_scan.cpp @@ -410,10 +410,10 @@ DirCallback::HandleLink DirCallback::onSymlink(const SymlinkInfo& si) //throw Th switch (cfg.handleSymlinks_) { - case SYMLINK_EXCLUDE: + case SymLinkHandling::EXCLUDE: return LINK_SKIP; - case SYMLINK_DIRECT: + case SymLinkHandling::DIRECT: if (cfg.filter_->passFileFilter(linkRelPath)) //always use file filter: Link type may not be "stable" on Linux! { output_.addSubLink(si.itemName, LinkDescriptor(si.lastWriteTime)); @@ -421,7 +421,7 @@ DirCallback::HandleLink DirCallback::onSymlink(const SymlinkInfo& si) //throw Th } return LINK_SKIP; - case SYMLINK_FOLLOW: + case SymLinkHandling::FOLLOW: //filter symlinks before trying to follow them: handle user-excluded broken symlinks! //since we don't know yet what type the symlink will resolve to, only do this when both variants agree: if (!cfg.filter_->passFileFilter(linkRelPath)) diff --git a/FreeFileSync/Source/lib/parse_lng.h b/FreeFileSync/Source/lib/parse_lng.h index d1c345d5..29144a48 100644 --- a/FreeFileSync/Source/lib/parse_lng.h +++ b/FreeFileSync/Source/lib/parse_lng.h @@ -25,12 +25,12 @@ namespace lngfile { //singular forms -typedef std::map <std::string, std::string> TranslationMap; //orig |-> translation +using TranslationMap = std::map <std::string, std::string>; //orig |-> translation //plural forms -typedef std::pair<std::string, std::string> SingularPluralPair; //1 house| n houses -typedef std::vector<std::string> PluralForms; //1 dom | 2 domy | 5 domw -typedef std::map<SingularPluralPair, PluralForms> TranslationPluralMap; //(sing/plu) |-> pluralforms +using SingularPluralPair = std::pair<std::string, std::string>; //1 house | %x houses +using PluralForms = std::vector<std::string>; //1 dom | 2 domy | %x domw +using TranslationPluralMap = std::map<SingularPluralPair, PluralForms>; //(sing/plu) |-> pluralforms struct TransHeader { @@ -193,7 +193,7 @@ struct Token class KnownTokens { public: - typedef std::map<Token::Type, std::string> TokenMap; + using TokenMap = std::map<Token::Type, std::string>; static const TokenMap& getList() { @@ -457,7 +457,7 @@ private: using namespace zen; if (original.empty()) - throw ParsingError(L"Source translation is empty", scn.posRow(), scn.posCol()); + throw ParsingError(L"Translation source text is empty", scn.posRow(), scn.posCol()); if (!translation.empty()) { @@ -514,6 +514,12 @@ private: //if source is a one-liner, so should be the translation if (!contains(original, '\n') && contains(translation, '\n')) throw ParsingError(L"Source text is a one-liner, but translation consists of multiple lines", scn.posRow(), scn.posCol()); + + //check for correct FFS brand names + if (contains(original, "FreeFileSync") && !contains(translation, "FreeFileSync")) + throw ParsingError(L"Misspelled \"FreeFileSync\" in translation", scn.posRow(), scn.posCol()); + if (contains(original, "RealTimeSync") && !contains(translation, "RealTimeSync")) + throw ParsingError(L"Misspelled \"RealTimeSync\" in translation", scn.posRow(), scn.posCol()); } } @@ -522,7 +528,7 @@ private: using namespace zen; //check the primary placeholder is existing at least for the second english text if (!contains(original.second, "%x")) - throw ParsingError(L"Plural form source does not contain %x placeholder", scn.posRow(), scn.posCol()); + throw ParsingError(L"Plural form source text does not contain %x placeholder", scn.posRow(), scn.posCol()); if (!translation.empty()) { diff --git a/FreeFileSync/Source/lib/parse_plural.h b/FreeFileSync/Source/lib/parse_plural.h index 54206cef..72e0a8da 100644 --- a/FreeFileSync/Source/lib/parse_plural.h +++ b/FreeFileSync/Source/lib/parse_plural.h @@ -205,24 +205,7 @@ struct Token class Scanner { public: - Scanner(const std::string& stream) : stream_(stream), pos(stream_.begin()) - { - tokens.emplace_back("?" , Token::TK_TERNARY_QUEST); - tokens.emplace_back(":" , Token::TK_TERNARY_COLON); - tokens.emplace_back("||", Token::TK_OR ); - tokens.emplace_back("&&", Token::TK_AND ); - tokens.emplace_back("==", Token::TK_EQUAL ); - tokens.emplace_back("!=", Token::TK_NOT_EQUAL ); - tokens.emplace_back("<=", Token::TK_LESS_EQUAL ); - tokens.emplace_back("<" , Token::TK_LESS ); - tokens.emplace_back(">=", Token::TK_GREATER_EQUAL); - tokens.emplace_back(">" , Token::TK_GREATER ); - tokens.emplace_back("%" , Token::TK_MODULUS ); - tokens.emplace_back("n" , Token::TK_VARIABLE_N ); - tokens.emplace_back("N" , Token::TK_VARIABLE_N ); - tokens.emplace_back("(" , Token::TK_BRACKET_LEFT ); - tokens.emplace_back(")" , Token::TK_BRACKET_RIGHT); - } + Scanner(const std::string& stream) : stream_(stream), pos(stream_.begin()) {} Token nextToken() { @@ -259,8 +242,25 @@ private: return std::equal(prefix.begin(), prefix.end(), pos); } - typedef std::vector<std::pair<std::string, Token::Type>> TokenList; - TokenList tokens; + using TokenList = std::vector<std::pair<std::string, Token::Type>>; + const TokenList tokens + { + { "?" , Token::TK_TERNARY_QUEST }, + { ":" , Token::TK_TERNARY_COLON }, + { "||", Token::TK_OR }, + { "&&", Token::TK_AND }, + { "==", Token::TK_EQUAL }, + { "!=", Token::TK_NOT_EQUAL }, + { "<=", Token::TK_LESS_EQUAL }, + { "<" , Token::TK_LESS }, + { ">=", Token::TK_GREATER_EQUAL }, + { ">" , Token::TK_GREATER }, + { "%" , Token::TK_MODULUS }, + { "n" , Token::TK_VARIABLE_N }, + { "N" , Token::TK_VARIABLE_N }, + { "(" , Token::TK_BRACKET_LEFT }, + { ")" , Token::TK_BRACKET_RIGHT }, + }; const std::string stream_; std::string::const_iterator pos; diff --git a/FreeFileSync/Source/lib/process_xml.cpp b/FreeFileSync/Source/lib/process_xml.cpp index 04b55ea5..64176dde 100644 --- a/FreeFileSync/Source/lib/process_xml.cpp +++ b/FreeFileSync/Source/lib/process_xml.cpp @@ -14,10 +14,15 @@ #include <wx/intl.h> #include "ffs_paths.h" +#ifdef ZEN_WIN +#include <zen/win_ver.h> +#endif + using namespace zen; using namespace xmlAccess; //functionally needed for correct overload resolution!!! using namespace std::rel_ops; + namespace { //------------------------------------------------------------------------------------------------------------------------------- @@ -73,6 +78,20 @@ void setXmlType(XmlDoc& doc, XmlType type) //throw() } } + +XmlGlobalSettings::XmlGlobalSettings() +{ +#ifdef ZEN_WIN + static const wchar_t* winMergeExePath = running64BitWindows() ? + L"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe" : + L"C:\\Program Files\\WinMerge\\WinMergeU.exe"; + static const bool winMergeInstalled = fileExists(winMergeExePath); //magic statics! + + if (winMergeInstalled) + gui.externelApplications.emplace_back(L"WinMerge", std::wstring(L"\"") + winMergeExePath + L"\" \"%item_path%\" \"%item2_path%\""); +#endif +} + //################################################################################################################ Zstring xmlAccess::getGlobalConfigFile() @@ -176,13 +195,13 @@ void writeText(const CompareVariant& value, std::string& output) { switch (value) { - case CMP_BY_TIME_SIZE: + case CompareVariant::TIME_SIZE: output = "TimeAndSize"; break; - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: output = "Content"; break; - case CMP_BY_SIZE: + case CompareVariant::SIZE: output = "Size"; break; } @@ -193,11 +212,11 @@ bool readText(const std::string& input, CompareVariant& value) { const std::string tmp = trimCpy(input); if (tmp == "TimeAndSize") - value = CMP_BY_TIME_SIZE; + value = CompareVariant::TIME_SIZE; else if (tmp == "Content") - value = CMP_BY_CONTENT; + value = CompareVariant::CONTENT; else if (tmp == "Size") - value = CMP_BY_SIZE; + value = CompareVariant::SIZE; else return false; return true; @@ -337,13 +356,13 @@ void writeText(const DeletionPolicy& value, std::string& output) { switch (value) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: output = "Permanent"; break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: output = "RecycleBin"; break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: output = "Versioning"; break; } @@ -354,11 +373,11 @@ bool readText(const std::string& input, DeletionPolicy& value) { const std::string tmp = trimCpy(input); if (tmp == "Permanent") - value = DELETE_PERMANENTLY; + value = DeletionPolicy::PERMANENT; else if (tmp == "RecycleBin") - value = DELETE_TO_RECYCLER; + value = DeletionPolicy::RECYCLER; else if (tmp == "Versioning") - value = DELETE_TO_VERSIONING; + value = DeletionPolicy::VERSIONING; else return false; return true; @@ -370,13 +389,13 @@ void writeText(const SymLinkHandling& value, std::string& output) { switch (value) { - case SYMLINK_EXCLUDE: + case SymLinkHandling::EXCLUDE: output = "Exclude"; break; - case SYMLINK_DIRECT: + case SymLinkHandling::DIRECT: output = "Direct"; break; - case SYMLINK_FOLLOW: + case SymLinkHandling::FOLLOW: output = "Follow"; break; } @@ -387,11 +406,11 @@ bool readText(const std::string& input, SymLinkHandling& value) { const std::string tmp = trimCpy(input); if (tmp == "Exclude") - value = SYMLINK_EXCLUDE; + value = SymLinkHandling::EXCLUDE; else if (tmp == "Direct") - value = SYMLINK_DIRECT; + value = SymLinkHandling::DIRECT; else if (tmp == "Follow") - value = SYMLINK_FOLLOW; + value = SymLinkHandling::FOLLOW; else return false; return true; @@ -403,17 +422,8 @@ void writeText(const ColumnTypeRim& value, std::string& output) { switch (value) { - case ColumnTypeRim::BASE_DIRECTORY: - output = "Base"; - break; - case ColumnTypeRim::FULL_PATH: - output = "Full"; - break; - case ColumnTypeRim::REL_FOLDER: - output = "Rel"; - break; - case ColumnTypeRim::FILENAME: - output = "Name"; + case ColumnTypeRim::ITEM_PATH: + output = "Path"; break; case ColumnTypeRim::SIZE: output = "Size"; @@ -431,14 +441,8 @@ template <> inline bool readText(const std::string& input, ColumnTypeRim& value) { const std::string tmp = trimCpy(input); - if (tmp == "Base") - value = ColumnTypeRim::BASE_DIRECTORY; - else if (tmp == "Full") - value = ColumnTypeRim::FULL_PATH; - else if (tmp == "Rel") - value = ColumnTypeRim::REL_FOLDER; - else if (tmp == "Name") - value = ColumnTypeRim::FILENAME; + if (tmp == "Path") + value = ColumnTypeRim::ITEM_PATH; else if (tmp == "Size") value = ColumnTypeRim::SIZE; else if (tmp == "Date") @@ -452,6 +456,39 @@ bool readText(const std::string& input, ColumnTypeRim& value) template <> inline +void writeText(const ItemPathFormat& value, std::string& output) +{ + switch (value) + { + case ItemPathFormat::FULL_PATH: + output = "Full"; + break; + case ItemPathFormat::RELATIVE_PATH: + output = "Relative"; + break; + case ItemPathFormat::ITEM_NAME: + output = "Item"; + break; + } +} + +template <> inline +bool readText(const std::string& input, ItemPathFormat& value) +{ + const std::string tmp = trimCpy(input); + if (tmp == "Full") + value = ItemPathFormat::FULL_PATH; + else if (tmp == "Relative") + value = ItemPathFormat::RELATIVE_PATH; + else if (tmp == "Item") + value = ItemPathFormat::ITEM_NAME; + else + return false; + return true; +} + + +template <> inline void writeText(const ColumnTypeNavi& value, std::string& output) { switch (value) @@ -489,16 +526,16 @@ void writeText(const UnitSize& value, std::string& output) { switch (value) { - case USIZE_NONE: + case UnitSize::NONE: output = "None"; break; - case USIZE_BYTE: + case UnitSize::BYTE: output = "Byte"; break; - case USIZE_KB: + case UnitSize::KB: output = "KB"; break; - case USIZE_MB: + case UnitSize::MB: output = "MB"; break; } @@ -509,13 +546,13 @@ bool readText(const std::string& input, UnitSize& value) { const std::string tmp = trimCpy(input); if (tmp == "None") - value = USIZE_NONE; + value = UnitSize::NONE; else if (tmp == "Byte") - value = USIZE_BYTE; + value = UnitSize::BYTE; else if (tmp == "KB") - value = USIZE_KB; + value = UnitSize::KB; else if (tmp == "MB") - value = USIZE_MB; + value = UnitSize::MB; else return false; return true; @@ -526,19 +563,19 @@ void writeText(const UnitTime& value, std::string& output) { switch (value) { - case UTIME_NONE: + case UnitTime::NONE: output = "None"; break; - case UTIME_TODAY: + case UnitTime::TODAY: output = "Today"; break; - case UTIME_THIS_MONTH: + case UnitTime::THIS_MONTH: output = "Month"; break; - case UTIME_THIS_YEAR: + case UnitTime::THIS_YEAR: output = "Year"; break; - case UTIME_LAST_X_DAYS: + case UnitTime::LAST_X_DAYS: output = "x-days"; break; } @@ -549,15 +586,15 @@ bool readText(const std::string& input, UnitTime& value) { const std::string tmp = trimCpy(input); if (tmp == "None") - value = UTIME_NONE; + value = UnitTime::NONE; else if (tmp == "Today") - value = UTIME_TODAY; + value = UnitTime::TODAY; else if (tmp == "Month") - value = UTIME_THIS_MONTH; + value = UnitTime::THIS_MONTH; else if (tmp == "Year") - value = UTIME_THIS_YEAR; + value = UnitTime::THIS_YEAR; else if (tmp == "x-days") - value = UTIME_LAST_X_DAYS; + value = UnitTime::LAST_X_DAYS; else return false; return true; @@ -568,10 +605,10 @@ void writeText(const VersioningStyle& value, std::string& output) { switch (value) { - case VER_STYLE_REPLACE: + case VersioningStyle::REPLACE: output = "Replace"; break; - case VER_STYLE_ADD_TIMESTAMP: + case VersioningStyle::ADD_TIMESTAMP: output = "TimeStamp"; break; } @@ -582,9 +619,9 @@ bool readText(const std::string& input, VersioningStyle& value) { const std::string tmp = trimCpy(input); if (tmp == "Replace") - value = VER_STYLE_REPLACE; + value = VersioningStyle::REPLACE; else if (tmp == "TimeStamp") - value = VER_STYLE_ADD_TIMESTAMP; + value = VersioningStyle::ADD_TIMESTAMP; else return false; return true; @@ -596,7 +633,7 @@ void writeText(const DirectionConfig::Variant& value, std::string& output) { switch (value) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: output = "TwoWay"; break; case DirectionConfig::MIRROR: @@ -616,7 +653,7 @@ bool readText(const std::string& input, DirectionConfig::Variant& value) { const std::string tmp = trimCpy(input); if (tmp == "TwoWay") - value = DirectionConfig::TWOWAY; + value = DirectionConfig::TWO_WAY; else if (tmp == "Mirror") value = DirectionConfig::MIRROR; else if (tmp == "Update") @@ -1038,28 +1075,31 @@ void readConfig(const XmlIn& in, XmlGlobalSettings& config) //########################################################### XmlIn inOverview = inWnd["OverviewPanel"]; - inOverview.attribute("ShowPercentage", config.gui.mainDlg.showPercentBar); - inOverview.attribute("SortByColumn", config.gui.mainDlg.naviLastSortColumn); - inOverview.attribute("SortAscending", config.gui.mainDlg.naviLastSortAscending); + inOverview.attribute("ShowPercentage", config.gui.mainDlg.naviGridShowPercentBar); + inOverview.attribute("SortByColumn", config.gui.mainDlg.naviGridLastSortColumn); + inOverview.attribute("SortAscending", config.gui.mainDlg.naviGridLastSortAscending); //read column attributes XmlIn inColNavi = inOverview["Columns"]; inColNavi(config.gui.mainDlg.columnAttribNavi); - XmlIn inMainGrid = inWnd["MainGrid"]; + XmlIn inMainGrid = inWnd["CenterPanel"]; inMainGrid.attribute("ShowIcons", config.gui.mainDlg.showIcons); inMainGrid.attribute("IconSize", config.gui.mainDlg.iconSize); inMainGrid.attribute("SashOffset", config.gui.mainDlg.sashOffset); XmlIn inColLeft = inMainGrid["ColumnsLeft"]; + inColLeft.attribute("PathFormat", config.gui.mainDlg.itemPathFormatLeftGrid); inColLeft(config.gui.mainDlg.columnAttribLeft); XmlIn inColRight = inMainGrid["ColumnsRight"]; + inColRight.attribute("PathFormat", config.gui.mainDlg.itemPathFormatRightGrid); inColRight(config.gui.mainDlg.columnAttribRight); + //########################################################### inWnd["DefaultViewFilter"](config.gui.mainDlg.viewFilterDefault); - inWnd["Perspective4"](config.gui.mainDlg.guiPerspectiveLast); + inWnd["Perspective5"](config.gui.mainDlg.guiPerspectiveLast); std::vector<Zstring> tmp = splitFilterByLines(config.gui.defaultExclusionFilter); //default value inGui["DefaultExclusionFilter"](tmp); @@ -1079,7 +1119,30 @@ void readConfig(const XmlIn& in, XmlGlobalSettings& config) inGui["OnCompletionHistory"].attribute("MaxSize", config.gui.onCompletionHistoryMax); //external applications - inGui["ExternalApplications"](config.gui.externelApplications); + warn_static("remove old parameter after migration! 2016-05-28") + if (inGui["ExternalApplications"]) + { + inGui["ExternalApplications"](config.gui.externelApplications); + if (config.gui.externelApplications.empty()) //who knows, let's repair some old failed data migrations + config.gui.externelApplications = XmlGlobalSettings().gui.externelApplications; + else + { +#ifdef ZEN_WIN + if (std::none_of(config.gui.externelApplications.begin(), config.gui.externelApplications.end(), + [](const auto& item) { return contains(makeUpperCopy(item.second), L"WINMERGEU.EXE"); } )) + { + static const wchar_t* winMergeExePath = running64BitWindows() ? + L"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe" : + L"C:\\Program Files\\WinMerge\\WinMergeU.exe"; + static const bool winMergeInstalled = fileExists(winMergeExePath); //magic statics! + if (winMergeInstalled) + config.gui.externelApplications.emplace_back(L"WinMerge", std::wstring(L"\"") + winMergeExePath + L"\" \"%item_path%\" \"%item2_path%\""); + } +#endif + } + } + else + inGui["ExternalApps"](config.gui.externelApplications); //last update check inGui["LastOnlineCheck" ](config.gui.lastUpdateCheck); @@ -1117,7 +1180,7 @@ void readConfig(const Zstring& filepath, XmlType type, ConfigType& cfg, int curr //(try to) migrate old configuration if needed if (needsMigration(doc, currentXmlFormatVer)) try { xmlAccess::writeConfig(cfg, filepath); /*throw FileError*/ } - catch (FileError&) { assert(false); } //don't bother user! + catch (FileError&) { assert(false); } //don't bother user! } catch (const FileError& e) { @@ -1426,28 +1489,31 @@ void writeConfig(const XmlGlobalSettings& config, XmlOut& out) //########################################################### XmlOut outOverview = outWnd["OverviewPanel"]; - outOverview.attribute("ShowPercentage", config.gui.mainDlg.showPercentBar); - outOverview.attribute("SortByColumn", config.gui.mainDlg.naviLastSortColumn); - outOverview.attribute("SortAscending", config.gui.mainDlg.naviLastSortAscending); + outOverview.attribute("ShowPercentage", config.gui.mainDlg.naviGridShowPercentBar); + outOverview.attribute("SortByColumn", config.gui.mainDlg.naviGridLastSortColumn); + outOverview.attribute("SortAscending", config.gui.mainDlg.naviGridLastSortAscending); //write column attributes XmlOut outColNavi = outOverview["Columns"]; outColNavi(config.gui.mainDlg.columnAttribNavi); - XmlOut outMainGrid = outWnd["MainGrid"]; + XmlOut outMainGrid = outWnd["CenterPanel"]; outMainGrid.attribute("ShowIcons", config.gui.mainDlg.showIcons); outMainGrid.attribute("IconSize", config.gui.mainDlg.iconSize); outMainGrid.attribute("SashOffset", config.gui.mainDlg.sashOffset); XmlOut outColLeft = outMainGrid["ColumnsLeft"]; + outColLeft.attribute("PathFormat", config.gui.mainDlg.itemPathFormatLeftGrid); outColLeft(config.gui.mainDlg.columnAttribLeft); XmlOut outColRight = outMainGrid["ColumnsRight"]; + outColRight.attribute("PathFormat", config.gui.mainDlg.itemPathFormatRightGrid); outColRight(config.gui.mainDlg.columnAttribRight); + //########################################################### outWnd["DefaultViewFilter"](config.gui.mainDlg.viewFilterDefault); - outWnd["Perspective4"](config.gui.mainDlg.guiPerspectiveLast); + outWnd["Perspective5"](config.gui.mainDlg.guiPerspectiveLast); outGui["DefaultExclusionFilter"](splitFilterByLines(config.gui.defaultExclusionFilter)); @@ -1465,7 +1531,7 @@ void writeConfig(const XmlGlobalSettings& config, XmlOut& out) outGui["OnCompletionHistory"].attribute("MaxSize", config.gui.onCompletionHistoryMax); //external applications - outGui["ExternalApplications"](config.gui.externelApplications); + outGui["ExternalApps"](config.gui.externelApplications); //last update check outGui["LastOnlineCheck" ](config.gui.lastUpdateCheck); diff --git a/FreeFileSync/Source/lib/process_xml.h b/FreeFileSync/Source/lib/process_xml.h index 6e06e795..a752dc85 100644 --- a/FreeFileSync/Source/lib/process_xml.h +++ b/FreeFileSync/Source/lib/process_xml.h @@ -40,9 +40,9 @@ enum OnGuiError ON_GUIERROR_IGNORE }; -typedef std::wstring Description; -typedef std::wstring Commandline; -typedef std::vector<std::pair<Description, Commandline>> ExternalApps; +using Description = std::wstring; +using Commandline = std::wstring; +using ExternalApps = std::vector<std::pair<Description, Commandline>>; //--------------------------------------------------------------------- struct XmlGuiConfig @@ -76,17 +76,17 @@ struct XmlBatchConfig struct OptionalDialogs { - bool warningDependentFolders = true; - bool warningFolderPairRaceCondition = true; - bool warningSignificantDifference = true; - bool warningNotEnoughDiskSpace = true; - bool warningUnresolvedConflicts = true; - bool warningDatabaseError = true; - bool warningRecyclerMissing = true; - bool warningInputFieldEmpty = true; - bool warningDirectoryLockFailed = true; - bool popupOnConfigChange = true; - bool confirmSyncStart = true; + bool warningDependentFolders = true; + bool warningFolderPairRaceCondition = true; + bool warningSignificantDifference = true; + bool warningNotEnoughDiskSpace = true; + bool warningUnresolvedConflicts = true; + bool warningDatabaseError = true; + bool warningRecyclerMissing = true; + bool warningInputFieldEmpty = true; + bool warningDirectoryLockFailed = true; + bool popupOnConfigChange = true; + bool confirmSyncStart = true; bool confirmExternalCommandMassInvoke = true; }; @@ -135,7 +135,7 @@ Zstring getGlobalConfigFile(); struct XmlGlobalSettings { - XmlGlobalSettings() {} //clang needs this + XmlGlobalSettings(); //clang needs this anyway //--------------------------------------------------------------------- //Shared (GUI/BATCH) settings @@ -160,25 +160,6 @@ struct XmlGlobalSettings //--------------------------------------------------------------------- struct Gui { - Gui() - { - //default external apps will be translated "on the fly"!!! - //CONTRACT: first entry will be used for [Enter] or mouse double-click, second for open with default app! -#ifdef ZEN_WIN - externelApplications.emplace_back(L"Show in Explorer", L"explorer /select, \"%item_path%\""); - externelApplications.emplace_back(L"Open with default application", L"\"%item_path%\""); - //mark for extraction: _("Show in Explorer") - //mark for extraction: _("Open with default application") -#elif defined ZEN_LINUX - externelApplications.emplace_back(L"Browse directory", L"xdg-open \"%item_folder%\""); - externelApplications.emplace_back(L"Open with default application", L"xdg-open \"%item_path%\""); - //mark for extraction: _("Browse directory") Linux doesn't use the term "folder" -#elif defined ZEN_MAC - externelApplications.emplace_back(L"Browse directory", L"open -R \"%item_path%\""); - externelApplications.emplace_back(L"Open with default application", L"open \"%item_path%\""); -#endif - } - struct { wxPoint dlgPos; @@ -187,7 +168,7 @@ struct XmlGlobalSettings struct { - bool keepRelPaths = true; + bool keepRelPaths = false; bool overwriteIfExists = false; Zstring lastUsedPath; std::vector<Zstring> folderHistory; @@ -198,9 +179,9 @@ struct XmlGlobalSettings bool textSearchRespectCase = false; //good default for Linux, too! int maxFolderPairsVisible = 6; - bool showPercentBar = zen::defaultValueShowPercentage; //in navigation panel - bool naviLastSortAscending = zen::defaultValueLastSortAscending; // - zen::ColumnTypeNavi naviLastSortColumn = zen::defaultValueLastSortColumn; //remember sort on navigation panel + bool naviGridShowPercentBar = zen::naviGridShowPercentageDefault; //in navigation panel + zen::ColumnTypeNavi naviGridLastSortColumn = zen::naviGridLastSortColumnDefault; //remember sort on navigation panel + bool naviGridLastSortAscending = zen::naviGridLastSortAscendingDefault; // std::vector<zen::ColumnAttributeNavi> columnAttribNavi = zen::getDefaultColumnAttributesNavi(); //compressed view/navigation @@ -208,6 +189,9 @@ struct XmlGlobalSettings FileIconSize iconSize = ICON_SIZE_SMALL; int sashOffset = 0; + zen::ItemPathFormat itemPathFormatLeftGrid = zen::defaultItemPathFormatLeftGrid; + zen::ItemPathFormat itemPathFormatRightGrid = zen::defaultItemPathFormatRightGrid; + std::vector<zen::ColumnAttributeRim> columnAttribLeft = zen::getDefaultColumnAttributesLeft(); std::vector<zen::ColumnAttributeRim> columnAttribRight = zen::getDefaultColumnAttributesRight(); @@ -245,7 +229,24 @@ struct XmlGlobalSettings std::vector<Zstring> onCompletionHistory; size_t onCompletionHistoryMax = 8; - ExternalApps externelApplications; + ExternalApps externelApplications + { + //default external apps will be translated "on the fly"!!! + //CONTRACT: first entry will be used for [Enter] or mouse double-click, second for open with default app! +#ifdef ZEN_WIN + { L"Show in Explorer", L"explorer /select, \"%item_path%\"" }, + { L"Open with default application", L"\"%item_path%\"" }, + //mark for extraction: _("Show in Explorer") + //mark for extraction: _("Open with default application") +#elif defined ZEN_LINUX + { L"Browse directory", L"xdg-open \"%item_folder%\"" }, + { L"Open with default application", L"xdg-open \"%item_path%\"" }, + //mark for extraction: _("Browse directory") Linux doesn't use the term "folder" +#elif defined ZEN_MAC + { L"Browse directory", L"open -R \"%item_path%\"" }, + { L"Open with default application", L"open \"%item_path%\"" }, +#endif + }; time_t lastUpdateCheck = 0; //number of seconds since 00:00 hours, Jan 1, 1970 UTC std::wstring lastOnlineVersion; diff --git a/FreeFileSync/Source/lib/resolve_path.cpp b/FreeFileSync/Source/lib/resolve_path.cpp index f51435c0..a8d73a55 100644 --- a/FreeFileSync/Source/lib/resolve_path.cpp +++ b/FreeFileSync/Source/lib/resolve_path.cpp @@ -195,7 +195,7 @@ private: addCsidl(CSIDL_COMMON_DESKTOPDIRECTORY, L"csidl_PublicDesktop"); // C:\Users\All Users\Desktop addCsidl(CSIDL_FAVORITES, L"csidl_Favorites"); // C:\Users\<user>\Favorites - //addCsidl(CSIDL_COMMON_FAVORITES, L"csidl_PublicFavorites"); // C:\Users\<user>\Favorites; unused? -> http://blogs.msdn.com/b/oldnewthing/archive/2012/09/04/10346022.aspx + //addCsidl(CSIDL_COMMON_FAVORITES, L"csidl_PublicFavorites"); // C:\Users\<user>\Favorites; unused? -> https://blogs.msdn.microsoft.com/oldnewthing/20120904-00/?p=6693/ addCsidl(CSIDL_PERSONAL, L"csidl_MyDocuments"); // C:\Users\<user>\Documents addCsidl(CSIDL_COMMON_DOCUMENTS, L"csidl_PublicDocuments"); // C:\Users\Public\Documents diff --git a/FreeFileSync/Source/lib/soft_filter.h b/FreeFileSync/Source/lib/soft_filter.h index 262dd934..18e75244 100644 --- a/FreeFileSync/Source/lib/soft_filter.h +++ b/FreeFileSync/Source/lib/soft_filter.h @@ -42,9 +42,9 @@ private: std::uint64_t sizeMax, bool matchesFolder); - std::int64_t timeFrom_; //unit: UTC, seconds - std::uint64_t sizeMin_; //unit: bytes - std::uint64_t sizeMax_; //unit: bytes + std::int64_t timeFrom_ = 0; //unit: UTC, seconds + std::uint64_t sizeMin_ = 0; //unit: bytes + std::uint64_t sizeMax_ = 0; //unit: bytes const bool matchesFolder_; }; } @@ -68,12 +68,9 @@ inline SoftFilter::SoftFilter(size_t timeSpan, UnitTime unitTimeSpan, size_t sizeMin, UnitSize unitSizeMin, size_t sizeMax, UnitSize unitSizeMax) : - timeFrom_(), - sizeMin_ (), - sizeMax_ (), - matchesFolder_(unitTimeSpan == UTIME_NONE&& - unitSizeMin == USIZE_NONE&& - unitSizeMax == USIZE_NONE) //exclude folders if size or date filter is active: avoids creating empty folders if not needed! + matchesFolder_(unitTimeSpan == UnitTime::NONE && + unitSizeMin == UnitSize::NONE && + unitSizeMax == UnitSize::NONE) //exclude folders if size or date filter is active: avoids creating empty folders if not needed! { resolveUnits(timeSpan, unitTimeSpan, sizeMin, unitSizeMin, diff --git a/FreeFileSync/Source/lib/status_handler.h b/FreeFileSync/Source/lib/status_handler.h index b2048329..4dbf1498 100644 --- a/FreeFileSync/Source/lib/status_handler.h +++ b/FreeFileSync/Source/lib/status_handler.h @@ -39,11 +39,11 @@ struct Statistics virtual ProcessCallback::Phase currentPhase() const = 0; - virtual int getObjectsCurrent(ProcessCallback::Phase phaseId) const = 0; - virtual int getObjectsTotal (ProcessCallback::Phase phaseId) const = 0; + virtual int getItemsCurrent(ProcessCallback::Phase phaseId) const = 0; + virtual int getItemsTotal (ProcessCallback::Phase phaseId) const = 0; - virtual std::int64_t getDataCurrent(ProcessCallback::Phase phaseId) const = 0; - virtual std::int64_t getDataTotal (ProcessCallback::Phase phaseId) const = 0; + virtual std::int64_t getBytesCurrent(ProcessCallback::Phase phaseId) const = 0; + virtual std::int64_t getBytesTotal (ProcessCallback::Phase phaseId) const = 0; virtual const std::wstring& currentStatusText() const = 0; }; @@ -96,18 +96,18 @@ protected: //implement Statistics Phase currentPhase() const override { return currentPhase_; } - int getObjectsCurrent(Phase phaseId) const override { return refNumbers(numbersCurrent_, phaseId).first; } - int getObjectsTotal (Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersTotal_ , phaseId).first; } + int getItemsCurrent(Phase phaseId) const override { return refNumbers(numbersCurrent_, phaseId).first; } + int getItemsTotal (Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersTotal_ , phaseId).first; } - std::int64_t getDataCurrent(Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersCurrent_, phaseId).second; } - std::int64_t getDataTotal (Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersTotal_ , phaseId).second; } + std::int64_t getBytesCurrent(Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersCurrent_, phaseId).second; } + std::int64_t getBytesTotal (Phase phaseId) const override { assert(phaseId != PHASE_SCANNING); return refNumbers(numbersTotal_ , phaseId).second; } const std::wstring& currentStatusText() const override { return statusText_; } bool abortIsRequested() const { return abortRequested; } private: - typedef std::vector<std::pair<int, std::int64_t>> StatNumbers; + using StatNumbers = std::vector<std::pair<int, std::int64_t>>; void updateData(StatNumbers& num, int objectsDelta, std::int64_t dataDelta) { diff --git a/FreeFileSync/Source/lib/versioning.cpp b/FreeFileSync/Source/lib/versioning.cpp index 68561b21..02b3eca1 100644 --- a/FreeFileSync/Source/lib/versioning.cpp +++ b/FreeFileSync/Source/lib/versioning.cpp @@ -75,10 +75,10 @@ void FileVersioner::moveItemToVersioning(const AbstractPath& itemPath, const Zst Zstring versionedRelPath; switch (versioningStyle_) { - case VER_STYLE_REPLACE: + case VersioningStyle::REPLACE: versionedRelPath = relativePath; break; - case VER_STYLE_ADD_TIMESTAMP: //assemble time-stamped version name + case VersioningStyle::ADD_TIMESTAMP: //assemble time-stamped version name versionedRelPath = relativePath + Zstr(' ') + timeStamp_ + getDotExtension(relativePath); assert(impl::isMatchingVersion(afterLast(relativePath, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL), afterLast(versionedRelPath, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL))); //paranoid? no! diff --git a/FreeFileSync/Source/structures.cpp b/FreeFileSync/Source/structures.cpp index 1e443433..e1fed4a7 100644 --- a/FreeFileSync/Source/structures.cpp +++ b/FreeFileSync/Source/structures.cpp @@ -55,11 +55,11 @@ std::wstring zen::getVariantName(CompareVariant var) { switch (var) { - case CMP_BY_TIME_SIZE: + case CompareVariant::TIME_SIZE: return _("File time and size"); - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: return _("File content"); - case CMP_BY_SIZE: + case CompareVariant::SIZE: return _("File size"); } assert(false); @@ -71,7 +71,7 @@ std::wstring zen::getVariantName(DirectionConfig::Variant var) { switch (var) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: return L"<- " + _("Two way") + L" ->"; case DirectionConfig::MIRROR: return _("Mirror") + L" ->"; @@ -90,7 +90,7 @@ DirectionSet zen::extractDirections(const DirectionConfig& cfg) DirectionSet output; switch (cfg.var) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: throw std::logic_error("there are no predefined directions for automatic mode! " + std::string(__FILE__) + ":" + numberTo<std::string>(__LINE__)); case DirectionConfig::MIRROR: @@ -121,7 +121,7 @@ DirectionSet zen::extractDirections(const DirectionConfig& cfg) bool zen::detectMovedFilesSelectable(const DirectionConfig& cfg) { - if (cfg.var == DirectionConfig::TWOWAY) + if (cfg.var == DirectionConfig::TWO_WAY) return false; //moved files are always detected since we have the database file anyway const DirectionSet tmp = zen::extractDirections(cfg); @@ -134,7 +134,7 @@ bool zen::detectMovedFilesSelectable(const DirectionConfig& cfg) bool zen::detectMovedFilesEnabled(const DirectionConfig& cfg) { - return detectMovedFilesSelectable(cfg) ? cfg.detectMovedFiles : cfg.var == DirectionConfig::TWOWAY; + return detectMovedFilesSelectable(cfg) ? cfg.detectMovedFiles : cfg.var == DirectionConfig::TWO_WAY; } @@ -286,16 +286,16 @@ std::int64_t resolve(size_t value, UnitTime unit, std::int64_t defaultVal) switch (unit) { - case UTIME_NONE: + case UnitTime::NONE: return defaultVal; - case UTIME_TODAY: + case UnitTime::TODAY: locTimeStruc.second = 0; //0-61 locTimeStruc.minute = 0; //0-59 locTimeStruc.hour = 0; //0-23 return localToTimeT(locTimeStruc); //convert local time back to UTC - //case UTIME_THIS_WEEK: + //case UnitTime::THIS_WEEK: //{ // localTimeFmt->tm_sec = 0; //0-61 // localTimeFmt->tm_min = 0; //0-59 @@ -308,14 +308,14 @@ std::int64_t resolve(size_t value, UnitTime unit, std::int64_t defaultVal) // return std::int64_t(timeFrom) - daysSinceBeginOfWeek(dayOfWeek) * 24 * 3600; //} - case UTIME_THIS_MONTH: + case UnitTime::THIS_MONTH: locTimeStruc.second = 0; //0-61 locTimeStruc.minute = 0; //0-59 locTimeStruc.hour = 0; //0-23 locTimeStruc.day = 1; //1-31 return localToTimeT(locTimeStruc); - case UTIME_THIS_YEAR: + case UnitTime::THIS_YEAR: locTimeStruc.second = 0; //0-61 locTimeStruc.minute = 0; //0-59 locTimeStruc.hour = 0; //0-23 @@ -323,7 +323,7 @@ std::int64_t resolve(size_t value, UnitTime unit, std::int64_t defaultVal) locTimeStruc.month = 1; //1-12 return localToTimeT(locTimeStruc); - case UTIME_LAST_X_DAYS: + case UnitTime::LAST_X_DAYS: locTimeStruc.second = 0; //0-61 locTimeStruc.minute = 0; //0-59 locTimeStruc.hour = 0; //0-23 @@ -341,14 +341,14 @@ std::uint64_t resolve(size_t value, UnitSize unit, std::uint64_t defaultVal) switch (unit) { - case USIZE_NONE: + case UnitSize::NONE: return defaultVal; - case USIZE_BYTE: + case UnitSize::BYTE: return value; - case USIZE_KB: + case UnitSize::KB: return value > maxVal / 1024U ? maxVal : //prevent overflow!!! 1024U * value; - case USIZE_MB: + case UnitSize::MB: return value > maxVal / (1024 * 1024U) ? maxVal : //prevent overflow!!! 1024 * 1024U * value; } diff --git a/FreeFileSync/Source/structures.h b/FreeFileSync/Source/structures.h index 82a0ddf1..d0f2699a 100644 --- a/FreeFileSync/Source/structures.h +++ b/FreeFileSync/Source/structures.h @@ -13,20 +13,21 @@ namespace zen { -enum CompareVariant +enum class CompareVariant { - CMP_BY_TIME_SIZE, - CMP_BY_CONTENT, - CMP_BY_SIZE + TIME_SIZE, + CONTENT, + SIZE }; std::wstring getVariantName(CompareVariant var); -enum SymLinkHandling + +enum class SymLinkHandling { - SYMLINK_EXCLUDE, - SYMLINK_DIRECT, - SYMLINK_FOLLOW + EXCLUDE, + DIRECT, + FOLLOW }; @@ -43,9 +44,9 @@ enum CompareFilesResult FILE_EQUAL, FILE_LEFT_SIDE_ONLY, FILE_RIGHT_SIDE_ONLY, - FILE_LEFT_NEWER, //CMP_BY_TIME_SIZE only! + FILE_LEFT_NEWER, //CompareVariant::TIME_SIZE only! FILE_RIGHT_NEWER, // - FILE_DIFFERENT_CONTENT, //CMP_BY_CONTENT, CMP_BY_SIZE only! + FILE_DIFFERENT_CONTENT, //CompareVariant::CONTENT, CompareVariant::SIZE only! FILE_DIFFERENT_METADATA, //both sides equal, but different metadata only: short name case FILE_CONFLICT }; @@ -105,9 +106,9 @@ struct DirectionSet { SyncDirection exLeftSideOnly = SyncDirection::RIGHT; SyncDirection exRightSideOnly = SyncDirection::LEFT; - SyncDirection leftNewer = SyncDirection::RIGHT; //CMP_BY_TIME_SIZE only! + SyncDirection leftNewer = SyncDirection::RIGHT; //CompareVariant::TIME_SIZE only! SyncDirection rightNewer = SyncDirection::LEFT; // - SyncDirection different = SyncDirection::NONE; //CMP_BY_CONTENT, CMP_BY_SIZE only! + SyncDirection different = SyncDirection::NONE; //CompareVariant::CONTENT, CompareVariant::SIZE only! SyncDirection conflict = SyncDirection::NONE; }; @@ -128,15 +129,15 @@ struct DirectionConfig //technical representation of sync-config { enum Variant { - TWOWAY, //use sync-database to determine directions - MIRROR, //predefined - UPDATE, // - CUSTOM //use custom directions + TWO_WAY, //use sync-database to determine directions + MIRROR, //predefined + UPDATE, // + CUSTOM //use custom directions }; - Variant var = TWOWAY; + Variant var = TWO_WAY; DirectionSet custom; //sync directions for variant CUSTOM - bool detectMovedFiles = false; //dependent from Variant: e.g. always active for DirectionConfig::TWOWAY! => use functions below for evaluation! + bool detectMovedFiles = false; //dependent from Variant: e.g. always active for DirectionConfig::TWO_WAY! => use functions below for evaluation! }; inline @@ -151,23 +152,23 @@ bool operator==(const DirectionConfig& lhs, const DirectionConfig& rhs) bool detectMovedFilesSelectable(const DirectionConfig& cfg); bool detectMovedFilesEnabled (const DirectionConfig& cfg); -DirectionSet extractDirections(const DirectionConfig& cfg); //get sync directions: DON'T call for DirectionConfig::TWOWAY! +DirectionSet extractDirections(const DirectionConfig& cfg); //get sync directions: DON'T call for DirectionConfig::TWO_WAY! std::wstring getVariantName(DirectionConfig::Variant var); inline bool effectivelyEqual(const DirectionConfig& lhs, const DirectionConfig& rhs) { - return (lhs.var == DirectionConfig::TWOWAY) == (rhs.var == DirectionConfig::TWOWAY) && //either both two-way or none - (lhs.var == DirectionConfig::TWOWAY || extractDirections(lhs) == extractDirections(rhs)) && + return (lhs.var == DirectionConfig::TWO_WAY) == (rhs.var == DirectionConfig::TWO_WAY) && //either both two-way or none + (lhs.var == DirectionConfig::TWO_WAY || extractDirections(lhs) == extractDirections(rhs)) && detectMovedFilesEnabled(lhs) == detectMovedFilesEnabled(rhs); } struct CompConfig { - CompareVariant compareVar = CMP_BY_TIME_SIZE; - SymLinkHandling handleSymlinks = SYMLINK_EXCLUDE; + CompareVariant compareVar = CompareVariant::TIME_SIZE; + SymLinkHandling handleSymlinks = SymLinkHandling::EXCLUDE; std::vector<unsigned int> ignoreTimeShiftMinutes; //treat modification times with these offsets as equal }; @@ -187,17 +188,17 @@ std::vector<unsigned int> fromTimeShiftPhrase(const std::wstring& timeShiftPhras std::wstring toTimeShiftPhrase (const std::vector<unsigned int>& ignoreTimeShiftMinutes); -enum DeletionPolicy +enum class DeletionPolicy { - DELETE_PERMANENTLY, - DELETE_TO_RECYCLER, - DELETE_TO_VERSIONING + PERMANENT, + RECYCLER, + VERSIONING }; -enum VersioningStyle +enum class VersioningStyle { - VER_STYLE_REPLACE, - VER_STYLE_ADD_TIMESTAMP, + REPLACE, + ADD_TIMESTAMP, }; struct SyncConfig @@ -205,11 +206,11 @@ struct SyncConfig //sync direction settings DirectionConfig directionCfg; - DeletionPolicy handleDeletion = DELETE_TO_RECYCLER; //use Recycle, delete permanently or move to user-defined location + DeletionPolicy handleDeletion = DeletionPolicy::RECYCLER; //use Recycle, delete permanently or move to user-defined location //versioning options - VersioningStyle versioningStyle = VER_STYLE_REPLACE; + VersioningStyle versioningStyle = VersioningStyle::REPLACE; Zstring versioningFolderPhrase; - //int versionCountLimit; //max versions per file (DELETE_TO_VERSIONING); < 0 := no limit + //int versionCountLimit; //max versions per file (DeletionPolicy::VERSIONING); < 0 := no limit }; @@ -229,28 +230,28 @@ bool effectivelyEqual(const SyncConfig& lhs, const SyncConfig& rhs) { return effectivelyEqual(lhs.directionCfg, rhs.directionCfg) && lhs.handleDeletion == rhs.handleDeletion && - (lhs.handleDeletion != DELETE_TO_VERSIONING || //only compare deletion directory if required! + (lhs.handleDeletion != DeletionPolicy::VERSIONING || //only compare deletion directory if required! (lhs.versioningStyle == rhs.versioningStyle && lhs.versioningFolderPhrase == rhs.versioningFolderPhrase)); } -enum UnitSize +enum class UnitSize { - USIZE_NONE, - USIZE_BYTE, - USIZE_KB, - USIZE_MB + NONE, + BYTE, + KB, + MB }; -enum UnitTime +enum class UnitTime { - UTIME_NONE, - UTIME_TODAY, - // UTIME_THIS_WEEK, - UTIME_THIS_MONTH, - UTIME_THIS_YEAR, - UTIME_LAST_X_DAYS + NONE, + TODAY, + //THIS_WEEK, + THIS_MONTH, + THIS_YEAR, + LAST_X_DAYS }; struct FilterConfig @@ -275,7 +276,7 @@ struct FilterConfig /* Semantics of HardFilter: - 1. using it creates a NEW folder hierarchy! -> must be considered by <Automatic>-mode! (fortunately it turns out, doing nothing already has perfect semantics :) + 1. using it creates a NEW folder hierarchy! -> must be considered by <Two way> variant! (fortunately it turns out, doing nothing already has perfect semantics :) 2. it applies equally to both sides => it always matches either both sides or none! => can be used while traversing a single folder! */ Zstring includeFilter = Zstr("*"); @@ -285,16 +286,16 @@ struct FilterConfig Semantics of SoftFilter: 1. It potentially may match only one side => it MUST NOT be applied while traversing a single folder to avoid mismatches 2. => it is applied after traversing and just marks rows, (NO deletions after comparison are allowed) - 3. => equivalent to a user temporarily (de-)selecting rows -> not relevant for <Automatic>-mode! ;) + 3. => equivalent to a user temporarily (de-)selecting rows -> not relevant for <Two way> variant! ;) */ size_t timeSpan = 0; - UnitTime unitTimeSpan = UTIME_NONE; + UnitTime unitTimeSpan = UnitTime::NONE; size_t sizeMin = 0; - UnitSize unitSizeMin = USIZE_NONE; + UnitSize unitSizeMin = UnitSize::NONE; size_t sizeMax = 0; - UnitSize unitSizeMax = USIZE_NONE; + UnitSize unitSizeMax = UnitSize::NONE; }; inline diff --git a/FreeFileSync/Source/synchronization.cpp b/FreeFileSync/Source/synchronization.cpp index 093cc600..b268fafa 100644 --- a/FreeFileSync/Source/synchronization.cpp +++ b/FreeFileSync/Source/synchronization.cpp @@ -249,7 +249,7 @@ std::vector<zen::FolderPairSyncCfg> zen::extractSyncCfg(const MainConfiguration& SyncConfig syncCfg = fp.altSyncConfig.get() ? *fp.altSyncConfig : mainCfg.syncCfg; output.push_back( - FolderPairSyncCfg(syncCfg.directionCfg.var == DirectionConfig::TWOWAY || detectMovedFilesEnabled(syncCfg.directionCfg), + FolderPairSyncCfg(syncCfg.directionCfg.var == DirectionConfig::TWO_WAY || detectMovedFilesEnabled(syncCfg.directionCfg), syncCfg.handleDeletion, syncCfg.versioningStyle, syncCfg.versioningFolderPhrase, @@ -324,7 +324,7 @@ private: AFS::RecycleSession& getOrCreateRecyclerSession() //throw FileError => dont create in constructor!!! { - assert(deletionPolicy_ == DELETE_TO_RECYCLER); + assert(deletionPolicy_ == DeletionPolicy::RECYCLER); if (!recyclerSession.get()) recyclerSession = AFS::createRecyclerSession(baseFolderPath_); //throw FileError return *recyclerSession; @@ -332,7 +332,7 @@ private: FileVersioner& getOrCreateVersioner() //throw FileError => dont create in constructor!!! { - assert(deletionPolicy_ == DELETE_TO_VERSIONING); + assert(deletionPolicy_ == DeletionPolicy::VERSIONING); if (!versioner.get()) versioner = std::make_unique<FileVersioner>(versioningFolderPath, versioningStyle_, timeStamp_); //throw FileError return *versioner; @@ -345,7 +345,7 @@ private: const AbstractPath baseFolderPath_; std::unique_ptr<AFS::RecycleSession> recyclerSession; - //used only for DELETE_TO_VERSIONING: + //used only for DeletionPolicy::VERSIONING: const AbstractPath versioningFolderPath; const VersioningStyle versioningStyle_; const TimeComp timeStamp_; @@ -378,19 +378,19 @@ DeletionHandling::DeletionHandling(const AbstractPath& baseFolderPath, { switch (deletionPolicy_) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: txtRemovingFile = _("Deleting file %x" ); txtRemovingDirectory = _("Deleting folder %x" ); txtRemovingSymlink = _("Deleting symbolic link %x"); break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: txtRemovingFile = _("Moving file %x to the recycle bin" ); txtRemovingDirectory = _("Moving folder %x to the recycle bin" ); txtRemovingSymlink = _("Moving symbolic link %x to the recycle bin"); break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: txtRemovingFile = replaceCpy(_("Moving file %x to %y" ), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath))); txtRemovingDirectory = replaceCpy(_("Moving folder %x to %y" ), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath))); txtRemovingSymlink = replaceCpy(_("Moving symbolic link %x to %y"), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath))); @@ -403,10 +403,10 @@ void DeletionHandling::tryCleanup(bool allowUserCallback) //throw FileError; thr { switch (deletionPolicy_) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: if (recyclerSession.get()) { auto notifyDeletionStatus = [&](const std::wstring& displayPath) @@ -425,7 +425,7 @@ void DeletionHandling::tryCleanup(bool allowUserCallback) //throw FileError; thr } break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: //if (versioner.get()) //{ // if (allowUserCallback) @@ -449,7 +449,7 @@ void DeletionHandling::removeDirWithCallback(const AbstractPath& folderPath, { switch (deletionPolicy_) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: { auto notifyDeletion = [&](const std::wstring& statusText, const std::wstring& displayPath) { @@ -463,12 +463,12 @@ void DeletionHandling::removeDirWithCallback(const AbstractPath& folderPath, } break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: if (getOrCreateRecyclerSession().recycleItem(folderPath, relativePath)) //throw FileError; return true if item existed onNotifyItemDeletion(); //moving to recycler is ONE logical operation, irrespective of the number of child elements! break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: { auto notifyMove = [&](const std::wstring& statusText, const std::wstring& displayPathFrom, const std::wstring& displayPathTo) { @@ -498,15 +498,15 @@ void DeletionHandling::removeFileWithCallback(const AbstractPath& filePath, else switch (deletionPolicy_) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: deleted = AFS::removeFile(filePath); //throw FileError break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: deleted = getOrCreateRecyclerSession().recycleItem(filePath, relativePath); //throw FileError; return true if item existed break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: deleted = getOrCreateVersioner().revisionFile(filePath, relativePath, onNotifyCopyStatus); //throw FileError break; } @@ -527,9 +527,9 @@ void DeletionHandling::removeLinkWithCallback(const AbstractPath& linkPath, cons //------------------------------------------------------------------------------------------------------------ /* - DELETE_PERMANENTLY: deletion frees space - DELETE_TO_RECYCLER: won't free space until recycler is full, but then frees space - DELETE_TO_VERSIONING: depends on whether versioning folder is on a different volume + DeletionPolicy::PERMANENT: deletion frees space + DeletionPolicy::RECYCLER: won't free space until recycler is full, but then frees space + DeletionPolicy::VERSIONING: depends on whether versioning folder is on a different volume -> if deleted item is a followed symlink, no space is freed -> created/updated/deleted item may be on a different volume than base directory: consider symlinks, junctions! @@ -1306,7 +1306,7 @@ void SynchronizeFolderPair::synchronizeFileInt(FilePair& file, SyncOperation syn AFS::renameItem(file.getAbstractPath<sideTrg>(), //throw FileError, (ErrorTargetExisting, ErrorDifferentVolume) AFS::appendRelPath(file.base().getAbstractPath<sideTrg>(), file.getRelativePath<sideSrc>())); -#if 0 //changing file time without copying content is not justified after CMP_BY_SIZE finds "equal" files! similar issue with CMP_BY_TIME_SIZE and FileTimeTolerance == -1 +#if 0 //changing file time without copying content is not justified after CompareVariant::SIZE finds "equal" files! similar issue with CompareVariant::TIME_SIZE and FileTimeTolerance == -1 //Bonus: some devices don't support setting (precise) file times anyway, e.g. FAT or MTP! if (file.getLastWriteTime<sideTrg>() != file.getLastWriteTime<sideSrc>()) //- no need to call sameFileTime() or respect 2 second FAT/FAT32 precision in this comparison @@ -1926,7 +1926,7 @@ void zen::synchronize(const TimeComp& timeStamp, std::vector<std::pair<AbstractPath, std::pair<std::int64_t, std::int64_t>>> diskSpaceMissing; //base folder / space required / space available - //status of base directories which are set to DELETE_TO_RECYCLER (and contain actual items to be deleted) + //status of base directories which are set to DeletionPolicy::RECYCLER (and contain actual items to be deleted) std::map<AbstractPath, bool, AFS::LessAbstractPath> recyclerSupported; //expensive to determine on Win XP => buffer + check recycle bin existence only once per base folder! //start checking folder pairs @@ -2007,7 +2007,7 @@ void zen::synchronize(const TimeComp& timeStamp, if (!AFS::isNullPath(baseFolder)) //PERMANENT network drop: avoid data loss when source directory is not found AND user chose to ignore errors (else we wouldn't arrive here) if (folderPairStat.deleteCount() > 0) //check deletions only... (respect filtered items!) - //folderPairStat.conflictCount() == 0 && -> there COULD be conflicts for <automatic> if directory existence check fails, but loading sync.ffs_db succeeds + //folderPairStat.conflictCount() == 0 && -> there COULD be conflicts for <Two way> variant if directory existence check fails, but loading sync.ffs_db succeeds //https://sourceforge.net/tracker/?func=detail&atid=1093080&aid=3531351&group_id=234430 -> fixed, but still better not consider conflicts! if (!wasExisting) //avoid race-condition: we need to evaluate existence status from time of comparison! { @@ -2024,7 +2024,7 @@ void zen::synchronize(const TimeComp& timeStamp, } //check if user-defined directory for deletion was specified - if (folderPairCfg.handleDeletion == zen::DELETE_TO_VERSIONING && + if (folderPairCfg.handleDeletion == DeletionPolicy::VERSIONING && folderPairStat.updateCount() + folderPairStat.deleteCount() > 0) { if (trimCpy(folderPairCfg.versioningFolderPhrase).empty()) @@ -2080,7 +2080,7 @@ void zen::synchronize(const TimeComp& timeStamp, } }; - if (folderPairCfg.handleDeletion == DELETE_TO_RECYCLER) + if (folderPairCfg.handleDeletion == DeletionPolicy::RECYCLER) { if (folderPairStat.updateCount<LEFT_SIDE>() + folderPairStat.deleteCount<LEFT_SIDE>() > 0) @@ -2227,12 +2227,12 @@ void zen::synchronize(const TimeComp& timeStamp, auto getEffectiveDeletionPolicy = [&](const AbstractPath& baseFolderPath) -> DeletionPolicy { - if (folderPairCfg.handleDeletion == DELETE_TO_RECYCLER) + if (folderPairCfg.handleDeletion == DeletionPolicy::RECYCLER) { auto it = recyclerSupported.find(baseFolderPath); if (it != recyclerSupported.end()) //buffer filled during intro checks (but only if deletions are expected) if (!it->second) - return DELETE_PERMANENTLY; //Windows' ::SHFileOperation() will do this anyway, but we have a better and faster deletion routine (e.g. on networks) + return DeletionPolicy::PERMANENT; //Windows' ::SHFileOperation() will do this anyway, but we have a better and faster deletion routine (e.g. on networks) } return folderPairCfg.handleDeletion; }; diff --git a/FreeFileSync/Source/ui/batch_status_handler.cpp b/FreeFileSync/Source/ui/batch_status_handler.cpp index 435b41a8..b22128ab 100644 --- a/FreeFileSync/Source/ui/batch_status_handler.cpp +++ b/FreeFileSync/Source/ui/batch_status_handler.cpp @@ -63,8 +63,7 @@ std::pair<std::unique_ptr<AFS::OutputStream>, AbstractPath> prepareNewLogfile(co struct LogTraverserCallback: public AFS::TraverserCallback { - LogTraverserCallback(std::vector<Zstring>& logFileNames, const Zstring& prefix, const std::function<void()>& onUpdateStatus) : - logFileNames_(logFileNames), + LogTraverserCallback(const Zstring& prefix, const std::function<void()>& onUpdateStatus) : prefix_(prefix), onUpdateStatus_(onUpdateStatus) {} @@ -78,43 +77,57 @@ struct LogTraverserCallback: public AFS::TraverserCallback } std::unique_ptr<TraverserCallback> onDir (const DirInfo& di) override { return nullptr; } HandleLink onSymlink(const SymlinkInfo& si) override { return TraverserCallback::LINK_SKIP; } - HandleError reportDirError (const std::wstring& msg, size_t retryNumber) override { assert(false); return ON_ERROR_IGNORE; } //errors are not critical in this context - HandleError reportItemError(const std::wstring& msg, size_t retryNumber, const Zstring& itemName) override { assert(false); return ON_ERROR_IGNORE; } // + + HandleError reportDirError (const std::wstring& msg, size_t retryNumber ) override { setError(msg); return ON_ERROR_IGNORE; } + HandleError reportItemError(const std::wstring& msg, size_t retryNumber, const Zstring& itemName) override { setError(msg); return ON_ERROR_IGNORE; } + + const std::vector<Zstring>& refFileNames() const { return logFileNames_; } + const Opt<FileError>& getLastError() const { return lastError_; } private: - std::vector<Zstring>& logFileNames_; //out + void setError(const std::wstring& msg) //implement late failure + { + if (!lastError_) + lastError_ = FileError(msg); + } + const Zstring prefix_; const std::function<void()> onUpdateStatus_; + std::vector<Zstring> logFileNames_; //out + Opt<FileError> lastError_; }; -void limitLogfileCount(const AbstractPath& logFolderPath, const std::wstring& jobname, size_t maxCount, const std::function<void()>& onUpdateStatus) //noexcept +void limitLogfileCount(const AbstractPath& logFolderPath, const std::wstring& jobname, size_t maxCount, const std::function<void()>& onUpdateStatus) //throw FileError { - std::vector<Zstring> logFileNames; - { - const Zstring prefix = utfCvrtTo<Zstring>(jobname); - LogTraverserCallback lt(logFileNames, prefix, onUpdateStatus); //traverse source directory one level deep + const Zstring prefix = utfCvrtTo<Zstring>(jobname); - AFS::traverseFolder(logFolderPath, lt); - } - - if (logFileNames.size() <= maxCount) - return; + LogTraverserCallback lt(prefix, onUpdateStatus); //traverse source directory one level deep + AFS::traverseFolder(logFolderPath, lt); - //delete oldest logfiles: take advantage of logfile naming convention to find them - std::nth_element(logFileNames.begin(), logFileNames.end() - maxCount, logFileNames.end(), LessFilePath()); + std::vector<Zstring> logFileNames = lt.refFileNames(); + Opt<FileError> lastError = lt.getLastError(); - std::for_each(logFileNames.begin(), logFileNames.end() - maxCount, [&](const Zstring& logFileName) + if (logFileNames.size() > maxCount) { - try + //delete oldest logfiles: take advantage of logfile naming convention to find them + std::nth_element(logFileNames.begin(), logFileNames.end() - maxCount, logFileNames.end(), LessFilePath()); + + std::for_each(logFileNames.begin(), logFileNames.end() - maxCount, [&](const Zstring& logFileName) { - AFS::removeFile(AFS::appendRelPath(logFolderPath, logFileName)); //throw FileError - } - catch (FileError&) { assert(false); }; + try + { + AFS::removeFile(AFS::appendRelPath(logFolderPath, logFileName)); //throw FileError + } + catch (const FileError& e) { if (!lastError) *lastError = e; }; + + if (onUpdateStatus) + onUpdateStatus(); + }); + } - if (onUpdateStatus) - onUpdateStatus(); - }); + if (lastError) //late failure! + throw* lastError; } } @@ -227,8 +240,8 @@ BatchStatusHandler::~BatchStatusHandler() } else { - if (getObjectsTotal(PHASE_SYNCHRONIZING) == 0 && //we're past "initNewPhase(PHASE_SYNCHRONIZING)" at this point! - getDataTotal (PHASE_SYNCHRONIZING) == 0) + if (getItemsTotal(PHASE_SYNCHRONIZING) == 0 && //we're past "initNewPhase(PHASE_SYNCHRONIZING)" at this point! + getBytesTotal(PHASE_SYNCHRONIZING) == 0) finalStatusMsg = _("Nothing to synchronize"); //even if "ignored conflicts" occurred! else finalStatusMsg = _("Synchronization completed successfully"); @@ -239,8 +252,8 @@ BatchStatusHandler::~BatchStatusHandler() { jobName_, finalStatusMsg, - getObjectsCurrent(PHASE_SYNCHRONIZING), getDataCurrent(PHASE_SYNCHRONIZING), - getObjectsTotal (PHASE_SYNCHRONIZING), getDataTotal (PHASE_SYNCHRONIZING), + getItemsCurrent(PHASE_SYNCHRONIZING), getBytesCurrent(PHASE_SYNCHRONIZING), + getItemsTotal (PHASE_SYNCHRONIZING), getBytesTotal (PHASE_SYNCHRONIZING), std::time(nullptr) - startTime_ }; @@ -248,6 +261,8 @@ BatchStatusHandler::~BatchStatusHandler() //create not before destruction: 1. avoid issues with FFS trying to sync open log file 2. simplify transactional retry on failure 3. no need to rename log file to include status if (logfilesCountLimit_ != 0) { + auto requestUiRefreshNoThrow = [&] { try { requestUiRefresh(); /*throw X*/ } catch (...) {} }; + const AbstractPath logFolderPath = createAbstractPath(trimCpy(logFolderPathPhrase_).empty() ? getConfigDir() + Zstr("Logs") : logFolderPathPhrase_); //noexcept try { @@ -258,7 +273,7 @@ BatchStatusHandler::~BatchStatusHandler() const AbstractPath logFilePath = rv.second; streamToLogFile(summary, errorLog, logFileStream, OnUpdateLogfileStatusNoThrow(*this, AFS::getDisplayPath(logFilePath))); //throw FileError - logFileStream.finalize([&] { try { requestUiRefresh(); } catch (...) {} }); //throw FileError + logFileStream.finalize(requestUiRefreshNoThrow); //throw FileError }, *this); //throw X? } catch (...) {} @@ -267,7 +282,15 @@ BatchStatusHandler::~BatchStatusHandler() { try { reportStatus(_("Cleaning up old log files...")); } catch (...) {} - limitLogfileCount(logFolderPath, jobName_, logfilesCountLimit_, [&] { try { requestUiRefresh(); } catch (...) {} }); //noexcept + + try + { + tryReportingError([&] + { + limitLogfileCount(logFolderPath, jobName_, logfilesCountLimit_, requestUiRefreshNoThrow); //throw FileError + }, *this); //throw X? + } + catch (...) {} } } //----------------- write results into LastSyncs.log------------------------ diff --git a/FreeFileSync/Source/ui/column_attr.h b/FreeFileSync/Source/ui/column_attr.h index 6504f843..dd2f78b4 100644 --- a/FreeFileSync/Source/ui/column_attr.h +++ b/FreeFileSync/Source/ui/column_attr.h @@ -13,10 +13,7 @@ namespace zen { enum class ColumnTypeRim { - FULL_PATH, - BASE_DIRECTORY, - REL_FOLDER, - FILENAME, + ITEM_PATH, SIZE, DATE, EXTENSION @@ -27,7 +24,7 @@ struct ColumnAttributeRim ColumnAttributeRim() {} ColumnAttributeRim(ColumnTypeRim type, int offset, int stretch, bool visible) : type_(type), offset_(offset), stretch_(stretch), visible_(visible) {} - ColumnTypeRim type_ = ColumnTypeRim::FULL_PATH; + ColumnTypeRim type_ = ColumnTypeRim::ITEM_PATH; int offset_ = 0; int stretch_ = 0;; bool visible_ = false; @@ -36,31 +33,37 @@ struct ColumnAttributeRim inline std::vector<ColumnAttributeRim> getDefaultColumnAttributesLeft() { - std::vector<ColumnAttributeRim> attr; - attr.emplace_back(ColumnTypeRim::FULL_PATH, 250, 0, false); - attr.emplace_back(ColumnTypeRim::BASE_DIRECTORY, 200, 0, false); - attr.emplace_back(ColumnTypeRim::REL_FOLDER, -280, 1, true); //stretch to full width and substract sum of fixed size widths! - attr.emplace_back(ColumnTypeRim::FILENAME, 200, 0, true); - attr.emplace_back(ColumnTypeRim::DATE, 112, 0, false); - attr.emplace_back(ColumnTypeRim::SIZE, 80, 0, true); - attr.emplace_back(ColumnTypeRim::EXTENSION, 60, 0, false); - return attr; + return + { + { ColumnTypeRim::ITEM_PATH, -80, 1, true }, //stretch to full width and substract sum of fixed-size widths! + { ColumnTypeRim::DATE, 112, 0, false }, + { ColumnTypeRim::SIZE, 80, 0, true }, + { ColumnTypeRim::EXTENSION, 60, 0, false }, + }; } inline std::vector<ColumnAttributeRim> getDefaultColumnAttributesRight() { - std::vector<ColumnAttributeRim> attr; - attr.emplace_back(ColumnTypeRim::FULL_PATH, 250, 0, false); - attr.emplace_back(ColumnTypeRim::BASE_DIRECTORY, 200, 0, false); - attr.emplace_back(ColumnTypeRim::REL_FOLDER , -280, 1, false); //already shown on left side - attr.emplace_back(ColumnTypeRim::FILENAME, 200, 0, true); - attr.emplace_back(ColumnTypeRim::DATE, 112, 0, false); - attr.emplace_back(ColumnTypeRim::SIZE, 80, 0, true); - attr.emplace_back(ColumnTypeRim::EXTENSION, 60, 0, false); - return attr; + return + { + { ColumnTypeRim::ITEM_PATH, -80, 1, true }, + { ColumnTypeRim::DATE, 112, 0, false }, + { ColumnTypeRim::SIZE, 80, 0, true }, + { ColumnTypeRim::EXTENSION, 60, 0, false }, + }; } +enum class ItemPathFormat +{ + FULL_PATH, + RELATIVE_PATH, + ITEM_NAME +}; + +const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::RELATIVE_PATH; +const ItemPathFormat defaultItemPathFormatRightGrid = ItemPathFormat::RELATIVE_PATH; + //------------------------------------------------------------------ enum class ColumnTypeCenter @@ -79,7 +82,6 @@ enum class ColumnTypeNavi ITEM_COUNT }; - struct ColumnAttributeNavi { ColumnAttributeNavi() {} @@ -92,19 +94,20 @@ struct ColumnAttributeNavi }; -const bool defaultValueShowPercentage = true; -const ColumnTypeNavi defaultValueLastSortColumn = ColumnTypeNavi::BYTES; //remember sort on navigation panel -const bool defaultValueLastSortAscending = false; // - inline std::vector<ColumnAttributeNavi> getDefaultColumnAttributesNavi() { - std::vector<ColumnAttributeNavi> attr; - attr.emplace_back(ColumnTypeNavi::DIRECTORY, -120, 1, true); //stretch to full width and substract sum of fixed size widths - attr.emplace_back(ColumnTypeNavi::ITEM_COUNT, 60, 0, true); - attr.emplace_back(ColumnTypeNavi::BYTES, 60, 0, true); //GTK needs a few pixels width more - return attr; + return + { + { ColumnTypeNavi::DIRECTORY, -120, 1, true }, //stretch to full width and substract sum of fixed size widths + { ColumnTypeNavi::ITEM_COUNT, 60, 0, true }, + { ColumnTypeNavi::BYTES, 60, 0, true }, //GTK needs a few pixels more width + }; } + +const bool naviGridShowPercentageDefault = true; +const ColumnTypeNavi naviGridLastSortColumnDefault = ColumnTypeNavi::BYTES; //remember sort on navigation panel +const bool naviGridLastSortAscendingDefault = false; // } #endif //COLUMN_ATTR_H_189467891346732143213 diff --git a/FreeFileSync/Source/ui/custom_grid.cpp b/FreeFileSync/Source/ui/custom_grid.cpp index 342d0a6a..7cacbac3 100644 --- a/FreeFileSync/Source/ui/custom_grid.cpp +++ b/FreeFileSync/Source/ui/custom_grid.cpp @@ -194,6 +194,8 @@ public: void setIconManager(const std::shared_ptr<IconManager>& iconMgr) { iconMgr_ = iconMgr; } + void setItemPathForm(ItemPathFormat fmt) { itemPathFormat = fmt; } + void updateNewAndGetUnbufferedIcons(std::vector<AbstractPath>& newLoad) //loads all not yet drawn icons { if (iconMgr_) @@ -216,7 +218,7 @@ public: if (iconMgr_->refIconBuffer().readyForRetrieval(ii.fsObj->template getAbstractPath<side>())) { //do a *full* refresh for *every* failed load to update partial DC updates while scrolling - refGrid().refreshCell(currentRow, static_cast<ColumnType>(ColumnTypeRim::FILENAME)); + refGrid().refreshCell(currentRow, static_cast<ColumnType>(ColumnTypeRim::ITEM_PATH)); setFailedLoad(currentRow, false); } else //not yet in buffer: mark for async. loading @@ -275,7 +277,7 @@ protected: if (enabled) { if (selected) - dc.GradientFillLinear(rect, getColorSelectionGradientFrom(), getColorSelectionGradientTo(), wxEAST); + dc.GradientFillLinear(rect, Grid::getColorSelectionGradientFrom(), Grid::getColorSelectionGradientTo(), wxEAST); //ignore focus else { @@ -368,7 +370,7 @@ private: { struct GetTextValue : public FSObjectVisitor { - GetTextValue(ColumnTypeRim ctr) : colType_(ctr) {} + GetTextValue(ColumnTypeRim ctr, ItemPathFormat fmt) : colType_(ctr), itemPathFormat_(fmt) {} void visit(const FilePair& file) override { @@ -376,14 +378,17 @@ private: { switch (colType_) { - case ColumnTypeRim::FULL_PATH: - return file.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(file.getAbstractPath<side>()); - case ColumnTypeRim::FILENAME: - return utfCvrtTo<std::wstring>(file.getItemName<side>()); - case ColumnTypeRim::REL_FOLDER: - return utfCvrtTo<std::wstring>(beforeLast(file.getPairRelativePath(), FILE_NAME_SEPARATOR, IF_MISSING_RETURN_NONE)); - case ColumnTypeRim::BASE_DIRECTORY: - return AFS::getDisplayPath(file.base().getAbstractPath<side>()); + case ColumnTypeRim::ITEM_PATH: + switch (itemPathFormat_) + { + case ItemPathFormat::FULL_PATH: + return file.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(file.getAbstractPath<side>()); + case ItemPathFormat::RELATIVE_PATH: + return utfCvrtTo<std::wstring>(file.getRelativePath<side>()); + case ItemPathFormat::ITEM_NAME: + return utfCvrtTo<std::wstring>(file.getItemName<side>()); + } + break; case ColumnTypeRim::SIZE: //return file.isEmpty<side>() ? std::wstring() : utfCvrtTo<std::wstring>(file.getFileId<side>()); // -> test file id return file.isEmpty<side>() ? std::wstring() : toGuiString(file.getFileSize<side>()); @@ -403,14 +408,17 @@ private: { switch (colType_) { - case ColumnTypeRim::FULL_PATH: - return symlink.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(symlink.getAbstractPath<side>()); - case ColumnTypeRim::FILENAME: - return utfCvrtTo<std::wstring>(symlink.getItemName<side>()); - case ColumnTypeRim::REL_FOLDER: - return utfCvrtTo<std::wstring>(beforeLast(symlink.getPairRelativePath(), FILE_NAME_SEPARATOR, IF_MISSING_RETURN_NONE)); - case ColumnTypeRim::BASE_DIRECTORY: - return AFS::getDisplayPath(symlink.base().getAbstractPath<side>()); + case ColumnTypeRim::ITEM_PATH: + switch (itemPathFormat_) + { + case ItemPathFormat::FULL_PATH: + return symlink.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(symlink.getAbstractPath<side>()); + case ItemPathFormat::RELATIVE_PATH: + return utfCvrtTo<std::wstring>(symlink.getRelativePath<side>()); + case ItemPathFormat::ITEM_NAME: + return utfCvrtTo<std::wstring>(symlink.getItemName<side>()); + } + break; case ColumnTypeRim::SIZE: return symlink.isEmpty<side>() ? std::wstring() : L"<" + _("Symlink") + L">"; case ColumnTypeRim::DATE: @@ -429,14 +437,17 @@ private: { switch (colType_) { - case ColumnTypeRim::FULL_PATH: - return folder.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(folder.getAbstractPath<side>()); - case ColumnTypeRim::FILENAME: - return utfCvrtTo<std::wstring>(folder.getItemName<side>()); - case ColumnTypeRim::REL_FOLDER: - return utfCvrtTo<std::wstring>(beforeLast(folder.getPairRelativePath(), FILE_NAME_SEPARATOR, IF_MISSING_RETURN_NONE)); - case ColumnTypeRim::BASE_DIRECTORY: - return AFS::getDisplayPath(folder.base().getAbstractPath<side>()); + case ColumnTypeRim::ITEM_PATH: + switch (itemPathFormat_) + { + case ItemPathFormat::FULL_PATH: + return folder.isEmpty<side>() ? std::wstring() : AFS::getDisplayPath(folder.getAbstractPath<side>()); + case ItemPathFormat::RELATIVE_PATH: + return utfCvrtTo<std::wstring>(folder.getRelativePath<side>()); + case ItemPathFormat::ITEM_NAME: + return utfCvrtTo<std::wstring>(folder.getItemName<side>()); + } + break; case ColumnTypeRim::SIZE: return folder.isEmpty<side>() ? std::wstring() : L"<" + _("Folder") + L">"; case ColumnTypeRim::DATE: @@ -449,8 +460,9 @@ private: }(); } const ColumnTypeRim colType_; + const ItemPathFormat itemPathFormat_; std::wstring value; //out - } getVal(static_cast<ColumnTypeRim>(colType)); + } getVal(static_cast<ColumnTypeRim>(colType), itemPathFormat); fsObj->accept(getVal); return getVal.value; } @@ -462,7 +474,7 @@ private: void renderCell(wxDC& dc, const wxRect& rect, size_t row, ColumnType colType, bool enabled, bool selected, HoverArea rowHover) override { - wxRect rectTmp = rect; + //don't forget to harmonize with getBestSize()!!! const bool isActive = [&] { @@ -471,125 +483,189 @@ private: return true; }(); - //draw file icon - if (static_cast<ColumnTypeRim>(colType) == ColumnTypeRim::FILENAME && - iconMgr_) + wxDCTextColourChanger dummy(dc); + if (!isActive) + dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + else if (getRowDisplayType(row) != DisplayType::NORMAL) + dummy.Set(*wxBLACK); //accessibility: always set both foreground AND background colors! + + wxRect rectTmp = rect; + + auto drawTextBlock = [&](const std::wstring& text) { rectTmp.x += GAP_SIZE; rectTmp.width -= GAP_SIZE; + const wxSize extent = drawCellText(dc, rectTmp, text, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + rectTmp.x += extent.GetWidth(); + rectTmp.width -= extent.GetWidth(); + }; - const int iconSize = iconMgr_->refIconBuffer().getSize(); - if (rectTmp.GetWidth() >= iconSize) - { - // Partitioning: - // __________________________ - // | gap | icon | gap | text | - // -------------------------- - - //whenever there's something new to render on screen, start up watching for failed icon drawing: - //=> ideally it would suffice to start watching only when scrolling grid or showing new grid content, but this solution is more robust - //and the icon updater will stop automatically when finished anyway - //Note: it's not sufficient to start up on failed icon loads only, since we support prefetching of not yet visible rows!!! - iconMgr_->startIconUpdater(); - - const IconInfo ii = getIconInfo(row); + const std::wstring cellValue = getValue(row, colType); - wxBitmap fileIcon; - switch (ii.type) + switch (static_cast<ColumnTypeRim>(colType)) + { + case ColumnTypeRim::ITEM_PATH: + { + if (!iconMgr_) + drawTextBlock(cellValue); + else { - case IconInfo::FOLDER: - fileIcon = iconMgr_->getGenericDirIcon(); - break; + auto it = cellValue.end(); + while (it != cellValue.begin()) //reverse iteration: 1. check 2. decrement 3. evaluate + { + --it; + if (*it == '\\' || *it == '/') + { + ++it; + break; + } + } + const std::wstring pathPrefix(cellValue.begin(), it); + const std::wstring itemName(it, cellValue.end()); + + // Partitioning: + // __________________________________________________ + // | gap | path prefix | gap | icon | gap | item name | + // -------------------------------------------------- + if (!pathPrefix.empty()) + drawTextBlock(pathPrefix); + + //draw file icon + rectTmp.x += GAP_SIZE; + rectTmp.width -= GAP_SIZE; + + const int iconSize = iconMgr_->refIconBuffer().getSize(); + if (rectTmp.GetWidth() >= iconSize) + { + //whenever there's something new to render on screen, start up watching for failed icon drawing: + //=> ideally it would suffice to start watching only when scrolling grid or showing new grid content, but this solution is more robust + //and the icon updater will stop automatically when finished anyway + //Note: it's not sufficient to start up on failed icon loads only, since we support prefetching of not yet visible rows!!! + iconMgr_->startIconUpdater(); - case IconInfo::ICON_PATH: - if (Opt<wxBitmap> tmpIco = iconMgr_->refIconBuffer().retrieveFileIcon(ii.fsObj->template getAbstractPath<side>())) - fileIcon = *tmpIco; - else + const IconInfo ii = getIconInfo(row); + + wxBitmap fileIcon; + switch (ii.type) { - setFailedLoad(row); //save status of failed icon load -> used for async. icon loading - //falsify only! we want to avoid writing incorrect success values when only partially updating the DC, e.g. when scrolling, - //see repaint behavior of ::ScrollWindow() function! - fileIcon = iconMgr_->refIconBuffer().getIconByExtension(ii.fsObj->template getItemName<side>()); //better than nothing + case IconInfo::FOLDER: + fileIcon = iconMgr_->getGenericDirIcon(); + break; + + case IconInfo::ICON_PATH: + if (Opt<wxBitmap> tmpIco = iconMgr_->refIconBuffer().retrieveFileIcon(ii.fsObj->template getAbstractPath<side>())) + fileIcon = *tmpIco; + else + { + setFailedLoad(row); //save status of failed icon load -> used for async. icon loading + //falsify only! we want to avoid writing incorrect success values when only partially updating the DC, e.g. when scrolling, + //see repaint behavior of ::ScrollWindow() function! + fileIcon = iconMgr_->refIconBuffer().getIconByExtension(ii.fsObj->template getItemName<side>()); //better than nothing + } + break; + + case IconInfo::EMPTY: + break; } - break; - case IconInfo::EMPTY: - break; - } + if (fileIcon.IsOk()) + { + wxRect rectIcon = rectTmp; + rectIcon.width = iconSize; //support small thumbnail centering - if (fileIcon.IsOk()) - { - wxRect rectIcon = rectTmp; - rectIcon.width = iconSize; //support small thumbnail centering + auto drawIcon = [&](const wxBitmap& icon) + { + if (isActive) + drawBitmapRtlNoMirror(dc, icon, rectIcon, wxALIGN_CENTER); + else + drawBitmapRtlNoMirror(dc, wxBitmap(icon.ConvertToImage().ConvertToGreyscale(1.0 / 3, 1.0 / 3, 1.0 / 3)), //treat all channels equally! + rectIcon, wxALIGN_CENTER); + }; - auto drawIcon = [&](const wxBitmap& icon) - { - if (isActive) - drawBitmapRtlNoMirror(dc, icon, rectIcon, wxALIGN_CENTER); - else - drawBitmapRtlNoMirror(dc, wxBitmap(icon.ConvertToImage().ConvertToGreyscale(1.0 / 3, 1.0 / 3, 1.0 / 3)), //treat all channels equally! - rectIcon, wxALIGN_CENTER); - }; + drawIcon(fileIcon); - drawIcon(fileIcon); + if (ii.drawAsLink) + drawIcon(iconMgr_->getLinkOverlayIcon()); + } + } + rectTmp.x += iconSize; + rectTmp.width -= iconSize; - if (ii.drawAsLink) - drawIcon(iconMgr_->getLinkOverlayIcon()); + drawTextBlock(itemName); } } - rectTmp.x += iconSize; - rectTmp.width -= iconSize; - } + break; - wxDCTextColourChanger dummy(dc); - if (!isActive) - dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); - else if (getRowDisplayType(row) != DisplayType::NORMAL) - dummy.Set(*wxBLACK); //accessibility: always set both foreground AND background colors! + case ColumnTypeRim::SIZE: + if (refGrid().GetLayoutDirection() != wxLayout_RightToLeft) + { + rectTmp.width -= GAP_SIZE; //have file size right-justified (but don't change for RTL languages) + drawCellText(dc, rectTmp, cellValue, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + } + else + drawTextBlock(cellValue); + break; - //draw text - if (static_cast<ColumnTypeRim>(colType) == ColumnTypeRim::SIZE && refGrid().GetLayoutDirection() != wxLayout_RightToLeft) - { - //have file size right-justified (but don't change for RTL languages) - rectTmp.width -= GAP_SIZE; - drawCellText(dc, rectTmp, getValue(row, colType), wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - } - else - { - rectTmp.x += GAP_SIZE; - rectTmp.width -= GAP_SIZE; - drawCellText(dc, rectTmp, getValue(row, colType), wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + case ColumnTypeRim::DATE: + case ColumnTypeRim::EXTENSION: + drawTextBlock(cellValue); + break; } } int getBestSize(wxDC& dc, size_t row, ColumnType colType) override { // Partitioning: - // _________________________________ - // | gap | icon | gap | text | gap | - // --------------------------------- + // ________________________________________________________ + // | gap | path prefix | gap | icon | gap | item name | gap | + // -------------------------------------------------------- - int bestSize = 0; - if (static_cast<ColumnTypeRim>(colType) == ColumnTypeRim::FILENAME && iconMgr_) - bestSize += GAP_SIZE + iconMgr_->refIconBuffer().getSize(); + const std::wstring cellValue = getValue(row, colType); - bestSize += GAP_SIZE + dc.GetTextExtent(getValue(row, colType)).GetWidth() + GAP_SIZE; + if (static_cast<ColumnTypeRim>(colType) == ColumnTypeRim::ITEM_PATH && iconMgr_) + { + auto it = cellValue.end(); + while (it != cellValue.begin()) //reverse iteration: 1. check 2. decrement 3. evaluate + { + --it; + if (*it == '\\' || *it == '/') + { + ++it; + break; + } + } + const std::wstring pathPrefix(cellValue.begin(), it); + const std::wstring itemName(it, cellValue.end()); + + int bestSize = 0; + if (!pathPrefix.empty()) + bestSize += GAP_SIZE + dc.GetTextExtent(pathPrefix).GetWidth(); - return bestSize; // + 1 pix for cell border line -> not used anymore! + bestSize += GAP_SIZE + iconMgr_->refIconBuffer().getSize(); + bestSize += GAP_SIZE + dc.GetTextExtent(itemName).GetWidth() + GAP_SIZE; + return bestSize; + } + else + return GAP_SIZE + dc.GetTextExtent(cellValue).GetWidth() + GAP_SIZE; + // + 1 pix for cell border line ? -> not used anymore! } std::wstring getColumnLabel(ColumnType colType) const override { switch (static_cast<ColumnTypeRim>(colType)) { - case ColumnTypeRim::FULL_PATH: - return _("Full path"); - case ColumnTypeRim::FILENAME: - return _("Name"); //= short name - case ColumnTypeRim::REL_FOLDER: - return _("Relative folder"); - case ColumnTypeRim::BASE_DIRECTORY: - return _("Base folder"); + case ColumnTypeRim::ITEM_PATH: + switch (itemPathFormat) + { + case ItemPathFormat::FULL_PATH: + return _("Full path"); + case ItemPathFormat::RELATIVE_PATH: + return _("Relative path"); + case ItemPathFormat::ITEM_NAME: + return _("Item name"); + } + assert(false); + break; case ColumnTypeRim::SIZE: return _("Size"); case ColumnTypeRim::DATE: @@ -712,7 +788,7 @@ private: } std::shared_ptr<IconManager> iconMgr_; //optional - + ItemPathFormat itemPathFormat = ItemPathFormat::FULL_PATH; std::vector<char> failedLoads; //effectively a vector<bool> of size "number of rows" Opt<wxBitmap> renderBuf; //avoid costs of recreating this temporal variable @@ -772,7 +848,7 @@ private: { wxRect rectTmp = rect; rectTmp.width /= 20; - dc.GradientFillLinear(rectTmp, getColorSelectionGradientFrom(), GridDataRim<LEFT_SIDE>::getBackGroundColor(row), wxEAST); + dc.GradientFillLinear(rectTmp, Grid::getColorSelectionGradientFrom(), GridDataRim<LEFT_SIDE>::getBackGroundColor(row), wxEAST); } } } @@ -903,7 +979,7 @@ private: if (enabled) { if (selected) - dc.GradientFillLinear(rect, getColorSelectionGradientFrom(), getColorSelectionGradientTo(), wxEAST); + dc.GradientFillLinear(rect, Grid::getColorSelectionGradientFrom(), Grid::getColorSelectionGradientTo(), wxEAST); else { if (const FileSystemObject* fsObj = getRawData(row)) @@ -1542,11 +1618,13 @@ void gridview::init(Grid& gridLeft, Grid& gridCenter, Grid& gridRight, const std const int widthAction = 45; gridCenter.SetSize(widthCategory + widthCheckbox + widthAction, -1); - std::vector<Grid::ColumnAttribute> attribCenter; - attribCenter.emplace_back(static_cast<ColumnType>(ColumnTypeCenter::CHECKBOX ), widthCheckbox, 0, true); - attribCenter.emplace_back(static_cast<ColumnType>(ColumnTypeCenter::CMP_CATEGORY), widthCategory, 0, true); - attribCenter.emplace_back(static_cast<ColumnType>(ColumnTypeCenter::SYNC_ACTION ), widthAction, 0, true); - gridCenter.setColumnConfig(attribCenter); + gridCenter.setColumnConfig( + { + { static_cast<ColumnType>(ColumnTypeCenter::CHECKBOX ), widthCheckbox, 0, true }, + { static_cast<ColumnType>(ColumnTypeCenter::CMP_CATEGORY), widthCategory, 0, true }, + { static_cast<ColumnType>(ColumnTypeCenter::SYNC_ACTION ), widthAction, 0, true }, + } + ); } @@ -1674,6 +1752,18 @@ void gridview::setupIcons(Grid& gridLeft, Grid& gridCenter, Grid& gridRight, boo } +void gridview::setItemPathForm(Grid& grid, ItemPathFormat fmt) +{ + if (auto* provLeft = dynamic_cast<GridDataLeft*>(grid.getDataProvider())) + provLeft->setItemPathForm(fmt); + else if (auto* provRight = dynamic_cast<GridDataRight*>(grid.getDataProvider())) + provRight->setItemPathForm(fmt); + else + assert(false); + grid.Refresh(); +} + + void gridview::refresh(Grid& gridLeft, Grid& gridCenter, Grid& gridRight) { gridLeft .Refresh(); diff --git a/FreeFileSync/Source/ui/custom_grid.h b/FreeFileSync/Source/ui/custom_grid.h index 3546a14a..2c129f17 100644 --- a/FreeFileSync/Source/ui/custom_grid.h +++ b/FreeFileSync/Source/ui/custom_grid.h @@ -20,13 +20,15 @@ namespace gridview { void init(Grid& gridLeft, Grid& gridCenter, Grid& gridRight, const std::shared_ptr<const GridView>& gridDataView); -std::vector<Grid::ColumnAttribute> convertConfig(const std::vector<ColumnAttributeRim>& attribs); //+ make consistent +std::vector<Grid::ColumnAttribute> convertConfig(const std::vector< ColumnAttributeRim>& attribs); //+ make consistent std::vector<ColumnAttributeRim> convertConfig(const std::vector<Grid::ColumnAttribute>& attribs); // void highlightSyncAction(Grid& gridCenter, bool value); void setupIcons(Grid& gridLeft, Grid& gridCenter, Grid& gridRight, bool show, IconBuffer::IconSize sz); +void setItemPathForm(Grid& grid, ItemPathFormat fmt); //only for left/right grid + void refresh(Grid& gridLeft, Grid& gridCenter, Grid& gridRight); void setScrollMaster(Grid& grid); diff --git a/FreeFileSync/Source/ui/folder_selector.cpp b/FreeFileSync/Source/ui/folder_selector.cpp index 63a5f4f0..759bb1cf 100644 --- a/FreeFileSync/Source/ui/folder_selector.cpp +++ b/FreeFileSync/Source/ui/folder_selector.cpp @@ -25,9 +25,12 @@ #ifdef ZEN_LINUX // #include <gtk/gtk.h> +#elif defined ZEN_MAC + #include <zen/osx_string.h> #endif using namespace zen; + #ifndef ZEN_WIN_VISTA_AND_LATER using AFS = AbstractFileSystem; #endif @@ -312,7 +315,16 @@ void FolderSelector::onSelectAltFolder(wxCommandEvent& event) Zstring FolderSelector::getPath() const { - return toZ(folderComboBox_.GetValue()); + Zstring path = utfCvrtTo<Zstring>(folderComboBox_.GetValue()); + +#ifdef ZEN_MAC //normalize all text input (see see native_traverser_impl.h) + try + { + path = osx::normalizeUtfForPosix(path.c_str()); //throw SysError + } + catch (SysError&) { assert(false); } +#endif + return path; } diff --git a/FreeFileSync/Source/ui/grid_view.cpp b/FreeFileSync/Source/ui/grid_view.cpp index c669edf8..b47fd2d4 100644 --- a/FreeFileSync/Source/ui/grid_view.cpp +++ b/FreeFileSync/Source/ui/grid_view.cpp @@ -469,10 +469,7 @@ bool GridView::getDefaultSortDirection(ColumnTypeRim type) //true: ascending; fa case ColumnTypeRim::DATE: return false; - case ColumnTypeRim::BASE_DIRECTORY: - case ColumnTypeRim::FULL_PATH: - case ColumnTypeRim::REL_FOLDER: - case ColumnTypeRim::FILENAME: + case ColumnTypeRim::ITEM_PATH: case ColumnTypeRim::EXTENSION: return true; } @@ -481,7 +478,7 @@ bool GridView::getDefaultSortDirection(ColumnTypeRim type) //true: ascending; fa } -void GridView::sortView(ColumnTypeRim type, bool onLeft, bool ascending) +void GridView::sortView(ColumnTypeRim type, ItemPathFormat pathFmt, bool onLeft, bool ascending) { viewRef.clear(); rowPositions.clear(); @@ -490,22 +487,30 @@ void GridView::sortView(ColumnTypeRim type, bool onLeft, bool ascending) switch (type) { - case ColumnTypeRim::FULL_PATH: - if ( ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<true, LEFT_SIDE >()); - else if ( ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<true, RIGHT_SIDE>()); - else if (!ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<false, LEFT_SIDE >()); - else if (!ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<false, RIGHT_SIDE>()); - break; - case ColumnTypeRim::REL_FOLDER: - if ( ascending) std::sort(sortedRef.begin(), sortedRef.end(), LessRelativeFolder<true>()); - else if (!ascending) std::sort(sortedRef.begin(), sortedRef.end(), LessRelativeFolder<false>()); - break; - case ColumnTypeRim::FILENAME: - if ( ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<true, LEFT_SIDE >()); - else if ( ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<true, RIGHT_SIDE>()); - else if (!ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<false, LEFT_SIDE >()); - else if (!ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<false, RIGHT_SIDE>()); + case ColumnTypeRim::ITEM_PATH: + switch (pathFmt) + { + case ItemPathFormat::FULL_PATH: + if ( ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<true, LEFT_SIDE >()); + else if ( ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<true, RIGHT_SIDE>()); + else if (!ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<false, LEFT_SIDE >()); + else if (!ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFullPath<false, RIGHT_SIDE>()); + break; + + case ItemPathFormat::RELATIVE_PATH: + if ( ascending) std::sort(sortedRef.begin(), sortedRef.end(), LessRelativeFolder<true>()); + else if (!ascending) std::sort(sortedRef.begin(), sortedRef.end(), LessRelativeFolder<false>()); + break; + + case ItemPathFormat::ITEM_NAME: + if ( ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<true, LEFT_SIDE >()); + else if ( ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<true, RIGHT_SIDE>()); + else if (!ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<false, LEFT_SIDE >()); + else if (!ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessShortFileName<false, RIGHT_SIDE>()); + break; + } break; + case ColumnTypeRim::SIZE: if ( ascending && onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFilesize<true, LEFT_SIDE >()); else if ( ascending && !onLeft) std::sort(sortedRef.begin(), sortedRef.end(), LessFilesize<true, RIGHT_SIDE>()); @@ -524,17 +529,5 @@ void GridView::sortView(ColumnTypeRim type, bool onLeft, bool ascending) else if (!ascending && onLeft) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessExtension<false, LEFT_SIDE >()); else if (!ascending && !onLeft) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessExtension<false, RIGHT_SIDE>()); break; - //case SORT_BY_CMP_RESULT: - // if ( ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessCmpResult<true >()); - // else if (!ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessCmpResult<false>()); - // break; - //case SORT_BY_SYNC_DIRECTION: - // if ( ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessSyncDirection<true >()); - // else if (!ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), LessSyncDirection<false>()); - // break; - case ColumnTypeRim::BASE_DIRECTORY: - if ( ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), [](const RefIndex a, const RefIndex b) { return a.folderIndex < b.folderIndex; }); - else if (!ascending) std::stable_sort(sortedRef.begin(), sortedRef.end(), [](const RefIndex a, const RefIndex b) { return a.folderIndex > b.folderIndex; }); - break; } } diff --git a/FreeFileSync/Source/ui/grid_view.h b/FreeFileSync/Source/ui/grid_view.h index 17311890..9930612d 100644 --- a/FreeFileSync/Source/ui/grid_view.h +++ b/FreeFileSync/Source/ui/grid_view.h @@ -103,7 +103,7 @@ public: //sorting... bool static getDefaultSortDirection(zen::ColumnTypeRim type); //true: ascending; false: descending - void sortView(zen::ColumnTypeRim type, bool onLeft, bool ascending); //always call this method for sorting, never sort externally! + void sortView(zen::ColumnTypeRim type, zen::ItemPathFormat pathFmt, bool onLeft, bool ascending); //always call this method for sorting, never sort externally! struct SortInfo { diff --git a/FreeFileSync/Source/ui/gui_generated.cpp b/FreeFileSync/Source/ui/gui_generated.cpp index c217a408..5033516b 100644 --- a/FreeFileSync/Source/ui/gui_generated.cpp +++ b/FreeFileSync/Source/ui/gui_generated.cpp @@ -19,1029 +19,1029 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( 640,400 ), wxDefaultSize ); - - m_menubar1 = new wxMenuBar( 0 ); - m_menuFile = new wxMenu(); - m_menuItemNew = new wxMenuItem( m_menuFile, wxID_NEW, wxString( _("&New") ) + wxT('\t') + wxT("Ctrl+N"), wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemNew ); - - m_menuItemLoad = new wxMenuItem( m_menuFile, wxID_OPEN, wxString( _("&Open...") ) + wxT('\t') + wxT("Ctrl+O"), wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemLoad ); - - m_menuFile->AppendSeparator(); - - m_menuItemSave = new wxMenuItem( m_menuFile, wxID_SAVE, wxString( _("&Save") ) + wxT('\t') + wxT("Ctrl+S"), wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemSave ); - - m_menuItemSaveAs = new wxMenuItem( m_menuFile, wxID_SAVEAS, wxString( _("Save &as...") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemSaveAs ); - - m_menuItemSaveAsBatch = new wxMenuItem( m_menuFile, wxID_ANY, wxString( _("Save as &batch job...") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemSaveAsBatch ); - - m_menuFile->AppendSeparator(); - - wxMenuItem* m_menuItem4; - m_menuItem4 = new wxMenuItem( m_menuFile, wxID_EXIT, wxString( _("E&xit") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuFile->Append( m_menuItem4 ); - - m_menubar1->Append( m_menuFile, _("&File") ); - - m_menu4 = new wxMenu(); - m_menuItemCompare = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("Start &comparison") ) + wxT('\t') + wxT("F5"), wxEmptyString, wxITEM_NORMAL ); - m_menu4->Append( m_menuItemCompare ); - - m_menu4->AppendSeparator(); - - m_menuItemCompSettings = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("C&omparison settings") ) + wxT('\t') + wxT("F6"), wxEmptyString, wxITEM_NORMAL ); - m_menu4->Append( m_menuItemCompSettings ); - - m_menuItemFilter = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("&Filter settings") ) + wxT('\t') + wxT("F7"), wxEmptyString, wxITEM_NORMAL ); - m_menu4->Append( m_menuItemFilter ); - - m_menuItemSyncSettings = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("S&ynchronization settings") ) + wxT('\t') + wxT("F8"), wxEmptyString, wxITEM_NORMAL ); - m_menu4->Append( m_menuItemSyncSettings ); - - m_menu4->AppendSeparator(); - - m_menuItemSynchronize = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("Start &synchronization") ) + wxT('\t') + wxT("F9"), wxEmptyString, wxITEM_NORMAL ); - m_menu4->Append( m_menuItemSynchronize ); - - m_menubar1->Append( m_menu4, _("&Actions") ); - - m_menuTools = new wxMenu(); - m_menuItemOptions = new wxMenuItem( m_menuTools, wxID_PREFERENCES, wxString( _("&Preferences") ) + wxT('\t') + wxT("Ctrl+,"), wxEmptyString, wxITEM_NORMAL ); - m_menuTools->Append( m_menuItemOptions ); - - m_menuLanguages = new wxMenu(); - wxMenuItem* m_menuLanguagesItem = new wxMenuItem( m_menuTools, wxID_ANY, _("&Language"), wxEmptyString, wxITEM_NORMAL, m_menuLanguages ); - m_menuTools->Append( m_menuLanguagesItem ); - - m_menuTools->AppendSeparator(); - - wxMenuItem* m_menuItem15; - m_menuItem15 = new wxMenuItem( m_menuTools, wxID_FIND, wxString( _("&Find...") ) + wxT('\t') + wxT("Ctrl+F"), wxEmptyString, wxITEM_NORMAL ); - m_menuTools->Append( m_menuItem15 ); - - wxMenuItem* m_menuItem51; - m_menuItem51 = new wxMenuItem( m_menuTools, wxID_ANY, wxString( _("&Reset layout") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuTools->Append( m_menuItem51 ); - - wxMenuItem* m_menuItem5; - m_menuItem5 = new wxMenuItem( m_menuTools, wxID_ANY, wxString( _("&Export file list...") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuTools->Append( m_menuItem5 ); - - m_menubar1->Append( m_menuTools, _("&Tools") ); - - m_menuHelp = new wxMenu(); - m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( _("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL ); - m_menuHelp->Append( m_menuItemHelp ); - - m_menuCheckVersion = new wxMenu(); - wxMenuItem* m_menuCheckVersionItem = new wxMenuItem( m_menuHelp, wxID_ANY, _("&Check for new version"), wxEmptyString, wxITEM_NORMAL, m_menuCheckVersion ); - m_menuItemCheckVersionNow = new wxMenuItem( m_menuCheckVersion, wxID_ANY, wxString( _("&Check now") ) , wxEmptyString, wxITEM_NORMAL ); - m_menuCheckVersion->Append( m_menuItemCheckVersionNow ); - - m_menuItemCheckVersionAuto = new wxMenuItem( m_menuCheckVersion, wxID_ANY, wxString( _("Check &automatically once a week") ) , wxEmptyString, wxITEM_CHECK ); - m_menuCheckVersion->Append( m_menuItemCheckVersionAuto ); - m_menuItemCheckVersionAuto->Check( true ); - - m_menuHelp->Append( m_menuCheckVersionItem ); - - m_menuHelp->AppendSeparator(); - - m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL ); - m_menuHelp->Append( m_menuItemAbout ); - - m_menubar1->Append( m_menuHelp, _("&Help") ); - - this->SetMenuBar( m_menubar1 ); - - bSizerPanelHolder = new wxBoxSizer( wxVERTICAL ); - - m_panelTopButtons = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1791; - bSizer1791 = new wxBoxSizer( wxVERTICAL ); - - bSizerTopButtons = new wxBoxSizer( wxHORIZONTAL ); - - - bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonCancel = new zen::BitmapTextButton( m_panelTopButtons, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonCancel->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - m_buttonCancel->Enable( false ); - m_buttonCancel->Hide(); - - bSizerTopButtons->Add( m_buttonCancel, 0, wxEXPAND, 5 ); - - m_buttonCompare = new zen::BitmapTextButton( m_panelTopButtons, wxID_ANY, _("Compare"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonCompare->SetDefault(); - m_buttonCompare->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - m_buttonCompare->SetToolTip( _("dummy") ); - - bSizerTopButtons->Add( m_buttonCompare, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( 4, 0, 0, 0, 5 ); - - wxBoxSizer* bSizer198; - bSizer198 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonCmpConfig = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); - m_bpButtonCmpConfig->SetToolTip( _("dummy") ); - - bSizer198->Add( m_bpButtonCmpConfig, 1, wxEXPAND, 5 ); - - m_bpButtonCmpContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 18,-1 ), wxBU_AUTODRAW ); - m_bpButtonCmpContext->SetToolTip( _("dummy") ); - - bSizer198->Add( m_bpButtonCmpContext, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( bSizer198, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerTopButtons->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer199; - bSizer199 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonFilter = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 60,-1 ), wxBU_AUTODRAW|wxFULL_REPAINT_ON_RESIZE ); - bSizer199->Add( m_bpButtonFilter, 1, wxEXPAND, 5 ); - - m_bpButtonFilterContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 18,-1 ), wxBU_AUTODRAW ); - m_bpButtonFilterContext->SetToolTip( _("dummy") ); - - bSizer199->Add( m_bpButtonFilterContext, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( bSizer199, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( 5, 5, 0, 0, 5 ); - - - bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - wxBoxSizer* bSizer200; - bSizer200 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonSyncConfig = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); - m_bpButtonSyncConfig->SetToolTip( _("dummy") ); - - bSizer200->Add( m_bpButtonSyncConfig, 1, wxEXPAND, 5 ); - - m_bpButtonSyncContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 18,-1 ), wxBU_AUTODRAW ); - m_bpButtonSyncContext->SetToolTip( _("dummy") ); - - bSizer200->Add( m_bpButtonSyncContext, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( bSizer200, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( 4, 0, 0, 0, 5 ); - - m_buttonSync = new zen::BitmapTextButton( m_panelTopButtons, wxID_ANY, _("Synchronize"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonSync->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - m_buttonSync->SetToolTip( _("dummy") ); - - bSizerTopButtons->Add( m_buttonSync, 0, wxEXPAND, 5 ); - - - bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer1791->Add( bSizerTopButtons, 1, wxEXPAND, 5 ); - - - m_panelTopButtons->SetSizer( bSizer1791 ); - m_panelTopButtons->Layout(); - bSizer1791->Fit( m_panelTopButtons ); - bSizerPanelHolder->Add( m_panelTopButtons, 0, wxEXPAND, 5 ); - - m_panelDirectoryPairs = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1601; - bSizer1601 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer91; - bSizer91 = new wxBoxSizer( wxHORIZONTAL ); - - m_panelTopLeft = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelTopLeft->SetMinSize( wxSize( 1,-1 ) ); - - wxFlexGridSizer* fgSizer8; - fgSizer8 = new wxFlexGridSizer( 0, 2, 0, 0 ); - fgSizer8->AddGrowableCol( 1 ); - fgSizer8->SetFlexibleDirection( wxBOTH ); - fgSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL ); - - - fgSizer8->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextResolvedPathL = new wxStaticText( m_panelTopLeft, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextResolvedPathL->Wrap( -1 ); - fgSizer8->Add( m_staticTextResolvedPathL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); - - wxBoxSizer* bSizer159; - bSizer159 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonAddPair = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - m_bpButtonAddPair->SetToolTip( _("Add folder pair") ); - - bSizer159->Add( m_bpButtonAddPair, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonRemovePair = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - m_bpButtonRemovePair->SetToolTip( _("Remove folder pair") ); - - bSizer159->Add( m_bpButtonRemovePair, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - fgSizer8->Add( bSizer159, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - wxBoxSizer* bSizer182; - bSizer182 = new wxBoxSizer( wxHORIZONTAL ); - - m_folderPathLeft = new FolderHistoryBox( m_panelTopLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer182->Add( m_folderPathLeft, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectFolderLeft = new wxButton( m_panelTopLeft, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectFolderLeft->SetToolTip( _("Select a folder") ); - - bSizer182->Add( m_buttonSelectFolderLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltFolderLeft = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltFolderLeft->SetToolTip( _("Select SFTP folder") ); - - bSizer182->Add( m_bpButtonSelectAltFolderLeft, 0, wxEXPAND, 5 ); - - - fgSizer8->Add( bSizer182, 0, wxEXPAND, 5 ); - - - m_panelTopLeft->SetSizer( fgSizer8 ); - m_panelTopLeft->Layout(); - fgSizer8->Fit( m_panelTopLeft ); - bSizer91->Add( m_panelTopLeft, 1, wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - - m_panelTopCenter = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1771; - bSizer1771 = new wxBoxSizer( wxVERTICAL ); - - - bSizer1771->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bpButtonSwapSides = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); - m_bpButtonSwapSides->SetToolTip( _("Swap sides") ); - - bSizer1771->Add( m_bpButtonSwapSides, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer160; - bSizer160 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonAltCompCfg = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer160->Add( m_bpButtonAltCompCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonLocalFilter = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer160->Add( m_bpButtonLocalFilter, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonAltSyncCfg = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer160->Add( m_bpButtonAltSyncCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer1771->Add( bSizer160, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer1771->Add( 0, 0, 1, wxEXPAND, 5 ); - - - m_panelTopCenter->SetSizer( bSizer1771 ); - m_panelTopCenter->Layout(); - bSizer1771->Fit( m_panelTopCenter ); - bSizer91->Add( m_panelTopCenter, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - m_panelTopRight = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelTopRight->SetMinSize( wxSize( 1,-1 ) ); - - wxBoxSizer* bSizer183; - bSizer183 = new wxBoxSizer( wxVERTICAL ); - - m_staticTextResolvedPathR = new wxStaticText( m_panelTopRight, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextResolvedPathR->Wrap( -1 ); - bSizer183->Add( m_staticTextResolvedPathR, 0, wxALL, 2 ); - - wxBoxSizer* bSizer179; - bSizer179 = new wxBoxSizer( wxHORIZONTAL ); - - m_folderPathRight = new FolderHistoryBox( m_panelTopRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer179->Add( m_folderPathRight, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectFolderRight = new wxButton( m_panelTopRight, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectFolderRight->SetToolTip( _("Select a folder") ); - - bSizer179->Add( m_buttonSelectFolderRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltFolderRight = new wxBitmapButton( m_panelTopRight, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltFolderRight->SetToolTip( _("Select SFTP folder") ); - - bSizer179->Add( m_bpButtonSelectAltFolderRight, 0, wxEXPAND, 5 ); - - - bSizer183->Add( bSizer179, 0, wxEXPAND, 5 ); - - - m_panelTopRight->SetSizer( bSizer183 ); - m_panelTopRight->Layout(); - bSizer183->Fit( m_panelTopRight ); - bSizer91->Add( m_panelTopRight, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - - bSizer1601->Add( bSizer91, 0, wxEXPAND, 5 ); - - m_scrolledWindowFolderPairs = new wxScrolledWindow( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxHSCROLL|wxVSCROLL ); - m_scrolledWindowFolderPairs->SetScrollRate( 10, 10 ); - m_scrolledWindowFolderPairs->SetMinSize( wxSize( -1,0 ) ); - - bSizerAddFolderPairs = new wxBoxSizer( wxVERTICAL ); - - - m_scrolledWindowFolderPairs->SetSizer( bSizerAddFolderPairs ); - m_scrolledWindowFolderPairs->Layout(); - bSizerAddFolderPairs->Fit( m_scrolledWindowFolderPairs ); - bSizer1601->Add( m_scrolledWindowFolderPairs, 1, wxEXPAND, 5 ); - - - m_panelDirectoryPairs->SetSizer( bSizer1601 ); - m_panelDirectoryPairs->Layout(); - bSizer1601->Fit( m_panelDirectoryPairs ); - bSizerPanelHolder->Add( m_panelDirectoryPairs, 0, wxEXPAND, 5 ); - - m_gridNavi = new zen::Grid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); - m_gridNavi->SetScrollRate( 5, 5 ); - bSizerPanelHolder->Add( m_gridNavi, 1, wxEXPAND, 5 ); - - m_panelCenter = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1711; - bSizer1711 = new wxBoxSizer( wxVERTICAL ); - - m_splitterMain = new zen::TripleSplitter( m_panelCenter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1781; - bSizer1781 = new wxBoxSizer( wxHORIZONTAL ); - - m_gridMainL = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); - m_gridMainL->SetScrollRate( 5, 5 ); - bSizer1781->Add( m_gridMainL, 1, wxEXPAND, 5 ); - - m_gridMainC = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); - m_gridMainC->SetScrollRate( 5, 5 ); - bSizer1781->Add( m_gridMainC, 0, wxEXPAND, 5 ); - - m_gridMainR = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); - m_gridMainR->SetScrollRate( 5, 5 ); - bSizer1781->Add( m_gridMainR, 1, wxEXPAND, 5 ); - - - m_splitterMain->SetSizer( bSizer1781 ); - m_splitterMain->Layout(); - bSizer1781->Fit( m_splitterMain ); - bSizer1711->Add( m_splitterMain, 1, wxEXPAND, 5 ); - - m_panelStatusBar = new wxPanel( m_panelCenter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer451; - bSizer451 = new wxBoxSizer( wxHORIZONTAL ); - - bSizer451->SetMinSize( wxSize( -1,22 ) ); - bSizerFileStatus = new wxBoxSizer( wxHORIZONTAL ); - - bSizerStatusLeft = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer53; - bSizer53 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer53->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - bSizerStatusLeftDirectories = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSmallDirectoryLeft = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerStatusLeftDirectories->Add( m_bitmapSmallDirectoryLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusLeftDirectories->Add( 2, 0, 0, 0, 5 ); - - m_staticTextStatusLeftDirs = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusLeftDirs->Wrap( -1 ); - bSizerStatusLeftDirectories->Add( m_staticTextStatusLeftDirs, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer53->Add( bSizerStatusLeftDirectories, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - bSizerStatusLeftFiles = new wxBoxSizer( wxHORIZONTAL ); - - - bSizerStatusLeftFiles->Add( 10, 0, 0, 0, 5 ); - - m_bitmapSmallFileLeft = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerStatusLeftFiles->Add( m_bitmapSmallFileLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusLeftFiles->Add( 2, 0, 0, 0, 5 ); - - m_staticTextStatusLeftFiles = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusLeftFiles->Wrap( -1 ); - bSizerStatusLeftFiles->Add( m_staticTextStatusLeftFiles, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusLeftFiles->Add( 4, 0, 0, 0, 5 ); - - m_staticTextStatusLeftBytes = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusLeftBytes->Wrap( -1 ); - bSizerStatusLeftFiles->Add( m_staticTextStatusLeftBytes, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer53->Add( bSizerStatusLeftFiles, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer53->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusLeft->Add( bSizer53, 1, wxEXPAND, 5 ); - - m_staticline9 = new wxStaticLine( m_panelStatusBar, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizerStatusLeft->Add( m_staticline9, 0, wxEXPAND|wxTOP, 2 ); - - - bSizerFileStatus->Add( bSizerStatusLeft, 1, wxEXPAND, 5 ); - - - bSizerFileStatus->Add( 26, 0, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextStatusCenter = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusCenter->Wrap( -1 ); - bSizerFileStatus->Add( m_staticTextStatusCenter, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerFileStatus->Add( 26, 0, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - bSizerStatusRight = new wxBoxSizer( wxHORIZONTAL ); - - m_staticline10 = new wxStaticLine( m_panelStatusBar, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizerStatusRight->Add( m_staticline10, 0, wxEXPAND|wxTOP, 2 ); - - wxBoxSizer* bSizer52; - bSizer52 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer52->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - bSizerStatusRightDirectories = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSmallDirectoryRight = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerStatusRightDirectories->Add( m_bitmapSmallDirectoryRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusRightDirectories->Add( 2, 0, 0, 0, 5 ); - - m_staticTextStatusRightDirs = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusRightDirs->Wrap( -1 ); - bSizerStatusRightDirectories->Add( m_staticTextStatusRightDirs, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer52->Add( bSizerStatusRightDirectories, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - bSizerStatusRightFiles = new wxBoxSizer( wxHORIZONTAL ); - - - bSizerStatusRightFiles->Add( 10, 0, 0, 0, 5 ); - - m_bitmapSmallFileRight = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerStatusRightFiles->Add( m_bitmapSmallFileRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusRightFiles->Add( 2, 0, 0, 0, 5 ); - - m_staticTextStatusRightFiles = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusRightFiles->Wrap( -1 ); - bSizerStatusRightFiles->Add( m_staticTextStatusRightFiles, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusRightFiles->Add( 4, 0, 0, 0, 5 ); - - m_staticTextStatusRightBytes = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatusRightBytes->Wrap( -1 ); - bSizerStatusRightFiles->Add( m_staticTextStatusRightBytes, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer52->Add( bSizerStatusRightFiles, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer52->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatusRight->Add( bSizer52, 1, wxEXPAND, 5 ); - - - bSizerFileStatus->Add( bSizerStatusRight, 1, wxEXPAND, 5 ); - - - bSizer451->Add( bSizerFileStatus, 1, wxEXPAND, 5 ); - - m_staticTextFullStatus = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextFullStatus->Wrap( -1 ); - m_staticTextFullStatus->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer451->Add( m_staticTextFullStatus, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - - m_panelStatusBar->SetSizer( bSizer451 ); - m_panelStatusBar->Layout(); - bSizer451->Fit( m_panelStatusBar ); - bSizer1711->Add( m_panelStatusBar, 0, wxEXPAND, 5 ); - - - m_panelCenter->SetSizer( bSizer1711 ); - m_panelCenter->Layout(); - bSizer1711->Fit( m_panelCenter ); - bSizerPanelHolder->Add( m_panelCenter, 1, wxEXPAND, 5 ); - - m_panelSearch = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer1713; - bSizer1713 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonHideSearch = new wxBitmapButton( m_panelSearch, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - m_bpButtonHideSearch->SetToolTip( _("Close search bar") ); - - bSizer1713->Add( m_bpButtonHideSearch, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_staticText101 = new wxStaticText( m_panelSearch, wxID_ANY, _("Find:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText101->Wrap( -1 ); - bSizer1713->Add( m_staticText101, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlSearchTxt = new wxTextCtrl( m_panelSearch, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 220,-1 ), wxTE_PROCESS_ENTER|wxWANTS_CHARS ); - m_textCtrlSearchTxt->SetMaxLength( 0 ); - bSizer1713->Add( m_textCtrlSearchTxt, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - m_checkBoxMatchCase = new wxCheckBox( m_panelSearch, wxID_ANY, _("Match case"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer1713->Add( m_checkBoxMatchCase, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - - m_panelSearch->SetSizer( bSizer1713 ); - m_panelSearch->Layout(); - bSizer1713->Fit( m_panelSearch ); - bSizerPanelHolder->Add( m_panelSearch, 0, 0, 5 ); - - m_panelConfig = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - bSizerConfig = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer151; - bSizer151 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer17611; - bSizer17611 = new wxBoxSizer( wxVERTICAL ); - - m_bpButtonNew = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - m_bpButtonNew->SetToolTip( _("dummy") ); - - bSizer17611->Add( m_bpButtonNew, 0, wxEXPAND, 5 ); - - m_staticText951 = new wxStaticText( m_panelConfig, wxID_ANY, _("New"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText951->Wrap( -1 ); - bSizer17611->Add( m_staticText951, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); - - - bSizer151->Add( bSizer17611, 0, 0, 5 ); - - wxBoxSizer* bSizer1761; - bSizer1761 = new wxBoxSizer( wxVERTICAL ); - - m_bpButtonOpen = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - m_bpButtonOpen->SetToolTip( _("dummy") ); - - bSizer1761->Add( m_bpButtonOpen, 0, wxEXPAND, 5 ); - - m_staticText95 = new wxStaticText( m_panelConfig, wxID_ANY, _("Open..."), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText95->Wrap( -1 ); - bSizer1761->Add( m_staticText95, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); - - - bSizer151->Add( bSizer1761, 0, 0, 5 ); - - wxBoxSizer* bSizer175; - bSizer175 = new wxBoxSizer( wxVERTICAL ); - - m_bpButtonSave = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - m_bpButtonSave->SetToolTip( _("dummy") ); - - bSizer175->Add( m_bpButtonSave, 0, wxEXPAND, 5 ); - - m_staticText961 = new wxStaticText( m_panelConfig, wxID_ANY, _("Save"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText961->Wrap( -1 ); - bSizer175->Add( m_staticText961, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); - - - bSizer151->Add( bSizer175, 0, 0, 5 ); - - wxBoxSizer* bSizer174; - bSizer174 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer1772; - bSizer1772 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonSaveAs = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - m_bpButtonSaveAs->SetToolTip( _("dummy") ); - - bSizer1772->Add( m_bpButtonSaveAs, 1, 0, 5 ); - - m_bpButtonSaveAsBatch = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - m_bpButtonSaveAsBatch->SetToolTip( _("dummy") ); - - bSizer1772->Add( m_bpButtonSaveAsBatch, 1, 0, 5 ); - - - bSizer174->Add( bSizer1772, 0, wxEXPAND, 5 ); - - m_staticText97 = new wxStaticText( m_panelConfig, wxID_ANY, _("Save as..."), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText97->Wrap( -1 ); - bSizer174->Add( m_staticText97, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); - - - bSizer151->Add( bSizer174, 0, 0, 5 ); - - - bSizerConfig->Add( bSizer151, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_listBoxHistory = new wxListBox( m_panelConfig, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED|wxLB_NEEDED_SB ); - m_listBoxHistory->SetMinSize( wxSize( -1,40 ) ); - - bSizerConfig->Add( m_listBoxHistory, 1, wxEXPAND, 5 ); - - - m_panelConfig->SetSizer( bSizerConfig ); - m_panelConfig->Layout(); - bSizerConfig->Fit( m_panelConfig ); - bSizerPanelHolder->Add( m_panelConfig, 0, 0, 5 ); - - m_panelViewFilter = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - bSizerViewFilter = new wxBoxSizer( wxHORIZONTAL ); - - m_staticTextViewType = new wxStaticText( m_panelViewFilter, wxID_ANY, _("View type:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextViewType->Wrap( -1 ); - bSizerViewFilter->Add( m_staticTextViewType, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonViewTypeSyncAction = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 82,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonViewTypeSyncAction, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 5 ); - - m_bpButtonShowExcluded = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowExcluded, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextSelectView = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Select view:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextSelectView->Wrap( -1 ); - bSizerViewFilter->Add( m_staticTextSelectView, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowDeleteLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowDeleteLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowUpdateLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowCreateLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowLeftOnly = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowLeftOnly, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowLeftNewer = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowLeftNewer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowEqual = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowEqual, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowDoNothing = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowDoNothing, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowDifferent = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowDifferent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowRightNewer = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowRightNewer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowRightOnly = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowRightOnly, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowCreateRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowUpdateRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowDeleteRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowDeleteRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonShowConflict = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonShowConflict, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticText96 = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Statistics:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText96->Wrap( -1 ); - bSizerViewFilter->Add( m_staticText96, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_panelStatistics = new wxPanel( m_panelViewFilter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); - m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - bSizer1801 = new wxBoxSizer( wxVERTICAL ); - - bSizerStatistics = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer173; - bSizer173 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapDeleteLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); - - bSizer173->Add( m_bitmapDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer173->Add( 5, 2, 0, 0, 5 ); - - - bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextDeleteLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDeleteLeft->Wrap( -1 ); - m_staticTextDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); - - bSizer173->Add( m_staticTextDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatistics->Add( bSizer173, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer172; - bSizer172 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapUpdateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapUpdateLeft->SetToolTip( _("Number of files that will be updated") ); - - bSizer172->Add( m_bitmapUpdateLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer172->Add( 5, 2, 0, 0, 5 ); - - - bSizer172->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextUpdateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextUpdateLeft->Wrap( -1 ); - m_staticTextUpdateLeft->SetToolTip( _("Number of files that will be updated") ); - - bSizer172->Add( m_staticTextUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerStatistics->Add( bSizer172, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer1712; - bSizer1712 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapCreateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); - - bSizer1712->Add( m_bitmapCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer1712->Add( 5, 2, 0, 0, 5 ); - - - bSizer1712->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextCreateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCreateLeft->Wrap( -1 ); - m_staticTextCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); - - bSizer1712->Add( m_staticTextCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerStatistics->Add( bSizer1712, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - bSizerData = new wxBoxSizer( wxVERTICAL ); - - m_bitmapData = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapData->SetToolTip( _("Total bytes to copy") ); - - bSizerData->Add( m_bitmapData, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerData->Add( 5, 2, 0, 0, 5 ); - - - bSizerData->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextData = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextData->Wrap( -1 ); - m_staticTextData->SetToolTip( _("Total bytes to copy") ); - - bSizerData->Add( m_staticTextData, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatistics->Add( bSizerData, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer178; - bSizer178 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapCreateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapCreateRight->SetToolTip( _("Number of files and folders that will be created") ); - - bSizer178->Add( m_bitmapCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer178->Add( 5, 2, 0, 0, 5 ); - - - bSizer178->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextCreateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCreateRight->Wrap( -1 ); - m_staticTextCreateRight->SetToolTip( _("Number of files and folders that will be created") ); - - bSizer178->Add( m_staticTextCreateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatistics->Add( bSizer178, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer177; - bSizer177 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapUpdateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapUpdateRight->SetToolTip( _("Number of files that will be updated") ); - - bSizer177->Add( m_bitmapUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer177->Add( 5, 2, 0, 0, 5 ); - - - bSizer177->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextUpdateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextUpdateRight->Wrap( -1 ); - m_staticTextUpdateRight->SetToolTip( _("Number of files that will be updated") ); - - bSizer177->Add( m_staticTextUpdateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatistics->Add( bSizer177, 0, wxEXPAND, 5 ); - - - bSizerStatistics->Add( 5, 5, 0, 0, 5 ); - - wxBoxSizer* bSizer176; - bSizer176 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapDeleteRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); - - bSizer176->Add( m_bitmapDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer176->Add( 5, 2, 0, 0, 5 ); - - - bSizer176->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextDeleteRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDeleteRight->Wrap( -1 ); - m_staticTextDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); - - bSizer176->Add( m_staticTextDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStatistics->Add( bSizer176, 0, wxEXPAND, 5 ); - - - bSizer1801->Add( bSizerStatistics, 0, wxALL, 4 ); - - - m_panelStatistics->SetSizer( bSizer1801 ); - m_panelStatistics->Layout(); - bSizer1801->Fit( m_panelStatistics ); - bSizerViewFilter->Add( m_panelStatistics, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - m_panelViewFilter->SetSizer( bSizerViewFilter ); - m_panelViewFilter->Layout(); - bSizerViewFilter->Fit( m_panelViewFilter ); - bSizerPanelHolder->Add( m_panelViewFilter, 0, 0, 5 ); - - - this->SetSizer( bSizerPanelHolder ); - this->Layout(); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainDialogGenerated::OnClose ) ); - this->Connect( m_menuItemNew->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigNew ) ); - this->Connect( m_menuItemLoad->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigLoad ) ); - this->Connect( m_menuItemSave->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigSave ) ); - this->Connect( m_menuItemSaveAs->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigSaveAs ) ); - this->Connect( m_menuItemSaveAsBatch->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnSaveAsBatchJob ) ); - this->Connect( m_menuItem4->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuQuit ) ); - this->Connect( m_menuItemCompare->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnCompare ) ); - this->Connect( m_menuItemCompSettings->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnCmpSettings ) ); - this->Connect( m_menuItemFilter->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigureFilter ) ); - this->Connect( m_menuItemSyncSettings->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettings ) ); - this->Connect( m_menuItemSynchronize->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnStartSync ) ); - this->Connect( m_menuItemOptions->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuOptions ) ); - this->Connect( m_menuItem15->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuFindItem ) ); - this->Connect( m_menuItem51->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuResetLayout ) ); - this->Connect( m_menuItem5->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuExportFileList ) ); - this->Connect( m_menuItemHelp->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnShowHelp ) ); - this->Connect( m_menuItemCheckVersionNow->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuCheckVersion ) ); - this->Connect( m_menuItemCheckVersionAuto->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuCheckVersionAutomatically ) ); - this->Connect( m_menuItemAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuAbout ) ); - m_buttonCompare->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCompare ), NULL, this ); - m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCmpSettings ), NULL, this ); - m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); - m_bpButtonCmpContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); - m_bpButtonCmpContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); - m_bpButtonFilter->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigureFilter ), NULL, this ); - m_bpButtonFilter->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); - m_bpButtonFilterContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); - m_bpButtonFilterContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); - m_bpButtonSyncConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettings ), NULL, this ); - m_bpButtonSyncConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); - m_bpButtonSyncContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); - m_bpButtonSyncContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); - m_buttonSync->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnStartSync ), NULL, this ); - m_bpButtonAddPair->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopFolderPairAdd ), NULL, this ); - m_bpButtonRemovePair->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopFolderPairRemove ), NULL, this ); - m_bpButtonSwapSides->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSwapSides ), NULL, this ); - m_bpButtonAltCompCfg->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalCompCfg ), NULL, this ); - m_bpButtonLocalFilter->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalFilterCfg ), NULL, this ); - m_bpButtonAltSyncCfg->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalSyncCfg ), NULL, this ); - m_bpButtonHideSearch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnHideSearchPanel ), NULL, this ); - m_textCtrlSearchTxt->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( MainDialogGenerated::OnSearchGridEnter ), NULL, this ); - m_bpButtonNew->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigNew ), NULL, this ); - m_bpButtonOpen->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigLoad ), NULL, this ); - m_bpButtonSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigSave ), NULL, this ); - m_bpButtonSaveAs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigSaveAs ), NULL, this ); - m_bpButtonSaveAsBatch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSaveAsBatchJob ), NULL, this ); - m_listBoxHistory->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( MainDialogGenerated::OnCfgHistoryKeyEvent ), NULL, this ); - m_listBoxHistory->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnLoadFromHistory ), NULL, this ); - m_listBoxHistory->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( MainDialogGenerated::OnLoadFromHistoryDoubleClick ), NULL, this ); - m_listBoxHistory->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCfgHistoryRightClick ), NULL, this ); - m_bpButtonViewTypeSyncAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewType ), NULL, this ); - m_bpButtonShowExcluded->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowExcluded->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowDeleteLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowDeleteLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowUpdateLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowUpdateLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowCreateLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowCreateLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowLeftOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowLeftOnly->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowLeftNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowLeftNewer->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowEqual->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowEqual->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowDoNothing->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowDoNothing->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowDifferent->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowDifferent->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowRightNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowRightNewer->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowRightOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowRightOnly->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowCreateRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowCreateRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowUpdateRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowUpdateRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowDeleteRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowDeleteRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); - m_bpButtonShowConflict->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonShowConflict->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + this->SetSizeHints( wxSize( 640,400 ), wxDefaultSize ); + + m_menubar1 = new wxMenuBar( 0 ); + m_menuFile = new wxMenu(); + m_menuItemNew = new wxMenuItem( m_menuFile, wxID_NEW, wxString( _("&New") ) + wxT('\t') + wxT("Ctrl+N"), wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItemNew ); + + m_menuItemLoad = new wxMenuItem( m_menuFile, wxID_OPEN, wxString( _("&Open...") ) + wxT('\t') + wxT("Ctrl+O"), wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItemLoad ); + + m_menuFile->AppendSeparator(); + + m_menuItemSave = new wxMenuItem( m_menuFile, wxID_SAVE, wxString( _("&Save") ) + wxT('\t') + wxT("Ctrl+S"), wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItemSave ); + + m_menuItemSaveAs = new wxMenuItem( m_menuFile, wxID_SAVEAS, wxString( _("Save &as...") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItemSaveAs ); + + m_menuItemSaveAsBatch = new wxMenuItem( m_menuFile, wxID_ANY, wxString( _("Save as &batch job...") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItemSaveAsBatch ); + + m_menuFile->AppendSeparator(); + + wxMenuItem* m_menuItem4; + m_menuItem4 = new wxMenuItem( m_menuFile, wxID_EXIT, wxString( _("E&xit") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuFile->Append( m_menuItem4 ); + + m_menubar1->Append( m_menuFile, _("&File") ); + + m_menu4 = new wxMenu(); + m_menuItemCompare = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("Start &comparison") ) + wxT('\t') + wxT("F5"), wxEmptyString, wxITEM_NORMAL ); + m_menu4->Append( m_menuItemCompare ); + + m_menu4->AppendSeparator(); + + m_menuItemCompSettings = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("C&omparison settings") ) + wxT('\t') + wxT("F6"), wxEmptyString, wxITEM_NORMAL ); + m_menu4->Append( m_menuItemCompSettings ); + + m_menuItemFilter = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("&Filter settings") ) + wxT('\t') + wxT("F7"), wxEmptyString, wxITEM_NORMAL ); + m_menu4->Append( m_menuItemFilter ); + + m_menuItemSyncSettings = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("S&ynchronization settings") ) + wxT('\t') + wxT("F8"), wxEmptyString, wxITEM_NORMAL ); + m_menu4->Append( m_menuItemSyncSettings ); + + m_menu4->AppendSeparator(); + + m_menuItemSynchronize = new wxMenuItem( m_menu4, wxID_ANY, wxString( _("Start &synchronization") ) + wxT('\t') + wxT("F9"), wxEmptyString, wxITEM_NORMAL ); + m_menu4->Append( m_menuItemSynchronize ); + + m_menubar1->Append( m_menu4, _("&Actions") ); + + m_menuTools = new wxMenu(); + m_menuItemOptions = new wxMenuItem( m_menuTools, wxID_PREFERENCES, wxString( _("&Preferences") ) + wxT('\t') + wxT("Ctrl+,"), wxEmptyString, wxITEM_NORMAL ); + m_menuTools->Append( m_menuItemOptions ); + + m_menuLanguages = new wxMenu(); + wxMenuItem* m_menuLanguagesItem = new wxMenuItem( m_menuTools, wxID_ANY, _("&Language"), wxEmptyString, wxITEM_NORMAL, m_menuLanguages ); + m_menuTools->Append( m_menuLanguagesItem ); + + m_menuTools->AppendSeparator(); + + wxMenuItem* m_menuItem15; + m_menuItem15 = new wxMenuItem( m_menuTools, wxID_FIND, wxString( _("&Find...") ) + wxT('\t') + wxT("Ctrl+F"), wxEmptyString, wxITEM_NORMAL ); + m_menuTools->Append( m_menuItem15 ); + + wxMenuItem* m_menuItem51; + m_menuItem51 = new wxMenuItem( m_menuTools, wxID_ANY, wxString( _("&Reset layout") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuTools->Append( m_menuItem51 ); + + wxMenuItem* m_menuItem5; + m_menuItem5 = new wxMenuItem( m_menuTools, wxID_ANY, wxString( _("&Export file list...") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuTools->Append( m_menuItem5 ); + + m_menubar1->Append( m_menuTools, _("&Tools") ); + + m_menuHelp = new wxMenu(); + m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( _("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL ); + m_menuHelp->Append( m_menuItemHelp ); + + m_menuCheckVersion = new wxMenu(); + wxMenuItem* m_menuCheckVersionItem = new wxMenuItem( m_menuHelp, wxID_ANY, _("&Check for new version"), wxEmptyString, wxITEM_NORMAL, m_menuCheckVersion ); + m_menuItemCheckVersionNow = new wxMenuItem( m_menuCheckVersion, wxID_ANY, wxString( _("&Check now") ) , wxEmptyString, wxITEM_NORMAL ); + m_menuCheckVersion->Append( m_menuItemCheckVersionNow ); + + m_menuItemCheckVersionAuto = new wxMenuItem( m_menuCheckVersion, wxID_ANY, wxString( _("Check &automatically once a week") ) , wxEmptyString, wxITEM_CHECK ); + m_menuCheckVersion->Append( m_menuItemCheckVersionAuto ); + m_menuItemCheckVersionAuto->Check( true ); + + m_menuHelp->Append( m_menuCheckVersionItem ); + + m_menuHelp->AppendSeparator(); + + m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL ); + m_menuHelp->Append( m_menuItemAbout ); + + m_menubar1->Append( m_menuHelp, _("&Help") ); + + this->SetMenuBar( m_menubar1 ); + + bSizerPanelHolder = new wxBoxSizer( wxVERTICAL ); + + m_panelTopButtons = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1791; + bSizer1791 = new wxBoxSizer( wxVERTICAL ); + + bSizerTopButtons = new wxBoxSizer( wxHORIZONTAL ); + + + bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonCancel = new zen::BitmapTextButton( m_panelTopButtons, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonCancel->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + m_buttonCancel->Enable( false ); + m_buttonCancel->Hide(); + + bSizerTopButtons->Add( m_buttonCancel, 0, wxEXPAND, 5 ); + + m_buttonCompare = new zen::BitmapTextButton( m_panelTopButtons, wxID_ANY, _("Compare"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonCompare->SetDefault(); + m_buttonCompare->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + m_buttonCompare->SetToolTip( _("dummy") ); + + bSizerTopButtons->Add( m_buttonCompare, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( 4, 0, 0, 0, 5 ); + + wxBoxSizer* bSizer198; + bSizer198 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonCmpConfig = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); + m_bpButtonCmpConfig->SetToolTip( _("dummy") ); + + bSizer198->Add( m_bpButtonCmpConfig, 1, wxEXPAND, 5 ); + + m_bpButtonCmpContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 17,-1 ), wxBU_AUTODRAW ); + m_bpButtonCmpContext->SetToolTip( _("dummy") ); + + bSizer198->Add( m_bpButtonCmpContext, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( bSizer198, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerTopButtons->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer199; + bSizer199 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonFilter = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 60,-1 ), wxBU_AUTODRAW|wxFULL_REPAINT_ON_RESIZE ); + bSizer199->Add( m_bpButtonFilter, 1, wxEXPAND, 5 ); + + m_bpButtonFilterContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 17,-1 ), wxBU_AUTODRAW ); + m_bpButtonFilterContext->SetToolTip( _("dummy") ); + + bSizer199->Add( m_bpButtonFilterContext, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( bSizer199, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( 5, 5, 0, 0, 5 ); + + + bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* bSizer200; + bSizer200 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonSyncConfig = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); + m_bpButtonSyncConfig->SetToolTip( _("dummy") ); + + bSizer200->Add( m_bpButtonSyncConfig, 1, wxEXPAND, 5 ); + + m_bpButtonSyncContext = new wxBitmapButton( m_panelTopButtons, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 17,-1 ), wxBU_AUTODRAW ); + m_bpButtonSyncContext->SetToolTip( _("dummy") ); + + bSizer200->Add( m_bpButtonSyncContext, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( bSizer200, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( 4, 0, 0, 0, 5 ); + + m_buttonSync = new zen::BitmapTextButton( m_panelTopButtons, wxID_ANY, _("Synchronize"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonSync->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + m_buttonSync->SetToolTip( _("dummy") ); + + bSizerTopButtons->Add( m_buttonSync, 0, wxEXPAND, 5 ); + + + bSizerTopButtons->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer1791->Add( bSizerTopButtons, 1, wxEXPAND, 5 ); + + + m_panelTopButtons->SetSizer( bSizer1791 ); + m_panelTopButtons->Layout(); + bSizer1791->Fit( m_panelTopButtons ); + bSizerPanelHolder->Add( m_panelTopButtons, 0, wxEXPAND, 5 ); + + m_panelDirectoryPairs = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1601; + bSizer1601 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer91; + bSizer91 = new wxBoxSizer( wxHORIZONTAL ); + + m_panelTopLeft = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelTopLeft->SetMinSize( wxSize( 1,-1 ) ); + + wxFlexGridSizer* fgSizer8; + fgSizer8 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer8->AddGrowableCol( 1 ); + fgSizer8->SetFlexibleDirection( wxBOTH ); + fgSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL ); + + + fgSizer8->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextResolvedPathL = new wxStaticText( m_panelTopLeft, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextResolvedPathL->Wrap( -1 ); + fgSizer8->Add( m_staticTextResolvedPathL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); + + wxBoxSizer* bSizer159; + bSizer159 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonAddPair = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + m_bpButtonAddPair->SetToolTip( _("Add folder pair") ); + + bSizer159->Add( m_bpButtonAddPair, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonRemovePair = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + m_bpButtonRemovePair->SetToolTip( _("Remove folder pair") ); + + bSizer159->Add( m_bpButtonRemovePair, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + fgSizer8->Add( bSizer159, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxHORIZONTAL ); + + m_folderPathLeft = new FolderHistoryBox( m_panelTopLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer182->Add( m_folderPathLeft, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectFolderLeft = new wxButton( m_panelTopLeft, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectFolderLeft->SetToolTip( _("Select a folder") ); + + bSizer182->Add( m_buttonSelectFolderLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltFolderLeft = new wxBitmapButton( m_panelTopLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltFolderLeft->SetToolTip( _("Select SFTP folder") ); + + bSizer182->Add( m_bpButtonSelectAltFolderLeft, 0, wxEXPAND, 5 ); + + + fgSizer8->Add( bSizer182, 0, wxEXPAND, 5 ); + + + m_panelTopLeft->SetSizer( fgSizer8 ); + m_panelTopLeft->Layout(); + fgSizer8->Fit( m_panelTopLeft ); + bSizer91->Add( m_panelTopLeft, 1, wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + + m_panelTopCenter = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1771; + bSizer1771 = new wxBoxSizer( wxVERTICAL ); + + + bSizer1771->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bpButtonSwapSides = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW ); + m_bpButtonSwapSides->SetToolTip( _("Swap sides") ); + + bSizer1771->Add( m_bpButtonSwapSides, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer160; + bSizer160 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonAltCompCfg = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer160->Add( m_bpButtonAltCompCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonLocalFilter = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer160->Add( m_bpButtonLocalFilter, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonAltSyncCfg = new wxBitmapButton( m_panelTopCenter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer160->Add( m_bpButtonAltSyncCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer1771->Add( bSizer160, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer1771->Add( 0, 0, 1, wxEXPAND, 5 ); + + + m_panelTopCenter->SetSizer( bSizer1771 ); + m_panelTopCenter->Layout(); + bSizer1771->Fit( m_panelTopCenter ); + bSizer91->Add( m_panelTopCenter, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_panelTopRight = new wxPanel( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelTopRight->SetMinSize( wxSize( 1,-1 ) ); + + wxBoxSizer* bSizer183; + bSizer183 = new wxBoxSizer( wxVERTICAL ); + + m_staticTextResolvedPathR = new wxStaticText( m_panelTopRight, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextResolvedPathR->Wrap( -1 ); + bSizer183->Add( m_staticTextResolvedPathR, 0, wxALL, 2 ); + + wxBoxSizer* bSizer179; + bSizer179 = new wxBoxSizer( wxHORIZONTAL ); + + m_folderPathRight = new FolderHistoryBox( m_panelTopRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer179->Add( m_folderPathRight, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectFolderRight = new wxButton( m_panelTopRight, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectFolderRight->SetToolTip( _("Select a folder") ); + + bSizer179->Add( m_buttonSelectFolderRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltFolderRight = new wxBitmapButton( m_panelTopRight, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltFolderRight->SetToolTip( _("Select SFTP folder") ); + + bSizer179->Add( m_bpButtonSelectAltFolderRight, 0, wxEXPAND, 5 ); + + + bSizer183->Add( bSizer179, 0, wxEXPAND, 5 ); + + + m_panelTopRight->SetSizer( bSizer183 ); + m_panelTopRight->Layout(); + bSizer183->Fit( m_panelTopRight ); + bSizer91->Add( m_panelTopRight, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + + bSizer1601->Add( bSizer91, 0, wxEXPAND, 5 ); + + m_scrolledWindowFolderPairs = new wxScrolledWindow( m_panelDirectoryPairs, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxHSCROLL|wxVSCROLL ); + m_scrolledWindowFolderPairs->SetScrollRate( 10, 10 ); + m_scrolledWindowFolderPairs->SetMinSize( wxSize( -1,0 ) ); + + bSizerAddFolderPairs = new wxBoxSizer( wxVERTICAL ); + + + m_scrolledWindowFolderPairs->SetSizer( bSizerAddFolderPairs ); + m_scrolledWindowFolderPairs->Layout(); + bSizerAddFolderPairs->Fit( m_scrolledWindowFolderPairs ); + bSizer1601->Add( m_scrolledWindowFolderPairs, 1, wxEXPAND, 5 ); + + + m_panelDirectoryPairs->SetSizer( bSizer1601 ); + m_panelDirectoryPairs->Layout(); + bSizer1601->Fit( m_panelDirectoryPairs ); + bSizerPanelHolder->Add( m_panelDirectoryPairs, 0, wxEXPAND, 5 ); + + m_gridNavi = new zen::Grid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_gridNavi->SetScrollRate( 5, 5 ); + bSizerPanelHolder->Add( m_gridNavi, 1, wxEXPAND, 5 ); + + m_panelCenter = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1711; + bSizer1711 = new wxBoxSizer( wxVERTICAL ); + + m_splitterMain = new zen::TripleSplitter( m_panelCenter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1781; + bSizer1781 = new wxBoxSizer( wxHORIZONTAL ); + + m_gridMainL = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_gridMainL->SetScrollRate( 5, 5 ); + bSizer1781->Add( m_gridMainL, 1, wxEXPAND, 5 ); + + m_gridMainC = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_gridMainC->SetScrollRate( 5, 5 ); + bSizer1781->Add( m_gridMainC, 0, wxEXPAND, 5 ); + + m_gridMainR = new zen::Grid( m_splitterMain, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_gridMainR->SetScrollRate( 5, 5 ); + bSizer1781->Add( m_gridMainR, 1, wxEXPAND, 5 ); + + + m_splitterMain->SetSizer( bSizer1781 ); + m_splitterMain->Layout(); + bSizer1781->Fit( m_splitterMain ); + bSizer1711->Add( m_splitterMain, 1, wxEXPAND, 5 ); + + m_panelStatusBar = new wxPanel( m_panelCenter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer451; + bSizer451 = new wxBoxSizer( wxHORIZONTAL ); + + bSizer451->SetMinSize( wxSize( -1,22 ) ); + bSizerFileStatus = new wxBoxSizer( wxHORIZONTAL ); + + bSizerStatusLeft = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer53; + bSizer53 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer53->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + bSizerStatusLeftDirectories = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSmallDirectoryLeft = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerStatusLeftDirectories->Add( m_bitmapSmallDirectoryLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusLeftDirectories->Add( 2, 0, 0, 0, 5 ); + + m_staticTextStatusLeftDirs = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusLeftDirs->Wrap( -1 ); + bSizerStatusLeftDirectories->Add( m_staticTextStatusLeftDirs, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer53->Add( bSizerStatusLeftDirectories, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + bSizerStatusLeftFiles = new wxBoxSizer( wxHORIZONTAL ); + + + bSizerStatusLeftFiles->Add( 10, 0, 0, 0, 5 ); + + m_bitmapSmallFileLeft = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerStatusLeftFiles->Add( m_bitmapSmallFileLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusLeftFiles->Add( 2, 0, 0, 0, 5 ); + + m_staticTextStatusLeftFiles = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusLeftFiles->Wrap( -1 ); + bSizerStatusLeftFiles->Add( m_staticTextStatusLeftFiles, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusLeftFiles->Add( 4, 0, 0, 0, 5 ); + + m_staticTextStatusLeftBytes = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusLeftBytes->Wrap( -1 ); + bSizerStatusLeftFiles->Add( m_staticTextStatusLeftBytes, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer53->Add( bSizerStatusLeftFiles, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer53->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusLeft->Add( bSizer53, 1, wxEXPAND, 5 ); + + m_staticline9 = new wxStaticLine( m_panelStatusBar, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizerStatusLeft->Add( m_staticline9, 0, wxEXPAND|wxTOP, 2 ); + + + bSizerFileStatus->Add( bSizerStatusLeft, 1, wxEXPAND, 5 ); + + + bSizerFileStatus->Add( 26, 0, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextStatusCenter = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusCenter->Wrap( -1 ); + bSizerFileStatus->Add( m_staticTextStatusCenter, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerFileStatus->Add( 26, 0, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + bSizerStatusRight = new wxBoxSizer( wxHORIZONTAL ); + + m_staticline10 = new wxStaticLine( m_panelStatusBar, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizerStatusRight->Add( m_staticline10, 0, wxEXPAND|wxTOP, 2 ); + + wxBoxSizer* bSizer52; + bSizer52 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer52->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + bSizerStatusRightDirectories = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSmallDirectoryRight = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerStatusRightDirectories->Add( m_bitmapSmallDirectoryRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusRightDirectories->Add( 2, 0, 0, 0, 5 ); + + m_staticTextStatusRightDirs = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusRightDirs->Wrap( -1 ); + bSizerStatusRightDirectories->Add( m_staticTextStatusRightDirs, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer52->Add( bSizerStatusRightDirectories, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + bSizerStatusRightFiles = new wxBoxSizer( wxHORIZONTAL ); + + + bSizerStatusRightFiles->Add( 10, 0, 0, 0, 5 ); + + m_bitmapSmallFileRight = new wxStaticBitmap( m_panelStatusBar, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerStatusRightFiles->Add( m_bitmapSmallFileRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusRightFiles->Add( 2, 0, 0, 0, 5 ); + + m_staticTextStatusRightFiles = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusRightFiles->Wrap( -1 ); + bSizerStatusRightFiles->Add( m_staticTextStatusRightFiles, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusRightFiles->Add( 4, 0, 0, 0, 5 ); + + m_staticTextStatusRightBytes = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatusRightBytes->Wrap( -1 ); + bSizerStatusRightFiles->Add( m_staticTextStatusRightBytes, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer52->Add( bSizerStatusRightFiles, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer52->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatusRight->Add( bSizer52, 1, wxEXPAND, 5 ); + + + bSizerFileStatus->Add( bSizerStatusRight, 1, wxEXPAND, 5 ); + + + bSizer451->Add( bSizerFileStatus, 1, wxEXPAND, 5 ); + + m_staticTextFullStatus = new wxStaticText( m_panelStatusBar, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextFullStatus->Wrap( -1 ); + m_staticTextFullStatus->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer451->Add( m_staticTextFullStatus, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + m_panelStatusBar->SetSizer( bSizer451 ); + m_panelStatusBar->Layout(); + bSizer451->Fit( m_panelStatusBar ); + bSizer1711->Add( m_panelStatusBar, 0, wxEXPAND, 5 ); + + + m_panelCenter->SetSizer( bSizer1711 ); + m_panelCenter->Layout(); + bSizer1711->Fit( m_panelCenter ); + bSizerPanelHolder->Add( m_panelCenter, 1, wxEXPAND, 5 ); + + m_panelSearch = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1713; + bSizer1713 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonHideSearch = new wxBitmapButton( m_panelSearch, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + m_bpButtonHideSearch->SetToolTip( _("Close search bar") ); + + bSizer1713->Add( m_bpButtonHideSearch, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_staticText101 = new wxStaticText( m_panelSearch, wxID_ANY, _("Find:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText101->Wrap( -1 ); + bSizer1713->Add( m_staticText101, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlSearchTxt = new wxTextCtrl( m_panelSearch, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 220,-1 ), wxTE_PROCESS_ENTER|wxWANTS_CHARS ); + m_textCtrlSearchTxt->SetMaxLength( 0 ); + bSizer1713->Add( m_textCtrlSearchTxt, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + m_checkBoxMatchCase = new wxCheckBox( m_panelSearch, wxID_ANY, _("Match case"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer1713->Add( m_checkBoxMatchCase, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + m_panelSearch->SetSizer( bSizer1713 ); + m_panelSearch->Layout(); + bSizer1713->Fit( m_panelSearch ); + bSizerPanelHolder->Add( m_panelSearch, 0, 0, 5 ); + + m_panelConfig = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + bSizerConfig = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer151; + bSizer151 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer17611; + bSizer17611 = new wxBoxSizer( wxVERTICAL ); + + m_bpButtonNew = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + m_bpButtonNew->SetToolTip( _("dummy") ); + + bSizer17611->Add( m_bpButtonNew, 0, wxEXPAND, 5 ); + + m_staticText951 = new wxStaticText( m_panelConfig, wxID_ANY, _("New"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText951->Wrap( -1 ); + bSizer17611->Add( m_staticText951, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); + + + bSizer151->Add( bSizer17611, 0, 0, 5 ); + + wxBoxSizer* bSizer1761; + bSizer1761 = new wxBoxSizer( wxVERTICAL ); + + m_bpButtonOpen = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + m_bpButtonOpen->SetToolTip( _("dummy") ); + + bSizer1761->Add( m_bpButtonOpen, 0, wxEXPAND, 5 ); + + m_staticText95 = new wxStaticText( m_panelConfig, wxID_ANY, _("Open..."), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText95->Wrap( -1 ); + bSizer1761->Add( m_staticText95, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); + + + bSizer151->Add( bSizer1761, 0, 0, 5 ); + + wxBoxSizer* bSizer175; + bSizer175 = new wxBoxSizer( wxVERTICAL ); + + m_bpButtonSave = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + m_bpButtonSave->SetToolTip( _("dummy") ); + + bSizer175->Add( m_bpButtonSave, 0, wxEXPAND, 5 ); + + m_staticText961 = new wxStaticText( m_panelConfig, wxID_ANY, _("Save"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText961->Wrap( -1 ); + bSizer175->Add( m_staticText961, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); + + + bSizer151->Add( bSizer175, 0, 0, 5 ); + + wxBoxSizer* bSizer174; + bSizer174 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer1772; + bSizer1772 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonSaveAs = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + m_bpButtonSaveAs->SetToolTip( _("dummy") ); + + bSizer1772->Add( m_bpButtonSaveAs, 1, 0, 5 ); + + m_bpButtonSaveAsBatch = new wxBitmapButton( m_panelConfig, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + m_bpButtonSaveAsBatch->SetToolTip( _("dummy") ); + + bSizer1772->Add( m_bpButtonSaveAsBatch, 1, 0, 5 ); + + + bSizer174->Add( bSizer1772, 0, wxEXPAND, 5 ); + + m_staticText97 = new wxStaticText( m_panelConfig, wxID_ANY, _("Save as..."), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText97->Wrap( -1 ); + bSizer174->Add( m_staticText97, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 2 ); + + + bSizer151->Add( bSizer174, 0, 0, 5 ); + + + bSizerConfig->Add( bSizer151, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_listBoxHistory = new wxListBox( m_panelConfig, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED|wxLB_NEEDED_SB ); + m_listBoxHistory->SetMinSize( wxSize( -1,40 ) ); + + bSizerConfig->Add( m_listBoxHistory, 1, wxEXPAND, 5 ); + + + m_panelConfig->SetSizer( bSizerConfig ); + m_panelConfig->Layout(); + bSizerConfig->Fit( m_panelConfig ); + bSizerPanelHolder->Add( m_panelConfig, 0, 0, 5 ); + + m_panelViewFilter = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + bSizerViewFilter = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextViewType = new wxStaticText( m_panelViewFilter, wxID_ANY, _("View type:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextViewType->Wrap( -1 ); + bSizerViewFilter->Add( m_staticTextViewType, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonViewTypeSyncAction = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 82,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonViewTypeSyncAction, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 5 ); + + m_bpButtonShowExcluded = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowExcluded, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextSelectView = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Select view:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextSelectView->Wrap( -1 ); + bSizerViewFilter->Add( m_staticTextSelectView, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowDeleteLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowDeleteLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowUpdateLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowCreateLeft = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowLeftOnly = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowLeftOnly, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowLeftNewer = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowLeftNewer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowEqual = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowEqual, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowDoNothing = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowDoNothing, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowDifferent = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowDifferent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowRightNewer = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowRightNewer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowRightOnly = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowRightOnly, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowCreateRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowUpdateRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowDeleteRight = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowDeleteRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonShowConflict = new ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 42,42 ), wxBU_AUTODRAW ); + bSizerViewFilter->Add( m_bpButtonShowConflict, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticText96 = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Statistics:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText96->Wrap( -1 ); + bSizerViewFilter->Add( m_staticText96, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_panelStatistics = new wxPanel( m_panelViewFilter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); + m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + bSizer1801 = new wxBoxSizer( wxVERTICAL ); + + bSizerStatistics = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer173; + bSizer173 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapDeleteLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); + + bSizer173->Add( m_bitmapDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer173->Add( 5, 2, 0, 0, 5 ); + + + bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextDeleteLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDeleteLeft->Wrap( -1 ); + m_staticTextDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); + + bSizer173->Add( m_staticTextDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatistics->Add( bSizer173, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer172; + bSizer172 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapUpdateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapUpdateLeft->SetToolTip( _("Number of files that will be updated") ); + + bSizer172->Add( m_bitmapUpdateLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer172->Add( 5, 2, 0, 0, 5 ); + + + bSizer172->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextUpdateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextUpdateLeft->Wrap( -1 ); + m_staticTextUpdateLeft->SetToolTip( _("Number of files that will be updated") ); + + bSizer172->Add( m_staticTextUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerStatistics->Add( bSizer172, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer1712; + bSizer1712 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapCreateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); + + bSizer1712->Add( m_bitmapCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer1712->Add( 5, 2, 0, 0, 5 ); + + + bSizer1712->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextCreateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCreateLeft->Wrap( -1 ); + m_staticTextCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); + + bSizer1712->Add( m_staticTextCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerStatistics->Add( bSizer1712, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + bSizerData = new wxBoxSizer( wxVERTICAL ); + + m_bitmapData = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapData->SetToolTip( _("Total bytes to copy") ); + + bSizerData->Add( m_bitmapData, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerData->Add( 5, 2, 0, 0, 5 ); + + + bSizerData->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextData = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextData->Wrap( -1 ); + m_staticTextData->SetToolTip( _("Total bytes to copy") ); + + bSizerData->Add( m_staticTextData, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatistics->Add( bSizerData, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer178; + bSizer178 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapCreateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapCreateRight->SetToolTip( _("Number of files and folders that will be created") ); + + bSizer178->Add( m_bitmapCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer178->Add( 5, 2, 0, 0, 5 ); + + + bSizer178->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextCreateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCreateRight->Wrap( -1 ); + m_staticTextCreateRight->SetToolTip( _("Number of files and folders that will be created") ); + + bSizer178->Add( m_staticTextCreateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatistics->Add( bSizer178, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer177; + bSizer177 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapUpdateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapUpdateRight->SetToolTip( _("Number of files that will be updated") ); + + bSizer177->Add( m_bitmapUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer177->Add( 5, 2, 0, 0, 5 ); + + + bSizer177->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextUpdateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextUpdateRight->Wrap( -1 ); + m_staticTextUpdateRight->SetToolTip( _("Number of files that will be updated") ); + + bSizer177->Add( m_staticTextUpdateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatistics->Add( bSizer177, 0, wxEXPAND, 5 ); + + + bSizerStatistics->Add( 5, 5, 0, 0, 5 ); + + wxBoxSizer* bSizer176; + bSizer176 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapDeleteRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); + + bSizer176->Add( m_bitmapDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer176->Add( 5, 2, 0, 0, 5 ); + + + bSizer176->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextDeleteRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDeleteRight->Wrap( -1 ); + m_staticTextDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); + + bSizer176->Add( m_staticTextDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStatistics->Add( bSizer176, 0, wxEXPAND, 5 ); + + + bSizer1801->Add( bSizerStatistics, 0, wxALL, 4 ); + + + m_panelStatistics->SetSizer( bSizer1801 ); + m_panelStatistics->Layout(); + bSizer1801->Fit( m_panelStatistics ); + bSizerViewFilter->Add( m_panelStatistics, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + m_panelViewFilter->SetSizer( bSizerViewFilter ); + m_panelViewFilter->Layout(); + bSizerViewFilter->Fit( m_panelViewFilter ); + bSizerPanelHolder->Add( m_panelViewFilter, 0, 0, 5 ); + + + this->SetSizer( bSizerPanelHolder ); + this->Layout(); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainDialogGenerated::OnClose ) ); + this->Connect( m_menuItemNew->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigNew ) ); + this->Connect( m_menuItemLoad->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigLoad ) ); + this->Connect( m_menuItemSave->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigSave ) ); + this->Connect( m_menuItemSaveAs->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigSaveAs ) ); + this->Connect( m_menuItemSaveAsBatch->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnSaveAsBatchJob ) ); + this->Connect( m_menuItem4->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuQuit ) ); + this->Connect( m_menuItemCompare->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnCompare ) ); + this->Connect( m_menuItemCompSettings->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnCmpSettings ) ); + this->Connect( m_menuItemFilter->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnConfigureFilter ) ); + this->Connect( m_menuItemSyncSettings->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettings ) ); + this->Connect( m_menuItemSynchronize->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnStartSync ) ); + this->Connect( m_menuItemOptions->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuOptions ) ); + this->Connect( m_menuItem15->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuFindItem ) ); + this->Connect( m_menuItem51->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuResetLayout ) ); + this->Connect( m_menuItem5->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuExportFileList ) ); + this->Connect( m_menuItemHelp->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnShowHelp ) ); + this->Connect( m_menuItemCheckVersionNow->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuCheckVersion ) ); + this->Connect( m_menuItemCheckVersionAuto->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuCheckVersionAutomatically ) ); + this->Connect( m_menuItemAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnMenuAbout ) ); + m_buttonCompare->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCompare ), NULL, this ); + m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCmpSettings ), NULL, this ); + m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); + m_bpButtonCmpContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); + m_bpButtonCmpContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCompSettingsContext ), NULL, this ); + m_bpButtonFilter->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigureFilter ), NULL, this ); + m_bpButtonFilter->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); + m_bpButtonFilterContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); + m_bpButtonFilterContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnGlobalFilterContext ), NULL, this ); + m_bpButtonSyncConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettings ), NULL, this ); + m_bpButtonSyncConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); + m_bpButtonSyncContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); + m_bpButtonSyncContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnSyncSettingsContext ), NULL, this ); + m_buttonSync->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnStartSync ), NULL, this ); + m_bpButtonAddPair->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopFolderPairAdd ), NULL, this ); + m_bpButtonRemovePair->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopFolderPairRemove ), NULL, this ); + m_bpButtonSwapSides->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSwapSides ), NULL, this ); + m_bpButtonAltCompCfg->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalCompCfg ), NULL, this ); + m_bpButtonLocalFilter->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalFilterCfg ), NULL, this ); + m_bpButtonAltSyncCfg->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnTopLocalSyncCfg ), NULL, this ); + m_bpButtonHideSearch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnHideSearchPanel ), NULL, this ); + m_textCtrlSearchTxt->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( MainDialogGenerated::OnSearchGridEnter ), NULL, this ); + m_bpButtonNew->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigNew ), NULL, this ); + m_bpButtonOpen->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigLoad ), NULL, this ); + m_bpButtonSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigSave ), NULL, this ); + m_bpButtonSaveAs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnConfigSaveAs ), NULL, this ); + m_bpButtonSaveAsBatch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSaveAsBatchJob ), NULL, this ); + m_listBoxHistory->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( MainDialogGenerated::OnCfgHistoryKeyEvent ), NULL, this ); + m_listBoxHistory->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( MainDialogGenerated::OnLoadFromHistory ), NULL, this ); + m_listBoxHistory->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( MainDialogGenerated::OnLoadFromHistoryDoubleClick ), NULL, this ); + m_listBoxHistory->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnCfgHistoryRightClick ), NULL, this ); + m_bpButtonViewTypeSyncAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewType ), NULL, this ); + m_bpButtonShowExcluded->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowExcluded->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowDeleteLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowDeleteLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowUpdateLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowUpdateLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowCreateLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowCreateLeft->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowLeftOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowLeftOnly->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowLeftNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowLeftNewer->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowEqual->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowEqual->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowDoNothing->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowDoNothing->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowDifferent->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowDifferent->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowRightNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowRightNewer->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowRightOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowRightOnly->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowCreateRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowCreateRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowUpdateRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowUpdateRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowDeleteRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowDeleteRight->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); + m_bpButtonShowConflict->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); + m_bpButtonShowConflict->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewButtonRightClick ), NULL, this ); } MainDialogGenerated::~MainDialogGenerated() @@ -1050,895 +1050,895 @@ MainDialogGenerated::~MainDialogGenerated() ConfigDlgGenerated::ConfigDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer7; - bSizer7 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer190; - bSizer190 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer1911; - bSizer1911 = new wxBoxSizer( wxVERTICAL ); - - m_staticTextFolderPairLabel = new wxStaticText( this, wxID_ANY, _("Folder pair:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextFolderPairLabel->Wrap( -1 ); - bSizer1911->Add( m_staticTextFolderPairLabel, 0, wxALL, 5 ); - - m_listBoxFolderPair = new wxListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_NEEDED_SB ); - bSizer1911->Add( m_listBoxFolderPair, 1, 0, 5 ); - - - bSizer190->Add( bSizer1911, 0, wxEXPAND|wxLEFT, 5 ); - - m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelCompSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelCompSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer275; - bSizer275 = new wxBoxSizer( wxVERTICAL ); - - bSizerHeaderCompSettings = new wxBoxSizer( wxVERTICAL ); - - m_staticTextMainCompSettings = new wxStaticText( m_panelCompSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextMainCompSettings->Wrap( -1 ); - bSizerHeaderCompSettings->Add( m_staticTextMainCompSettings, 0, wxALL, 10 ); - - m_checkBoxUseLocalCmpOptions = new wxCheckBox( m_panelCompSettingsHolder, wxID_ANY, _("Use local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxUseLocalCmpOptions->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - bSizerHeaderCompSettings->Add( m_checkBoxUseLocalCmpOptions, 0, wxALL|wxEXPAND, 10 ); - - m_staticlineCompHeader = new wxStaticLine( m_panelCompSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizerHeaderCompSettings->Add( m_staticlineCompHeader, 0, wxEXPAND, 5 ); - - - bSizer275->Add( bSizerHeaderCompSettings, 0, wxEXPAND, 5 ); - - m_panelComparisonSettings = new wxPanel( m_panelCompSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelComparisonSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer159; - bSizer159 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer178; - bSizer178 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer182; - bSizer182 = new wxBoxSizer( wxVERTICAL ); - - m_staticText91 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("Select a variant:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText91->Wrap( -1 ); - bSizer182->Add( m_staticText91, 0, wxALL, 5 ); - - wxFlexGridSizer* fgSizer16; - fgSizer16 = new wxFlexGridSizer( 3, 2, 5, 5 ); - fgSizer16->SetFlexibleDirection( wxBOTH ); - fgSizer16->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_bitmapByTimeSize = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer16->Add( m_bitmapByTimeSize, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_toggleBtnByTimeSize = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File time and size"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_toggleBtnByTimeSize->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer16->Add( m_toggleBtnByTimeSize, 0, wxEXPAND, 5 ); - - m_bitmapByContent = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer16->Add( m_bitmapByContent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_toggleBtnByContent = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File content"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_toggleBtnByContent->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer16->Add( m_toggleBtnByContent, 0, wxEXPAND, 5 ); - - m_bitmapBySize = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer16->Add( m_bitmapBySize, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_toggleBtnBySize = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File size"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_toggleBtnBySize->SetValue( true ); - m_toggleBtnBySize->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer16->Add( m_toggleBtnBySize, 0, wxEXPAND, 5 ); - - - bSizer182->Add( fgSizer16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer178->Add( bSizer182, 0, wxALL, 5 ); - - m_staticline42 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer178->Add( m_staticline42, 0, wxEXPAND, 5 ); - - m_textCtrlCompVarDescription = new wxTextCtrl( m_panelComparisonSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); - bSizer178->Add( m_textCtrlCompVarDescription, 1, wxEXPAND|wxLEFT, 5 ); - - - bSizer159->Add( bSizer178, 0, wxEXPAND, 5 ); - - m_staticline33 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer159->Add( m_staticline33, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1734; - bSizer1734 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer1721; - bSizer1721 = new wxBoxSizer( wxVERTICAL ); - - m_checkBoxSymlinksInclude = new wxCheckBox( m_panelComparisonSettings, wxID_ANY, _("Include &symbolic links:"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer1721->Add( m_checkBoxSymlinksInclude, 0, wxALL, 5 ); - - wxBoxSizer* bSizer176; - bSizer176 = new wxBoxSizer( wxVERTICAL ); - - m_radioBtnSymlinksFollow = new wxRadioButton( m_panelComparisonSettings, wxID_ANY, _("&Follow"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnSymlinksFollow->SetValue( true ); - bSizer176->Add( m_radioBtnSymlinksFollow, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_radioBtnSymlinksDirect = new wxRadioButton( m_panelComparisonSettings, wxID_ANY, _("&Direct"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer176->Add( m_radioBtnSymlinksDirect, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer1721->Add( bSizer176, 0, wxEXPAND|wxLEFT, 18 ); - - m_hyperlink24 = new wxHyperlinkCtrl( m_panelComparisonSettings, wxID_ANY, _("More information"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer1721->Add( m_hyperlink24, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer1734->Add( bSizer1721, 0, wxALL, 5 ); - - m_staticline44 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer1734->Add( m_staticline44, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1733; - bSizer1733 = new wxBoxSizer( wxVERTICAL ); - - m_staticText112 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("&Ignore time shift [hh:mm]"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText112->Wrap( -1 ); - bSizer1733->Add( m_staticText112, 0, wxALL, 5 ); - - m_textCtrlTimeShift = new wxTextCtrl( m_panelComparisonSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_textCtrlTimeShift->SetToolTip( _("List of file time offsets to ignore") ); - - bSizer1733->Add( m_textCtrlTimeShift, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer197; - bSizer197 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText1381 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("Example:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1381->Wrap( -1 ); - m_staticText1381->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer197->Add( m_staticText1381, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_staticText13811 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("1, 2, 4:30"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText13811->Wrap( -1 ); - m_staticText13811->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer197->Add( m_staticText13811, 0, wxBOTTOM|wxRIGHT, 5 ); - - - bSizer1733->Add( bSizer197, 0, 0, 5 ); - - m_hyperlink241 = new wxHyperlinkCtrl( m_panelComparisonSettings, wxID_ANY, _("Handle daylight saving time"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer1733->Add( m_hyperlink241, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer1734->Add( bSizer1733, 0, wxALL, 5 ); - - m_staticline441 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer1734->Add( m_staticline441, 0, wxEXPAND, 5 ); - - - bSizer159->Add( bSizer1734, 0, 0, 5 ); - - m_staticline331 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer159->Add( m_staticline331, 0, wxEXPAND, 5 ); - - - m_panelComparisonSettings->SetSizer( bSizer159 ); - m_panelComparisonSettings->Layout(); - bSizer159->Fit( m_panelComparisonSettings ); - bSizer275->Add( m_panelComparisonSettings, 0, wxEXPAND, 5 ); - - - m_panelCompSettingsHolder->SetSizer( bSizer275 ); - m_panelCompSettingsHolder->Layout(); - bSizer275->Fit( m_panelCompSettingsHolder ); - m_notebook->AddPage( m_panelCompSettingsHolder, _("dummy"), false ); - m_panelFilterSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelFilterSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer278; - bSizer278 = new wxBoxSizer( wxVERTICAL ); - - bSizerHeaderFilterSettings = new wxBoxSizer( wxVERTICAL ); - - m_staticTextMainFilterSettings = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextMainFilterSettings->Wrap( -1 ); - bSizerHeaderFilterSettings->Add( m_staticTextMainFilterSettings, 0, wxALL, 10 ); - - m_staticTextLocalFilterSettings = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextLocalFilterSettings->Wrap( -1 ); - bSizerHeaderFilterSettings->Add( m_staticTextLocalFilterSettings, 0, wxALL, 10 ); - - m_staticlineFilterHeader = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizerHeaderFilterSettings->Add( m_staticlineFilterHeader, 0, wxEXPAND, 5 ); - - - bSizer278->Add( bSizerHeaderFilterSettings, 0, wxEXPAND, 5 ); - - m_panelFilterSettings = new wxPanel( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelFilterSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer1591; - bSizer1591 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer166; - bSizer166 = new wxBoxSizer( wxVERTICAL ); - - - bSizer166->Add( 0, 10, 0, 0, 5 ); - - wxBoxSizer* bSizer1661; - bSizer1661 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapInclude = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 ); - bSizer1661->Add( m_bitmapInclude, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - - wxBoxSizer* bSizer1731; - bSizer1731 = new wxBoxSizer( wxVERTICAL ); - - m_staticText78 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Include:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText78->Wrap( -1 ); - bSizer1731->Add( m_staticText78, 0, 0, 5 ); - - m_textCtrlInclude = new wxTextCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE ); - m_textCtrlInclude->SetMinSize( wxSize( 280,-1 ) ); - - bSizer1731->Add( m_textCtrlInclude, 1, wxEXPAND|wxTOP, 5 ); - - - bSizer1661->Add( bSizer1731, 1, wxEXPAND, 5 ); - - - bSizer166->Add( bSizer1661, 1, wxEXPAND|wxLEFT, 5 ); - - m_staticline22 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer166->Add( m_staticline22, 0, wxEXPAND, 5 ); - - - bSizer166->Add( 0, 10, 0, 0, 5 ); - - wxBoxSizer* bSizer1651; - bSizer1651 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapExclude = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 ); - bSizer1651->Add( m_bitmapExclude, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - wxBoxSizer* bSizer1742; - bSizer1742 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer189; - bSizer189 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText77 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Exclude:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText77->Wrap( -1 ); - bSizer189->Add( m_staticText77, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer189->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_hyperlink171 = new wxHyperlinkCtrl( m_panelFilterSettings, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer189->Add( m_hyperlink171, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - - bSizer1742->Add( bSizer189, 0, wxEXPAND, 5 ); - - m_textCtrlExclude = new wxTextCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE ); - bSizer1742->Add( m_textCtrlExclude, 1, wxEXPAND|wxTOP, 5 ); - - - bSizer1651->Add( bSizer1742, 1, wxEXPAND, 5 ); - - - bSizer166->Add( bSizer1651, 2, wxEXPAND|wxLEFT, 5 ); - - - bSizer1591->Add( bSizer166, 1, wxEXPAND, 5 ); - - m_staticline24 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer1591->Add( m_staticline24, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer160; - bSizer160 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer167; - bSizer167 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapFilterDate = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 34,34 ), 0 ); - bSizer167->Add( m_bitmapFilterDate, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - wxBoxSizer* bSizer165; - bSizer165 = new wxBoxSizer( wxVERTICAL ); - - m_staticText79 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Time span:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText79->Wrap( -1 ); - bSizer165->Add( m_staticText79, 0, wxBOTTOM, 5 ); - - m_spinCtrlTimespan = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); - bSizer165->Add( m_spinCtrlTimespan, 0, wxEXPAND, 5 ); - - wxArrayString m_choiceUnitTimespanChoices; - m_choiceUnitTimespan = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitTimespanChoices, 0 ); - m_choiceUnitTimespan->SetSelection( 0 ); - bSizer165->Add( m_choiceUnitTimespan, 0, wxEXPAND, 5 ); - - - bSizer167->Add( bSizer165, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer160->Add( bSizer167, 0, wxEXPAND|wxALL, 5 ); - - m_staticline23 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer160->Add( m_staticline23, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer168; - bSizer168 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapFilterSize = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), 0 ); - bSizer168->Add( m_bitmapFilterSize, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - - wxBoxSizer* bSizer158; - bSizer158 = new wxBoxSizer( wxVERTICAL ); - - m_staticText80 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("File size:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText80->Wrap( -1 ); - bSizer158->Add( m_staticText80, 0, wxBOTTOM, 5 ); - - wxBoxSizer* bSizer162; - bSizer162 = new wxBoxSizer( wxVERTICAL ); - - m_staticText101 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Minimum:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText101->Wrap( -1 ); - bSizer162->Add( m_staticText101, 0, wxBOTTOM, 2 ); - - m_spinCtrlMinSize = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); - bSizer162->Add( m_spinCtrlMinSize, 0, wxEXPAND, 5 ); - - wxArrayString m_choiceUnitMinSizeChoices; - m_choiceUnitMinSize = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitMinSizeChoices, 0 ); - m_choiceUnitMinSize->SetSelection( 0 ); - bSizer162->Add( m_choiceUnitMinSize, 0, wxEXPAND, 5 ); - - - bSizer158->Add( bSizer162, 0, wxBOTTOM|wxEXPAND, 5 ); - - wxBoxSizer* bSizer163; - bSizer163 = new wxBoxSizer( wxVERTICAL ); - - m_staticText102 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Maximum:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText102->Wrap( -1 ); - bSizer163->Add( m_staticText102, 0, wxBOTTOM, 2 ); - - m_spinCtrlMaxSize = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); - bSizer163->Add( m_spinCtrlMaxSize, 0, wxEXPAND, 5 ); - - wxArrayString m_choiceUnitMaxSizeChoices; - m_choiceUnitMaxSize = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitMaxSizeChoices, 0 ); - m_choiceUnitMaxSize->SetSelection( 0 ); - bSizer163->Add( m_choiceUnitMaxSize, 0, wxEXPAND, 5 ); - - - bSizer158->Add( bSizer163, 0, wxEXPAND, 5 ); - - - bSizer168->Add( bSizer158, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer160->Add( bSizer168, 1, wxEXPAND|wxALL, 5 ); - - - bSizer1591->Add( bSizer160, 0, wxEXPAND, 5 ); - - - m_panelFilterSettings->SetSizer( bSizer1591 ); - m_panelFilterSettings->Layout(); - bSizer1591->Fit( m_panelFilterSettings ); - bSizer278->Add( m_panelFilterSettings, 1, wxEXPAND, 5 ); - - m_staticline62 = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer278->Add( m_staticline62, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer280; - bSizer280 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText44 = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_staticText44->Wrap( 590 ); - bSizer280->Add( m_staticText44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer280->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticline46 = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer280->Add( m_staticline46, 0, wxEXPAND, 5 ); - - m_buttonClear = new wxButton( m_panelFilterSettingsHolder, wxID_DEFAULT, _("C&lear"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizer280->Add( m_buttonClear, 0, wxALL|wxALIGN_CENTER_VERTICAL, 10 ); - - - bSizer278->Add( bSizer280, 0, wxEXPAND, 5 ); - - - m_panelFilterSettingsHolder->SetSizer( bSizer278 ); - m_panelFilterSettingsHolder->Layout(); - bSizer278->Fit( m_panelFilterSettingsHolder ); - m_notebook->AddPage( m_panelFilterSettingsHolder, _("dummy"), false ); - m_panelSyncSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelSyncSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer276; - bSizer276 = new wxBoxSizer( wxVERTICAL ); - - bSizerHeaderSyncSettings = new wxBoxSizer( wxVERTICAL ); - - m_staticTextMainSyncSettings = new wxStaticText( m_panelSyncSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextMainSyncSettings->Wrap( -1 ); - bSizerHeaderSyncSettings->Add( m_staticTextMainSyncSettings, 0, wxALL, 10 ); - - m_checkBoxUseLocalSyncOptions = new wxCheckBox( m_panelSyncSettingsHolder, wxID_ANY, _("Use local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerHeaderSyncSettings->Add( m_checkBoxUseLocalSyncOptions, 0, wxALL|wxEXPAND, 10 ); - - m_staticlineSyncHeader = new wxStaticLine( m_panelSyncSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizerHeaderSyncSettings->Add( m_staticlineSyncHeader, 0, wxEXPAND, 5 ); - - - bSizer276->Add( bSizerHeaderSyncSettings, 0, wxEXPAND, 5 ); - - m_panelSyncSettings = new wxPanel( m_panelSyncSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelSyncSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer232; - bSizer232 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer237; - bSizer237 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer235; - bSizer235 = new wxBoxSizer( wxVERTICAL ); - - m_staticText86 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Select a variant:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText86->Wrap( -1 ); - bSizer235->Add( m_staticText86, 0, wxALL, 5 ); - - wxBoxSizer* bSizer236; - bSizer236 = new wxBoxSizer( wxVERTICAL ); - - m_toggleBtnTwoWay = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); - m_toggleBtnTwoWay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer236->Add( m_toggleBtnTwoWay, 0, wxEXPAND|wxBOTTOM, 5 ); - - m_toggleBtnMirror = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); - m_toggleBtnMirror->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer236->Add( m_toggleBtnMirror, 0, wxEXPAND|wxBOTTOM, 5 ); - - m_toggleBtnUpdate = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); - m_toggleBtnUpdate->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer236->Add( m_toggleBtnUpdate, 0, wxEXPAND|wxBOTTOM, 5 ); - - m_toggleBtnCustom = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); - m_toggleBtnCustom->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer236->Add( m_toggleBtnCustom, 0, wxEXPAND, 5 ); - - - bSizer235->Add( bSizer236, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer237->Add( bSizer235, 0, wxALL, 5 ); - - m_staticline53 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer237->Add( m_staticline53, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer238; - bSizer238 = new wxBoxSizer( wxVERTICAL ); - - - bSizer238->Add( 0, 0, 1, wxEXPAND, 5 ); - - bSizerSyncConfig = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer173; - bSizer173 = new wxBoxSizer( wxVERTICAL ); - - - bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticText119 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Category"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText119->Wrap( -1 ); - bSizer173->Add( m_staticText119, 0, 0, 5 ); - - - bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); - - - bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticText120 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Action"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText120->Wrap( -1 ); - bSizer173->Add( m_staticText120, 0, 0, 5 ); - - - bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); - - - bSizerSyncConfig->Add( bSizer173, 0, wxEXPAND|wxRIGHT, 5 ); - - fgSizerSyncDirections = new wxFlexGridSizer( 2, 0, 5, 5 ); - fgSizerSyncDirections->SetFlexibleDirection( wxBOTH ); - fgSizerSyncDirections->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_bitmapLeftOnly = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapLeftOnly->SetToolTip( _("Item exists on left side only") ); - - fgSizerSyncDirections->Add( m_bitmapLeftOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapLeftNewer = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapLeftNewer->SetToolTip( _("Left side is newer") ); - - fgSizerSyncDirections->Add( m_bitmapLeftNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapDifferent = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapDifferent->SetToolTip( _("Items have different content") ); - - fgSizerSyncDirections->Add( m_bitmapDifferent, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapConflict = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapConflict->SetToolTip( _("Conflict/item cannot be categorized") ); - - fgSizerSyncDirections->Add( m_bitmapConflict, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapRightNewer = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapRightNewer->SetToolTip( _("Right side is newer") ); - - fgSizerSyncDirections->Add( m_bitmapRightNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapRightOnly = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); - m_bitmapRightOnly->SetToolTip( _("Item exists on right side only") ); - - fgSizerSyncDirections->Add( m_bitmapRightOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonLeftOnly = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonLeftOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonLeftNewer = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonLeftNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonDifferent = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonDifferent, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonConflict = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonConflict, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonRightNewer = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonRightNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonRightOnly = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - fgSizerSyncDirections->Add( m_bpButtonRightOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerSyncConfig->Add( fgSizerSyncDirections, 0, 0, 5 ); - - m_bitmapDatabase = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_bitmapDatabase->SetToolTip( _("Detect synchronization directions with the help of database files") ); - - bSizerSyncConfig->Add( m_bitmapDatabase, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxALIGN_CENTER_VERTICAL, 10 ); - - wxBoxSizer* bSizerKeepVerticalHeightWhenSyncDirsNotShown; - bSizerKeepVerticalHeightWhenSyncDirsNotShown = new wxBoxSizer( wxVERTICAL ); - - - bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 45, 0, 0, 5 ); - - - bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 5, 1, 0, 5 ); - - - bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 46, 0, 0, 5 ); - - - bSizerSyncConfig->Add( bSizerKeepVerticalHeightWhenSyncDirsNotShown, 0, 0, 5 ); - - - bSizer238->Add( bSizerSyncConfig, 0, wxALL, 10 ); - - - bSizer238->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticline431 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer238->Add( m_staticline431, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer201; - bSizer201 = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxDetectMove = new wxCheckBox( m_panelSyncSettings, wxID_ANY, _("Detect moved files"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxDetectMove->SetValue(true); - m_checkBoxDetectMove->SetToolTip( _("- Not supported by all file systems\n- Requires and creates database files\n- Detection not available for first sync") ); - - bSizer201->Add( m_checkBoxDetectMove, 0, wxALL|wxEXPAND, 5 ); - - m_hyperlink242 = new wxHyperlinkCtrl( m_panelSyncSettings, wxID_ANY, _("More information"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer201->Add( m_hyperlink242, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer238->Add( bSizer201, 0, wxALL, 5 ); - - - bSizer237->Add( bSizer238, 0, wxEXPAND, 5 ); - - m_staticline531 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer237->Add( m_staticline531, 0, wxEXPAND, 5 ); - - m_textCtrlSyncVarDescription = new wxTextCtrl( m_panelSyncSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); - bSizer237->Add( m_textCtrlSyncVarDescription, 1, wxLEFT|wxEXPAND, 5 ); - - - bSizer232->Add( bSizer237, 0, wxEXPAND, 5 ); - - m_staticline54 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer232->Add( m_staticline54, 0, wxEXPAND, 5 ); - - bSizerDelHandling = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer202; - bSizer202 = new wxBoxSizer( wxVERTICAL ); - - m_staticText87 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Delete files:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText87->Wrap( -1 ); - bSizer202->Add( m_staticText87, 0, wxALL, 5 ); - - m_bpButtonDeletionType = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); - bSizer202->Add( m_bpButtonDeletionType, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizerDelHandling->Add( bSizer202, 0, 0, 5 ); - - wxBoxSizer* bSizer2011; - bSizer2011 = new wxBoxSizer( wxVERTICAL ); - - m_radioBtnRecycler = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Recycle bin"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); - m_radioBtnRecycler->SetValue( true ); - m_radioBtnRecycler->SetToolTip( _("Back up deleted and overwritten files in the recycle bin") ); - - bSizer2011->Add( m_radioBtnRecycler, 0, wxEXPAND|wxALL, 5 ); - - m_radioBtnPermanent = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Permanent"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnPermanent->SetToolTip( _("Delete or overwrite files permanently") ); - - bSizer2011->Add( m_radioBtnPermanent, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - m_radioBtnVersioning = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Versioning"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnVersioning->SetToolTip( _("Move files to a user-defined folder") ); - - bSizer2011->Add( m_radioBtnVersioning, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - - bSizerDelHandling->Add( bSizer2011, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_panelVersioning = new wxPanel( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelVersioning->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer191; - bSizer191 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer156; - bSizer156 = new wxBoxSizer( wxHORIZONTAL ); - - m_versioningFolderPath = new FolderHistoryBox( m_panelVersioning, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer156->Add( m_versioningFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectVersioningFolder = new wxButton( m_panelVersioning, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectVersioningFolder->SetToolTip( _("Select a folder") ); - - bSizer156->Add( m_buttonSelectVersioningFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltFolder = new wxBitmapButton( m_panelVersioning, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltFolder->SetToolTip( _("Select SFTP folder") ); - - bSizer156->Add( m_bpButtonSelectAltFolder, 0, wxEXPAND, 5 ); - - - bSizer191->Add( bSizer156, 0, wxEXPAND|wxALL, 5 ); - - wxBoxSizer* bSizer198; - bSizer198 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText93 = new wxStaticText( m_panelVersioning, wxID_ANY, _("Naming convention:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText93->Wrap( -1 ); - bSizer198->Add( m_staticText93, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer198->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_hyperlink17 = new wxHyperlinkCtrl( m_panelVersioning, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer198->Add( m_hyperlink17, 0, 0, 5 ); - - - bSizer191->Add( bSizer198, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - bSizer192 = new wxBoxSizer( wxHORIZONTAL ); - - wxArrayString m_choiceVersioningStyleChoices; - m_choiceVersioningStyle = new wxChoice( m_panelVersioning, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceVersioningStyleChoices, 0 ); - m_choiceVersioningStyle->SetSelection( 0 ); - bSizer192->Add( m_choiceVersioningStyle, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_staticTextNamingCvtPart1 = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextNamingCvtPart1->Wrap( -1 ); - m_staticTextNamingCvtPart1->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer192->Add( m_staticTextNamingCvtPart1, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextNamingCvtPart2Bold = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextNamingCvtPart2Bold->Wrap( -1 ); - m_staticTextNamingCvtPart2Bold->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - m_staticTextNamingCvtPart2Bold->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer192->Add( m_staticTextNamingCvtPart2Bold, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextNamingCvtPart3 = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextNamingCvtPart3->Wrap( -1 ); - m_staticTextNamingCvtPart3->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer192->Add( m_staticTextNamingCvtPart3, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer191->Add( bSizer192, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - m_panelVersioning->SetSizer( bSizer191 ); - m_panelVersioning->Layout(); - bSizer191->Fit( m_panelVersioning ); - bSizerDelHandling->Add( m_panelVersioning, 1, 0, 5 ); - - - bSizer232->Add( bSizerDelHandling, 0, wxALL|wxEXPAND, 5 ); - - m_staticline582 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer232->Add( m_staticline582, 0, wxEXPAND, 5 ); - - bSizerMiscConfig = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText88 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Handle errors:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText88->Wrap( -1 ); - bSizerMiscConfig->Add( m_staticText88, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); - - wxBoxSizer* bSizer175; - bSizer175 = new wxBoxSizer( wxVERTICAL ); - - m_radioBtnPopupOnErrors = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Pop-up"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); - m_radioBtnPopupOnErrors->SetValue( true ); - m_radioBtnPopupOnErrors->SetToolTip( _("Show pop-up on errors or warnings") ); - - bSizer175->Add( m_radioBtnPopupOnErrors, 0, wxEXPAND|wxALL, 5 ); - - m_radioBtnIgnoreErrors = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Ignore"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnIgnoreErrors->SetToolTip( _("Hide all error and warning messages") ); - - bSizer175->Add( m_radioBtnIgnoreErrors, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizerMiscConfig->Add( bSizer175, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticline57 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizerMiscConfig->Add( m_staticline57, 0, wxEXPAND, 5 ); - - bSizerOnCompletion = new wxBoxSizer( wxVERTICAL ); - - m_staticText89 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText89->Wrap( -1 ); - bSizerOnCompletion->Add( m_staticText89, 0, wxBOTTOM, 5 ); - - m_comboBoxOnCompletion = new OnCompletionBox( m_panelSyncSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizerOnCompletion->Add( m_comboBoxOnCompletion, 0, wxEXPAND, 5 ); - - - bSizerMiscConfig->Add( bSizerOnCompletion, 1, wxALL, 10 ); - - - bSizer232->Add( bSizerMiscConfig, 1, wxEXPAND, 5 ); - - - m_panelSyncSettings->SetSizer( bSizer232 ); - m_panelSyncSettings->Layout(); - bSizer232->Fit( m_panelSyncSettings ); - bSizer276->Add( m_panelSyncSettings, 1, wxEXPAND, 5 ); - - - m_panelSyncSettingsHolder->SetSizer( bSizer276 ); - m_panelSyncSettingsHolder->Layout(); - bSizer276->Fit( m_panelSyncSettingsHolder ); - m_notebook->AddPage( m_panelSyncSettingsHolder, _("dummy"), true ); - - bSizer190->Add( m_notebook, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - - - bSizer7->Add( bSizer190, 1, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOkay->SetDefault(); - m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer7->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer7 ); - this->Layout(); - bSizer7->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( ConfigDlgGenerated::OnClose ) ); - m_listBoxFolderPair->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( ConfigDlgGenerated::onListBoxKeyEvent ), NULL, this ); - m_listBoxFolderPair->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnSelectFolderPair ), NULL, this ); - m_checkBoxUseLocalCmpOptions->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleLocalCompSettings ), NULL, this ); - m_toggleBtnByTimeSize->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompByTimeSizeDouble ), NULL, this ); - m_toggleBtnByTimeSize->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompByTimeSize ), NULL, this ); - m_toggleBtnByContent->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompByContentDouble ), NULL, this ); - m_toggleBtnByContent->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompByContent ), NULL, this ); - m_toggleBtnBySize->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompBySizeDouble ), NULL, this ); - m_toggleBtnBySize->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompBySize ), NULL, this ); - m_checkBoxSymlinksInclude->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeCompOption ), NULL, this ); - m_hyperlink24->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpComparisonSettings ), NULL, this ); - m_textCtrlTimeShift->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( ConfigDlgGenerated::onlTimeShiftKeyDown ), NULL, this ); - m_hyperlink241->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpTimeShift ), NULL, this ); - m_textCtrlInclude->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); - m_hyperlink171->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpShowExamples ), NULL, this ); - m_textCtrlExclude->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); - m_choiceUnitTimespan->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); - m_choiceUnitMinSize->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); - m_choiceUnitMaxSize->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); - m_buttonClear->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnFilterReset ), NULL, this ); - m_checkBoxUseLocalSyncOptions->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleLocalSyncSettings ), NULL, this ); - m_toggleBtnTwoWay->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncTwoWayDouble ), NULL, this ); - m_toggleBtnTwoWay->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncTwoWay ), NULL, this ); - m_toggleBtnMirror->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncMirrorDouble ), NULL, this ); - m_toggleBtnMirror->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncMirror ), NULL, this ); - m_toggleBtnUpdate->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncUpdateDouble ), NULL, this ); - m_toggleBtnUpdate->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncUpdate ), NULL, this ); - m_toggleBtnCustom->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncCustomDouble ), NULL, this ); - m_toggleBtnCustom->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncCustom ), NULL, this ); - m_bpButtonLeftOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnExLeftSideOnly ), NULL, this ); - m_bpButtonLeftNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnLeftNewer ), NULL, this ); - m_bpButtonDifferent->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnDifferent ), NULL, this ); - m_bpButtonConflict->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnConflict ), NULL, this ); - m_bpButtonRightNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnRightNewer ), NULL, this ); - m_bpButtonRightOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnExRightSideOnly ), NULL, this ); - m_checkBoxDetectMove->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleDetectMovedFiles ), NULL, this ); - m_hyperlink242->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpDetectMovedFiles ), NULL, this ); - m_bpButtonDeletionType->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleDeletionType ), NULL, this ); - m_radioBtnRecycler->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionRecycler ), NULL, this ); - m_radioBtnPermanent->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionPermanent ), NULL, this ); - m_radioBtnVersioning->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionVersioning ), NULL, this ); - m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpVersioning ), NULL, this ); - m_choiceVersioningStyle->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeSyncOption ), NULL, this ); - m_radioBtnPopupOnErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnErrorPopup ), NULL, this ); - m_radioBtnIgnoreErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnErrorIgnore ), NULL, this ); - m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnOkay ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer7; + bSizer7 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer190; + bSizer190 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer1911; + bSizer1911 = new wxBoxSizer( wxVERTICAL ); + + m_staticTextFolderPairLabel = new wxStaticText( this, wxID_ANY, _("Folder pair:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextFolderPairLabel->Wrap( -1 ); + bSizer1911->Add( m_staticTextFolderPairLabel, 0, wxALL, 5 ); + + m_listBoxFolderPair = new wxListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_NEEDED_SB ); + bSizer1911->Add( m_listBoxFolderPair, 1, 0, 5 ); + + + bSizer190->Add( bSizer1911, 0, wxEXPAND|wxLEFT, 5 ); + + m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelCompSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelCompSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer275; + bSizer275 = new wxBoxSizer( wxVERTICAL ); + + bSizerHeaderCompSettings = new wxBoxSizer( wxVERTICAL ); + + m_staticTextMainCompSettings = new wxStaticText( m_panelCompSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextMainCompSettings->Wrap( -1 ); + bSizerHeaderCompSettings->Add( m_staticTextMainCompSettings, 0, wxALL, 10 ); + + m_checkBoxUseLocalCmpOptions = new wxCheckBox( m_panelCompSettingsHolder, wxID_ANY, _("Use local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxUseLocalCmpOptions->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + bSizerHeaderCompSettings->Add( m_checkBoxUseLocalCmpOptions, 0, wxALL|wxEXPAND, 10 ); + + m_staticlineCompHeader = new wxStaticLine( m_panelCompSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizerHeaderCompSettings->Add( m_staticlineCompHeader, 0, wxEXPAND, 5 ); + + + bSizer275->Add( bSizerHeaderCompSettings, 0, wxEXPAND, 5 ); + + m_panelComparisonSettings = new wxPanel( m_panelCompSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelComparisonSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer159; + bSizer159 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer178; + bSizer178 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxVERTICAL ); + + m_staticText91 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("Select a variant:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText91->Wrap( -1 ); + bSizer182->Add( m_staticText91, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer16; + fgSizer16 = new wxFlexGridSizer( 3, 2, 5, 5 ); + fgSizer16->SetFlexibleDirection( wxBOTH ); + fgSizer16->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_bitmapByTimeSize = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer16->Add( m_bitmapByTimeSize, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_toggleBtnByTimeSize = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File time and size"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_toggleBtnByTimeSize->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer16->Add( m_toggleBtnByTimeSize, 0, wxEXPAND, 5 ); + + m_bitmapByContent = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer16->Add( m_bitmapByContent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_toggleBtnByContent = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File content"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_toggleBtnByContent->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer16->Add( m_toggleBtnByContent, 0, wxEXPAND, 5 ); + + m_bitmapBySize = new wxStaticBitmap( m_panelComparisonSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer16->Add( m_bitmapBySize, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_toggleBtnBySize = new wxToggleButton( m_panelComparisonSettings, wxID_ANY, _("File size"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_toggleBtnBySize->SetValue( true ); + m_toggleBtnBySize->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer16->Add( m_toggleBtnBySize, 0, wxEXPAND, 5 ); + + + bSizer182->Add( fgSizer16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer178->Add( bSizer182, 0, wxALL, 5 ); + + m_staticline42 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer178->Add( m_staticline42, 0, wxEXPAND, 5 ); + + m_textCtrlCompVarDescription = new wxTextCtrl( m_panelComparisonSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); + bSizer178->Add( m_textCtrlCompVarDescription, 1, wxEXPAND|wxLEFT, 5 ); + + + bSizer159->Add( bSizer178, 0, wxEXPAND, 5 ); + + m_staticline33 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer159->Add( m_staticline33, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer1734; + bSizer1734 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer1721; + bSizer1721 = new wxBoxSizer( wxVERTICAL ); + + m_checkBoxSymlinksInclude = new wxCheckBox( m_panelComparisonSettings, wxID_ANY, _("Include &symbolic links:"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer1721->Add( m_checkBoxSymlinksInclude, 0, wxALL, 5 ); + + wxBoxSizer* bSizer176; + bSizer176 = new wxBoxSizer( wxVERTICAL ); + + m_radioBtnSymlinksFollow = new wxRadioButton( m_panelComparisonSettings, wxID_ANY, _("&Follow"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnSymlinksFollow->SetValue( true ); + bSizer176->Add( m_radioBtnSymlinksFollow, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_radioBtnSymlinksDirect = new wxRadioButton( m_panelComparisonSettings, wxID_ANY, _("&Direct"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer176->Add( m_radioBtnSymlinksDirect, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer1721->Add( bSizer176, 0, wxEXPAND|wxLEFT, 18 ); + + m_hyperlink24 = new wxHyperlinkCtrl( m_panelComparisonSettings, wxID_ANY, _("More information"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer1721->Add( m_hyperlink24, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer1734->Add( bSizer1721, 0, wxALL, 5 ); + + m_staticline44 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer1734->Add( m_staticline44, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer1733; + bSizer1733 = new wxBoxSizer( wxVERTICAL ); + + m_staticText112 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("&Ignore time shift [hh:mm]"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText112->Wrap( -1 ); + bSizer1733->Add( m_staticText112, 0, wxALL, 5 ); + + m_textCtrlTimeShift = new wxTextCtrl( m_panelComparisonSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_textCtrlTimeShift->SetToolTip( _("List of file time offsets to ignore") ); + + bSizer1733->Add( m_textCtrlTimeShift, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizer197; + bSizer197 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText1381 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("Example:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1381->Wrap( -1 ); + m_staticText1381->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer197->Add( m_staticText1381, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticText13811 = new wxStaticText( m_panelComparisonSettings, wxID_ANY, _("1, 2, 4:30"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText13811->Wrap( -1 ); + m_staticText13811->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer197->Add( m_staticText13811, 0, wxBOTTOM|wxRIGHT, 5 ); + + + bSizer1733->Add( bSizer197, 0, 0, 5 ); + + m_hyperlink241 = new wxHyperlinkCtrl( m_panelComparisonSettings, wxID_ANY, _("Handle daylight saving time"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer1733->Add( m_hyperlink241, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer1734->Add( bSizer1733, 0, wxALL, 5 ); + + m_staticline441 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer1734->Add( m_staticline441, 0, wxEXPAND, 5 ); + + + bSizer159->Add( bSizer1734, 0, 0, 5 ); + + m_staticline331 = new wxStaticLine( m_panelComparisonSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer159->Add( m_staticline331, 0, wxEXPAND, 5 ); + + + m_panelComparisonSettings->SetSizer( bSizer159 ); + m_panelComparisonSettings->Layout(); + bSizer159->Fit( m_panelComparisonSettings ); + bSizer275->Add( m_panelComparisonSettings, 0, wxEXPAND, 5 ); + + + m_panelCompSettingsHolder->SetSizer( bSizer275 ); + m_panelCompSettingsHolder->Layout(); + bSizer275->Fit( m_panelCompSettingsHolder ); + m_notebook->AddPage( m_panelCompSettingsHolder, _("dummy"), false ); + m_panelFilterSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelFilterSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer278; + bSizer278 = new wxBoxSizer( wxVERTICAL ); + + bSizerHeaderFilterSettings = new wxBoxSizer( wxVERTICAL ); + + m_staticTextMainFilterSettings = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextMainFilterSettings->Wrap( -1 ); + bSizerHeaderFilterSettings->Add( m_staticTextMainFilterSettings, 0, wxALL, 10 ); + + m_staticTextLocalFilterSettings = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextLocalFilterSettings->Wrap( -1 ); + bSizerHeaderFilterSettings->Add( m_staticTextLocalFilterSettings, 0, wxALL, 10 ); + + m_staticlineFilterHeader = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizerHeaderFilterSettings->Add( m_staticlineFilterHeader, 0, wxEXPAND, 5 ); + + + bSizer278->Add( bSizerHeaderFilterSettings, 0, wxEXPAND, 5 ); + + m_panelFilterSettings = new wxPanel( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelFilterSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer1591; + bSizer1591 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer166; + bSizer166 = new wxBoxSizer( wxVERTICAL ); + + + bSizer166->Add( 0, 10, 0, 0, 5 ); + + wxBoxSizer* bSizer1661; + bSizer1661 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapInclude = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 ); + bSizer1661->Add( m_bitmapInclude, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + + wxBoxSizer* bSizer1731; + bSizer1731 = new wxBoxSizer( wxVERTICAL ); + + m_staticText78 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Include:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText78->Wrap( -1 ); + bSizer1731->Add( m_staticText78, 0, 0, 5 ); + + m_textCtrlInclude = new wxTextCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE ); + m_textCtrlInclude->SetMinSize( wxSize( 280,-1 ) ); + + bSizer1731->Add( m_textCtrlInclude, 1, wxEXPAND|wxTOP, 5 ); + + + bSizer1661->Add( bSizer1731, 1, wxEXPAND, 5 ); + + + bSizer166->Add( bSizer1661, 1, wxEXPAND|wxLEFT, 5 ); + + m_staticline22 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer166->Add( m_staticline22, 0, wxEXPAND, 5 ); + + + bSizer166->Add( 0, 10, 0, 0, 5 ); + + wxBoxSizer* bSizer1651; + bSizer1651 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapExclude = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 ); + bSizer1651->Add( m_bitmapExclude, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer1742; + bSizer1742 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer189; + bSizer189 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText77 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Exclude:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText77->Wrap( -1 ); + bSizer189->Add( m_staticText77, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer189->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_hyperlink171 = new wxHyperlinkCtrl( m_panelFilterSettings, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer189->Add( m_hyperlink171, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + + bSizer1742->Add( bSizer189, 0, wxEXPAND, 5 ); + + m_textCtrlExclude = new wxTextCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE ); + bSizer1742->Add( m_textCtrlExclude, 1, wxEXPAND|wxTOP, 5 ); + + + bSizer1651->Add( bSizer1742, 1, wxEXPAND, 5 ); + + + bSizer166->Add( bSizer1651, 2, wxEXPAND|wxLEFT, 5 ); + + + bSizer1591->Add( bSizer166, 1, wxEXPAND, 5 ); + + m_staticline24 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer1591->Add( m_staticline24, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer160; + bSizer160 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer167; + bSizer167 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapFilterDate = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 34,34 ), 0 ); + bSizer167->Add( m_bitmapFilterDate, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer165; + bSizer165 = new wxBoxSizer( wxVERTICAL ); + + m_staticText79 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Time span:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText79->Wrap( -1 ); + bSizer165->Add( m_staticText79, 0, wxBOTTOM, 5 ); + + m_spinCtrlTimespan = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); + bSizer165->Add( m_spinCtrlTimespan, 0, wxEXPAND, 5 ); + + wxArrayString m_choiceUnitTimespanChoices; + m_choiceUnitTimespan = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitTimespanChoices, 0 ); + m_choiceUnitTimespan->SetSelection( 0 ); + bSizer165->Add( m_choiceUnitTimespan, 0, wxEXPAND, 5 ); + + + bSizer167->Add( bSizer165, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer160->Add( bSizer167, 0, wxEXPAND|wxALL, 5 ); + + m_staticline23 = new wxStaticLine( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer160->Add( m_staticline23, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer168; + bSizer168 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapFilterSize = new wxStaticBitmap( m_panelFilterSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), 0 ); + bSizer168->Add( m_bitmapFilterSize, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + + wxBoxSizer* bSizer158; + bSizer158 = new wxBoxSizer( wxVERTICAL ); + + m_staticText80 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("File size:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText80->Wrap( -1 ); + bSizer158->Add( m_staticText80, 0, wxBOTTOM, 5 ); + + wxBoxSizer* bSizer162; + bSizer162 = new wxBoxSizer( wxVERTICAL ); + + m_staticText101 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Minimum:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText101->Wrap( -1 ); + bSizer162->Add( m_staticText101, 0, wxBOTTOM, 2 ); + + m_spinCtrlMinSize = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); + bSizer162->Add( m_spinCtrlMinSize, 0, wxEXPAND, 5 ); + + wxArrayString m_choiceUnitMinSizeChoices; + m_choiceUnitMinSize = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitMinSizeChoices, 0 ); + m_choiceUnitMinSize->SetSelection( 0 ); + bSizer162->Add( m_choiceUnitMinSize, 0, wxEXPAND, 5 ); + + + bSizer158->Add( bSizer162, 0, wxBOTTOM|wxEXPAND, 5 ); + + wxBoxSizer* bSizer163; + bSizer163 = new wxBoxSizer( wxVERTICAL ); + + m_staticText102 = new wxStaticText( m_panelFilterSettings, wxID_ANY, _("Maximum:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText102->Wrap( -1 ); + bSizer163->Add( m_staticText102, 0, wxBOTTOM, 2 ); + + m_spinCtrlMaxSize = new wxSpinCtrl( m_panelFilterSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 2000000000, 0 ); + bSizer163->Add( m_spinCtrlMaxSize, 0, wxEXPAND, 5 ); + + wxArrayString m_choiceUnitMaxSizeChoices; + m_choiceUnitMaxSize = new wxChoice( m_panelFilterSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitMaxSizeChoices, 0 ); + m_choiceUnitMaxSize->SetSelection( 0 ); + bSizer163->Add( m_choiceUnitMaxSize, 0, wxEXPAND, 5 ); + + + bSizer158->Add( bSizer163, 0, wxEXPAND, 5 ); + + + bSizer168->Add( bSizer158, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer160->Add( bSizer168, 1, wxEXPAND|wxALL, 5 ); + + + bSizer1591->Add( bSizer160, 0, wxEXPAND, 5 ); + + + m_panelFilterSettings->SetSizer( bSizer1591 ); + m_panelFilterSettings->Layout(); + bSizer1591->Fit( m_panelFilterSettings ); + bSizer278->Add( m_panelFilterSettings, 1, wxEXPAND, 5 ); + + m_staticline62 = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer278->Add( m_staticline62, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer280; + bSizer280 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText44 = new wxStaticText( m_panelFilterSettingsHolder, wxID_ANY, _("Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticText44->Wrap( 590 ); + bSizer280->Add( m_staticText44, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer280->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticline46 = new wxStaticLine( m_panelFilterSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer280->Add( m_staticline46, 0, wxEXPAND, 5 ); + + m_buttonClear = new wxButton( m_panelFilterSettingsHolder, wxID_DEFAULT, _("C&lear"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizer280->Add( m_buttonClear, 0, wxALL|wxALIGN_CENTER_VERTICAL, 10 ); + + + bSizer278->Add( bSizer280, 0, wxEXPAND, 5 ); + + + m_panelFilterSettingsHolder->SetSizer( bSizer278 ); + m_panelFilterSettingsHolder->Layout(); + bSizer278->Fit( m_panelFilterSettingsHolder ); + m_notebook->AddPage( m_panelFilterSettingsHolder, _("dummy"), false ); + m_panelSyncSettingsHolder = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelSyncSettingsHolder->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer276; + bSizer276 = new wxBoxSizer( wxVERTICAL ); + + bSizerHeaderSyncSettings = new wxBoxSizer( wxVERTICAL ); + + m_staticTextMainSyncSettings = new wxStaticText( m_panelSyncSettingsHolder, wxID_ANY, _("Main settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextMainSyncSettings->Wrap( -1 ); + bSizerHeaderSyncSettings->Add( m_staticTextMainSyncSettings, 0, wxALL, 10 ); + + m_checkBoxUseLocalSyncOptions = new wxCheckBox( m_panelSyncSettingsHolder, wxID_ANY, _("Use local settings:"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerHeaderSyncSettings->Add( m_checkBoxUseLocalSyncOptions, 0, wxALL|wxEXPAND, 10 ); + + m_staticlineSyncHeader = new wxStaticLine( m_panelSyncSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizerHeaderSyncSettings->Add( m_staticlineSyncHeader, 0, wxEXPAND, 5 ); + + + bSizer276->Add( bSizerHeaderSyncSettings, 0, wxEXPAND, 5 ); + + m_panelSyncSettings = new wxPanel( m_panelSyncSettingsHolder, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelSyncSettings->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer232; + bSizer232 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer237; + bSizer237 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer235; + bSizer235 = new wxBoxSizer( wxVERTICAL ); + + m_staticText86 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Select a variant:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText86->Wrap( -1 ); + bSizer235->Add( m_staticText86, 0, wxALL, 5 ); + + wxBoxSizer* bSizer236; + bSizer236 = new wxBoxSizer( wxVERTICAL ); + + m_toggleBtnTwoWay = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); + m_toggleBtnTwoWay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer236->Add( m_toggleBtnTwoWay, 0, wxEXPAND|wxBOTTOM, 5 ); + + m_toggleBtnMirror = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); + m_toggleBtnMirror->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer236->Add( m_toggleBtnMirror, 0, wxEXPAND|wxBOTTOM, 5 ); + + m_toggleBtnUpdate = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); + m_toggleBtnUpdate->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer236->Add( m_toggleBtnUpdate, 0, wxEXPAND|wxBOTTOM, 5 ); + + m_toggleBtnCustom = new wxToggleButton( m_panelSyncSettings, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,30 ), 0 ); + m_toggleBtnCustom->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer236->Add( m_toggleBtnCustom, 0, wxEXPAND, 5 ); + + + bSizer235->Add( bSizer236, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer237->Add( bSizer235, 0, wxALL, 5 ); + + m_staticline53 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer237->Add( m_staticline53, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer238; + bSizer238 = new wxBoxSizer( wxVERTICAL ); + + + bSizer238->Add( 0, 0, 1, wxEXPAND, 5 ); + + bSizerSyncConfig = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer173; + bSizer173 = new wxBoxSizer( wxVERTICAL ); + + + bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticText119 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Category"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText119->Wrap( -1 ); + bSizer173->Add( m_staticText119, 0, 0, 5 ); + + + bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticText120 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText120->Wrap( -1 ); + bSizer173->Add( m_staticText120, 0, 0, 5 ); + + + bSizer173->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizerSyncConfig->Add( bSizer173, 0, wxEXPAND|wxRIGHT, 5 ); + + fgSizerSyncDirections = new wxFlexGridSizer( 2, 0, 5, 5 ); + fgSizerSyncDirections->SetFlexibleDirection( wxBOTH ); + fgSizerSyncDirections->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_bitmapLeftOnly = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapLeftOnly->SetToolTip( _("Item exists on left side only") ); + + fgSizerSyncDirections->Add( m_bitmapLeftOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapLeftNewer = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapLeftNewer->SetToolTip( _("Left side is newer") ); + + fgSizerSyncDirections->Add( m_bitmapLeftNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapDifferent = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapDifferent->SetToolTip( _("Items have different content") ); + + fgSizerSyncDirections->Add( m_bitmapDifferent, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapConflict = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapConflict->SetToolTip( _("Conflict/item cannot be categorized") ); + + fgSizerSyncDirections->Add( m_bitmapConflict, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapRightNewer = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapRightNewer->SetToolTip( _("Right side is newer") ); + + fgSizerSyncDirections->Add( m_bitmapRightNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapRightOnly = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 45,45 ), 0 ); + m_bitmapRightOnly->SetToolTip( _("Item exists on right side only") ); + + fgSizerSyncDirections->Add( m_bitmapRightOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonLeftOnly = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonLeftOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonLeftNewer = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonLeftNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonDifferent = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonDifferent, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonConflict = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonConflict, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonRightNewer = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonRightNewer, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonRightOnly = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + fgSizerSyncDirections->Add( m_bpButtonRightOnly, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerSyncConfig->Add( fgSizerSyncDirections, 0, 0, 5 ); + + m_bitmapDatabase = new wxStaticBitmap( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_bitmapDatabase->SetToolTip( _("Detect synchronization directions with the help of database files") ); + + bSizerSyncConfig->Add( m_bitmapDatabase, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxALIGN_CENTER_VERTICAL, 10 ); + + wxBoxSizer* bSizerKeepVerticalHeightWhenSyncDirsNotShown; + bSizerKeepVerticalHeightWhenSyncDirsNotShown = new wxBoxSizer( wxVERTICAL ); + + + bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 45, 0, 0, 5 ); + + + bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 5, 1, 0, 5 ); + + + bSizerKeepVerticalHeightWhenSyncDirsNotShown->Add( 0, 46, 0, 0, 5 ); + + + bSizerSyncConfig->Add( bSizerKeepVerticalHeightWhenSyncDirsNotShown, 0, 0, 5 ); + + + bSizer238->Add( bSizerSyncConfig, 0, wxALL, 10 ); + + + bSizer238->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticline431 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer238->Add( m_staticline431, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer201; + bSizer201 = new wxBoxSizer( wxHORIZONTAL ); + + m_checkBoxDetectMove = new wxCheckBox( m_panelSyncSettings, wxID_ANY, _("Detect moved files"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxDetectMove->SetValue(true); + m_checkBoxDetectMove->SetToolTip( _("- Not supported by all file systems\n- Requires and creates database files\n- Detection not available for first sync") ); + + bSizer201->Add( m_checkBoxDetectMove, 0, wxALL|wxEXPAND, 5 ); + + m_hyperlink242 = new wxHyperlinkCtrl( m_panelSyncSettings, wxID_ANY, _("More information"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer201->Add( m_hyperlink242, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer238->Add( bSizer201, 0, wxALL, 5 ); + + + bSizer237->Add( bSizer238, 0, wxEXPAND, 5 ); + + m_staticline531 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer237->Add( m_staticline531, 0, wxEXPAND, 5 ); + + m_textCtrlSyncVarDescription = new wxTextCtrl( m_panelSyncSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); + bSizer237->Add( m_textCtrlSyncVarDescription, 1, wxLEFT|wxEXPAND, 5 ); + + + bSizer232->Add( bSizer237, 0, wxEXPAND, 5 ); + + m_staticline54 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer232->Add( m_staticline54, 0, wxEXPAND, 5 ); + + bSizerDelHandling = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer202; + bSizer202 = new wxBoxSizer( wxVERTICAL ); + + m_staticText87 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Delete files:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText87->Wrap( -1 ); + bSizer202->Add( m_staticText87, 0, wxALL, 5 ); + + m_bpButtonDeletionType = new wxBitmapButton( m_panelSyncSettings, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 46,46 ), wxBU_AUTODRAW ); + bSizer202->Add( m_bpButtonDeletionType, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizerDelHandling->Add( bSizer202, 0, 0, 5 ); + + wxBoxSizer* bSizer2011; + bSizer2011 = new wxBoxSizer( wxVERTICAL ); + + m_radioBtnRecycler = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Recycle bin"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_radioBtnRecycler->SetValue( true ); + m_radioBtnRecycler->SetToolTip( _("Back up deleted and overwritten files in the recycle bin") ); + + bSizer2011->Add( m_radioBtnRecycler, 0, wxEXPAND|wxALL, 5 ); + + m_radioBtnPermanent = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Permanent"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnPermanent->SetToolTip( _("Delete or overwrite files permanently") ); + + bSizer2011->Add( m_radioBtnPermanent, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_radioBtnVersioning = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Versioning"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnVersioning->SetToolTip( _("Move files to a user-defined folder") ); + + bSizer2011->Add( m_radioBtnVersioning, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + bSizerDelHandling->Add( bSizer2011, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_panelVersioning = new wxPanel( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelVersioning->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer191; + bSizer191 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer156; + bSizer156 = new wxBoxSizer( wxHORIZONTAL ); + + m_versioningFolderPath = new FolderHistoryBox( m_panelVersioning, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer156->Add( m_versioningFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectVersioningFolder = new wxButton( m_panelVersioning, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectVersioningFolder->SetToolTip( _("Select a folder") ); + + bSizer156->Add( m_buttonSelectVersioningFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltFolder = new wxBitmapButton( m_panelVersioning, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltFolder->SetToolTip( _("Select SFTP folder") ); + + bSizer156->Add( m_bpButtonSelectAltFolder, 0, wxEXPAND, 5 ); + + + bSizer191->Add( bSizer156, 0, wxEXPAND|wxALL, 5 ); + + wxBoxSizer* bSizer198; + bSizer198 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText93 = new wxStaticText( m_panelVersioning, wxID_ANY, _("Naming convention:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText93->Wrap( -1 ); + bSizer198->Add( m_staticText93, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer198->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_hyperlink17 = new wxHyperlinkCtrl( m_panelVersioning, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer198->Add( m_hyperlink17, 0, 0, 5 ); + + + bSizer191->Add( bSizer198, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + bSizer192 = new wxBoxSizer( wxHORIZONTAL ); + + wxArrayString m_choiceVersioningStyleChoices; + m_choiceVersioningStyle = new wxChoice( m_panelVersioning, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceVersioningStyleChoices, 0 ); + m_choiceVersioningStyle->SetSelection( 0 ); + bSizer192->Add( m_choiceVersioningStyle, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_staticTextNamingCvtPart1 = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextNamingCvtPart1->Wrap( -1 ); + m_staticTextNamingCvtPart1->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer192->Add( m_staticTextNamingCvtPart1, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextNamingCvtPart2Bold = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextNamingCvtPart2Bold->Wrap( -1 ); + m_staticTextNamingCvtPart2Bold->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + m_staticTextNamingCvtPart2Bold->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer192->Add( m_staticTextNamingCvtPart2Bold, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextNamingCvtPart3 = new wxStaticText( m_panelVersioning, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextNamingCvtPart3->Wrap( -1 ); + m_staticTextNamingCvtPart3->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer192->Add( m_staticTextNamingCvtPart3, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer191->Add( bSizer192, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + m_panelVersioning->SetSizer( bSizer191 ); + m_panelVersioning->Layout(); + bSizer191->Fit( m_panelVersioning ); + bSizerDelHandling->Add( m_panelVersioning, 1, 0, 5 ); + + + bSizer232->Add( bSizerDelHandling, 0, wxALL|wxEXPAND, 5 ); + + m_staticline582 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer232->Add( m_staticline582, 0, wxEXPAND, 5 ); + + bSizerMiscConfig = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText88 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("Handle errors:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText88->Wrap( -1 ); + bSizerMiscConfig->Add( m_staticText88, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); + + wxBoxSizer* bSizer175; + bSizer175 = new wxBoxSizer( wxVERTICAL ); + + m_radioBtnPopupOnErrors = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Pop-up"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); + m_radioBtnPopupOnErrors->SetValue( true ); + m_radioBtnPopupOnErrors->SetToolTip( _("Show pop-up on errors or warnings") ); + + bSizer175->Add( m_radioBtnPopupOnErrors, 0, wxEXPAND|wxALL, 5 ); + + m_radioBtnIgnoreErrors = new wxRadioButton( m_panelSyncSettings, wxID_ANY, _("&Ignore"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnIgnoreErrors->SetToolTip( _("Hide all error and warning messages") ); + + bSizer175->Add( m_radioBtnIgnoreErrors, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizerMiscConfig->Add( bSizer175, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticline57 = new wxStaticLine( m_panelSyncSettings, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizerMiscConfig->Add( m_staticline57, 0, wxEXPAND, 5 ); + + bSizerOnCompletion = new wxBoxSizer( wxVERTICAL ); + + m_staticText89 = new wxStaticText( m_panelSyncSettings, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText89->Wrap( -1 ); + bSizerOnCompletion->Add( m_staticText89, 0, wxBOTTOM, 5 ); + + m_comboBoxOnCompletion = new OnCompletionBox( m_panelSyncSettings, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizerOnCompletion->Add( m_comboBoxOnCompletion, 0, wxEXPAND, 5 ); + + + bSizerMiscConfig->Add( bSizerOnCompletion, 1, wxALL, 10 ); + + + bSizer232->Add( bSizerMiscConfig, 1, wxEXPAND, 5 ); + + + m_panelSyncSettings->SetSizer( bSizer232 ); + m_panelSyncSettings->Layout(); + bSizer232->Fit( m_panelSyncSettings ); + bSizer276->Add( m_panelSyncSettings, 1, wxEXPAND, 5 ); + + + m_panelSyncSettingsHolder->SetSizer( bSizer276 ); + m_panelSyncSettingsHolder->Layout(); + bSizer276->Fit( m_panelSyncSettingsHolder ); + m_notebook->AddPage( m_panelSyncSettingsHolder, _("dummy"), true ); + + bSizer190->Add( m_notebook, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + + bSizer7->Add( bSizer190, 1, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOkay->SetDefault(); + m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer7->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer7 ); + this->Layout(); + bSizer7->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( ConfigDlgGenerated::OnClose ) ); + m_listBoxFolderPair->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( ConfigDlgGenerated::onListBoxKeyEvent ), NULL, this ); + m_listBoxFolderPair->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnSelectFolderPair ), NULL, this ); + m_checkBoxUseLocalCmpOptions->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleLocalCompSettings ), NULL, this ); + m_toggleBtnByTimeSize->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompByTimeSizeDouble ), NULL, this ); + m_toggleBtnByTimeSize->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompByTimeSize ), NULL, this ); + m_toggleBtnByContent->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompByContentDouble ), NULL, this ); + m_toggleBtnByContent->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompByContent ), NULL, this ); + m_toggleBtnBySize->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnCompBySizeDouble ), NULL, this ); + m_toggleBtnBySize->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCompBySize ), NULL, this ); + m_checkBoxSymlinksInclude->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeCompOption ), NULL, this ); + m_hyperlink24->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpComparisonSettings ), NULL, this ); + m_textCtrlTimeShift->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( ConfigDlgGenerated::onlTimeShiftKeyDown ), NULL, this ); + m_hyperlink241->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpTimeShift ), NULL, this ); + m_textCtrlInclude->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); + m_hyperlink171->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpShowExamples ), NULL, this ); + m_textCtrlExclude->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); + m_choiceUnitTimespan->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); + m_choiceUnitMinSize->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); + m_choiceUnitMaxSize->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeFilterOption ), NULL, this ); + m_buttonClear->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnFilterReset ), NULL, this ); + m_checkBoxUseLocalSyncOptions->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleLocalSyncSettings ), NULL, this ); + m_toggleBtnTwoWay->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncTwoWayDouble ), NULL, this ); + m_toggleBtnTwoWay->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncTwoWay ), NULL, this ); + m_toggleBtnMirror->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncMirrorDouble ), NULL, this ); + m_toggleBtnMirror->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncMirror ), NULL, this ); + m_toggleBtnUpdate->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncUpdateDouble ), NULL, this ); + m_toggleBtnUpdate->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncUpdate ), NULL, this ); + m_toggleBtnCustom->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ConfigDlgGenerated::OnSyncCustomDouble ), NULL, this ); + m_toggleBtnCustom->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnSyncCustom ), NULL, this ); + m_bpButtonLeftOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnExLeftSideOnly ), NULL, this ); + m_bpButtonLeftNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnLeftNewer ), NULL, this ); + m_bpButtonDifferent->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnDifferent ), NULL, this ); + m_bpButtonConflict->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnConflict ), NULL, this ); + m_bpButtonRightNewer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnRightNewer ), NULL, this ); + m_bpButtonRightOnly->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnExRightSideOnly ), NULL, this ); + m_checkBoxDetectMove->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleDetectMovedFiles ), NULL, this ); + m_hyperlink242->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpDetectMovedFiles ), NULL, this ); + m_bpButtonDeletionType->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnToggleDeletionType ), NULL, this ); + m_radioBtnRecycler->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionRecycler ), NULL, this ); + m_radioBtnPermanent->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionPermanent ), NULL, this ); + m_radioBtnVersioning->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnDeletionVersioning ), NULL, this ); + m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( ConfigDlgGenerated::OnHelpVersioning ), NULL, this ); + m_choiceVersioningStyle->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnChangeSyncOption ), NULL, this ); + m_radioBtnPopupOnErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnErrorPopup ), NULL, this ); + m_radioBtnIgnoreErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( ConfigDlgGenerated::OnErrorIgnore ), NULL, this ); + m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnOkay ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ConfigDlgGenerated::OnCancel ), NULL, this ); } ConfigDlgGenerated::~ConfigDlgGenerated() @@ -1947,98 +1947,98 @@ ConfigDlgGenerated::~ConfigDlgGenerated() FolderPairPanelGenerated::FolderPairPanelGenerated( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) { - wxBoxSizer* bSizer74; - bSizer74 = new wxBoxSizer( wxHORIZONTAL ); - - m_panelLeft = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelLeft->SetMinSize( wxSize( 1,-1 ) ); - - wxBoxSizer* bSizer134; - bSizer134 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonFolderPairOptions = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - m_bpButtonFolderPairOptions->SetToolTip( _("Arrange folder pair") ); - - bSizer134->Add( m_bpButtonFolderPairOptions, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonRemovePair = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - m_bpButtonRemovePair->SetToolTip( _("Remove folder pair") ); - - bSizer134->Add( m_bpButtonRemovePair, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_folderPathLeft = new FolderHistoryBox( m_panelLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer134->Add( m_folderPathLeft, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectFolderLeft = new wxButton( m_panelLeft, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectFolderLeft->SetToolTip( _("Select a folder") ); - - bSizer134->Add( m_buttonSelectFolderLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltFolderLeft = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltFolderLeft->SetToolTip( _("Select SFTP folder") ); - - bSizer134->Add( m_bpButtonSelectAltFolderLeft, 0, wxEXPAND, 5 ); - - - m_panelLeft->SetSizer( bSizer134 ); - m_panelLeft->Layout(); - bSizer134->Fit( m_panelLeft ); - bSizer74->Add( m_panelLeft, 0, wxLEFT|wxEXPAND, 5 ); - - m_panel20 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer95; - bSizer95 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer95->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bpButtonAltCompCfg = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer95->Add( m_bpButtonAltCompCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonLocalFilter = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer95->Add( m_bpButtonLocalFilter, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonAltSyncCfg = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); - bSizer95->Add( m_bpButtonAltSyncCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer95->Add( 0, 0, 1, wxEXPAND, 5 ); - - - m_panel20->SetSizer( bSizer95 ); - m_panel20->Layout(); - bSizer95->Fit( m_panel20 ); - bSizer74->Add( m_panel20, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - m_panelRight = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelRight->SetMinSize( wxSize( 1,-1 ) ); - - wxBoxSizer* bSizer135; - bSizer135 = new wxBoxSizer( wxHORIZONTAL ); - - m_folderPathRight = new FolderHistoryBox( m_panelRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer135->Add( m_folderPathRight, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectFolderRight = new wxButton( m_panelRight, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectFolderRight->SetToolTip( _("Select a folder") ); - - bSizer135->Add( m_buttonSelectFolderRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltFolderRight = new wxBitmapButton( m_panelRight, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltFolderRight->SetToolTip( _("Select SFTP folder") ); - - bSizer135->Add( m_bpButtonSelectAltFolderRight, 0, wxEXPAND, 5 ); - - - m_panelRight->SetSizer( bSizer135 ); - m_panelRight->Layout(); - bSizer135->Fit( m_panelRight ); - bSizer74->Add( m_panelRight, 1, wxRIGHT|wxEXPAND, 5 ); - - - this->SetSizer( bSizer74 ); - this->Layout(); - bSizer74->Fit( this ); + wxBoxSizer* bSizer74; + bSizer74 = new wxBoxSizer( wxHORIZONTAL ); + + m_panelLeft = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelLeft->SetMinSize( wxSize( 1,-1 ) ); + + wxBoxSizer* bSizer134; + bSizer134 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonFolderPairOptions = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + m_bpButtonFolderPairOptions->SetToolTip( _("Arrange folder pair") ); + + bSizer134->Add( m_bpButtonFolderPairOptions, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonRemovePair = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + m_bpButtonRemovePair->SetToolTip( _("Remove folder pair") ); + + bSizer134->Add( m_bpButtonRemovePair, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_folderPathLeft = new FolderHistoryBox( m_panelLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer134->Add( m_folderPathLeft, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectFolderLeft = new wxButton( m_panelLeft, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectFolderLeft->SetToolTip( _("Select a folder") ); + + bSizer134->Add( m_buttonSelectFolderLeft, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltFolderLeft = new wxBitmapButton( m_panelLeft, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltFolderLeft->SetToolTip( _("Select SFTP folder") ); + + bSizer134->Add( m_bpButtonSelectAltFolderLeft, 0, wxEXPAND, 5 ); + + + m_panelLeft->SetSizer( bSizer134 ); + m_panelLeft->Layout(); + bSizer134->Fit( m_panelLeft ); + bSizer74->Add( m_panelLeft, 0, wxLEFT|wxEXPAND, 5 ); + + m_panel20 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer95; + bSizer95 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer95->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bpButtonAltCompCfg = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer95->Add( m_bpButtonAltCompCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonLocalFilter = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer95->Add( m_bpButtonLocalFilter, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonAltSyncCfg = new wxBitmapButton( m_panel20, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,25 ), wxBU_AUTODRAW ); + bSizer95->Add( m_bpButtonAltSyncCfg, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer95->Add( 0, 0, 1, wxEXPAND, 5 ); + + + m_panel20->SetSizer( bSizer95 ); + m_panel20->Layout(); + bSizer95->Fit( m_panel20 ); + bSizer74->Add( m_panel20, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_panelRight = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelRight->SetMinSize( wxSize( 1,-1 ) ); + + wxBoxSizer* bSizer135; + bSizer135 = new wxBoxSizer( wxHORIZONTAL ); + + m_folderPathRight = new FolderHistoryBox( m_panelRight, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer135->Add( m_folderPathRight, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectFolderRight = new wxButton( m_panelRight, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectFolderRight->SetToolTip( _("Select a folder") ); + + bSizer135->Add( m_buttonSelectFolderRight, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltFolderRight = new wxBitmapButton( m_panelRight, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltFolderRight->SetToolTip( _("Select SFTP folder") ); + + bSizer135->Add( m_bpButtonSelectAltFolderRight, 0, wxEXPAND, 5 ); + + + m_panelRight->SetSizer( bSizer135 ); + m_panelRight->Layout(); + bSizer135->Fit( m_panelRight ); + bSizer74->Add( m_panelRight, 1, wxRIGHT|wxEXPAND, 5 ); + + + this->SetSizer( bSizer74 ); + this->Layout(); + bSizer74->Fit( this ); } FolderPairPanelGenerated::~FolderPairPanelGenerated() @@ -2047,173 +2047,173 @@ FolderPairPanelGenerated::~FolderPairPanelGenerated() SftpSetupDlgGenerated::SftpSetupDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer134; - bSizer134 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSftp = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer72->Add( m_bitmapSftp, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Enter your SFTP login details:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextHeader->Wrap( -1 ); - bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer134->Add( bSizer72, 0, 0, 5 ); - - m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); - - m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxHORIZONTAL ); - - wxFlexGridSizer* fgSizer16; - fgSizer16 = new wxFlexGridSizer( 0, 2, 0, 0 ); - fgSizer16->AddGrowableCol( 1 ); - fgSizer16->SetFlexibleDirection( wxBOTH ); - fgSizer16->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticText12311 = new wxStaticText( m_panel41, wxID_ANY, _("Server name or IP address:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText12311->Wrap( -1 ); - fgSizer16->Add( m_staticText12311, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 ); - - wxBoxSizer* bSizer183; - bSizer183 = new wxBoxSizer( wxHORIZONTAL ); - - m_textCtrlServer = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 260,-1 ), 0 ); - bSizer183->Add( m_textCtrlServer, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticText1233 = new wxStaticText( m_panel41, wxID_ANY, _("Port:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1233->Wrap( -1 ); - bSizer183->Add( m_staticText1233, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - - m_textCtrlPort = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), 0 ); - bSizer183->Add( m_textCtrlPort, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - fgSizer16->Add( bSizer183, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - - - fgSizer16->Add( 0, 0, 0, 0, 5 ); - - wxBoxSizer* bSizer181; - bSizer181 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText1381 = new wxStaticText( m_panel41, wxID_ANY, _("Example:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1381->Wrap( -1 ); - m_staticText1381->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer181->Add( m_staticText1381, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); - - m_staticText1382 = new wxStaticText( m_panel41, wxID_ANY, _("www.website.com"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1382->Wrap( -1 ); - m_staticText1382->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer181->Add( m_staticText1382, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_staticText138 = new wxStaticText( m_panel41, wxID_ANY, _("123.123.123"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText138->Wrap( -1 ); - m_staticText138->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer181->Add( m_staticText138, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - fgSizer16->Add( bSizer181, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticText123 = new wxStaticText( m_panel41, wxID_ANY, _("User name:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText123->Wrap( -1 ); - fgSizer16->Add( m_staticText123, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 ); - - m_textCtrlUserName = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer16->Add( m_textCtrlUserName, 0, wxALL|wxEXPAND, 5 ); - - m_staticText1231 = new wxStaticText( m_panel41, wxID_ANY, _("Password:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1231->Wrap( -1 ); - fgSizer16->Add( m_staticText1231, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); - - wxBoxSizer* bSizer182; - bSizer182 = new wxBoxSizer( wxVERTICAL ); - - m_textCtrlPasswordVisible = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer182->Add( m_textCtrlPasswordVisible, 0, wxEXPAND, 5 ); - - m_textCtrlPasswordHidden = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD ); - bSizer182->Add( m_textCtrlPasswordHidden, 0, wxEXPAND, 5 ); - - - fgSizer16->Add( bSizer182, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - - fgSizer16->Add( 0, 0, 0, 0, 5 ); - - m_checkBoxShowPassword = new wxCheckBox( m_panel41, wxID_ANY, _("&Show password"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer16->Add( m_checkBoxShowPassword, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - - m_staticText1232 = new wxStaticText( m_panel41, wxID_ANY, _("Directory on server:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText1232->Wrap( -1 ); - fgSizer16->Add( m_staticText1232, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - - wxBoxSizer* bSizer206; - bSizer206 = new wxBoxSizer( wxHORIZONTAL ); - - m_textCtrlServerPath = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer206->Add( m_textCtrlServerPath, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectFolder = new wxButton( m_panel41, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectFolder->SetToolTip( _("Select a folder") ); - - bSizer206->Add( m_buttonSelectFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - fgSizer16->Add( bSizer206, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - - bSizer185->Add( fgSizer16, 1, wxALL, 5 ); - - - m_panel41->SetSizer( bSizer185 ); - m_panel41->Layout(); - bSizer185->Fit( m_panel41 ); - bSizer134->Add( m_panel41, 1, wxEXPAND, 5 ); - - m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOkay->SetDefault(); - m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOkay, 0, wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer134->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer134 ); - this->Layout(); - bSizer134->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SftpSetupDlgGenerated::OnClose ) ); - m_checkBoxShowPassword->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnToggleShowPassword ), NULL, this ); - m_buttonSelectFolder->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnBrowseSftpFolder ), NULL, this ); - m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnOkay ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer134; + bSizer134 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSftp = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer72->Add( m_bitmapSftp, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Enter your SFTP login details:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextHeader->Wrap( -1 ); + bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer134->Add( bSizer72, 0, 0, 5 ); + + m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); + + m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxHORIZONTAL ); + + wxFlexGridSizer* fgSizer16; + fgSizer16 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer16->AddGrowableCol( 1 ); + fgSizer16->SetFlexibleDirection( wxBOTH ); + fgSizer16->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticText12311 = new wxStaticText( m_panel41, wxID_ANY, _("Server name or IP address:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText12311->Wrap( -1 ); + fgSizer16->Add( m_staticText12311, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + wxBoxSizer* bSizer183; + bSizer183 = new wxBoxSizer( wxHORIZONTAL ); + + m_textCtrlServer = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 260,-1 ), 0 ); + bSizer183->Add( m_textCtrlServer, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText1233 = new wxStaticText( m_panel41, wxID_ANY, _("Port:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1233->Wrap( -1 ); + bSizer183->Add( m_staticText1233, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + m_textCtrlPort = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), 0 ); + bSizer183->Add( m_textCtrlPort, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + fgSizer16->Add( bSizer183, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + + fgSizer16->Add( 0, 0, 0, 0, 5 ); + + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText1381 = new wxStaticText( m_panel41, wxID_ANY, _("Example:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1381->Wrap( -1 ); + m_staticText1381->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer181->Add( m_staticText1381, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); + + m_staticText1382 = new wxStaticText( m_panel41, wxID_ANY, _("www.website.com"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1382->Wrap( -1 ); + m_staticText1382->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer181->Add( m_staticText1382, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticText138 = new wxStaticText( m_panel41, wxID_ANY, _("123.123.123"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText138->Wrap( -1 ); + m_staticText138->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer181->Add( m_staticText138, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + fgSizer16->Add( bSizer181, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText123 = new wxStaticText( m_panel41, wxID_ANY, _("User name:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText123->Wrap( -1 ); + fgSizer16->Add( m_staticText123, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + m_textCtrlUserName = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer16->Add( m_textCtrlUserName, 0, wxALL|wxEXPAND, 5 ); + + m_staticText1231 = new wxStaticText( m_panel41, wxID_ANY, _("Password:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1231->Wrap( -1 ); + fgSizer16->Add( m_staticText1231, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxVERTICAL ); + + m_textCtrlPasswordVisible = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer182->Add( m_textCtrlPasswordVisible, 0, wxEXPAND, 5 ); + + m_textCtrlPasswordHidden = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD ); + bSizer182->Add( m_textCtrlPasswordHidden, 0, wxEXPAND, 5 ); + + + fgSizer16->Add( bSizer182, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + fgSizer16->Add( 0, 0, 0, 0, 5 ); + + m_checkBoxShowPassword = new wxCheckBox( m_panel41, wxID_ANY, _("&Show password"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer16->Add( m_checkBoxShowPassword, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + m_staticText1232 = new wxStaticText( m_panel41, wxID_ANY, _("Directory on server:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText1232->Wrap( -1 ); + fgSizer16->Add( m_staticText1232, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + wxBoxSizer* bSizer206; + bSizer206 = new wxBoxSizer( wxHORIZONTAL ); + + m_textCtrlServerPath = new wxTextCtrl( m_panel41, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer206->Add( m_textCtrlServerPath, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectFolder = new wxButton( m_panel41, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectFolder->SetToolTip( _("Select a folder") ); + + bSizer206->Add( m_buttonSelectFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + fgSizer16->Add( bSizer206, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + + bSizer185->Add( fgSizer16, 1, wxALL, 5 ); + + + m_panel41->SetSizer( bSizer185 ); + m_panel41->Layout(); + bSizer185->Fit( m_panel41 ); + bSizer134->Add( m_panel41, 1, wxEXPAND, 5 ); + + m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOkay->SetDefault(); + m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOkay, 0, wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer134->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer134 ); + this->Layout(); + bSizer134->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SftpSetupDlgGenerated::OnClose ) ); + m_checkBoxShowPassword->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnToggleShowPassword ), NULL, this ); + m_buttonSelectFolder->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnBrowseSftpFolder ), NULL, this ); + m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnOkay ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpSetupDlgGenerated::OnCancel ), NULL, this ); } SftpSetupDlgGenerated::~SftpSetupDlgGenerated() @@ -2222,72 +2222,72 @@ SftpSetupDlgGenerated::~SftpSetupDlgGenerated() SftpFolderPickerGenerated::SftpFolderPickerGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer134; - bSizer134 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSftp = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer72->Add( m_bitmapSftp, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Select a directory on the server:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextHeader->Wrap( -1 ); - bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer134->Add( bSizer72, 0, 0, 5 ); - - m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); - - m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxVERTICAL ); - - m_treeCtrlFileSystem = new wxTreeCtrl( m_panel41, wxID_ANY, wxDefaultPosition, wxSize( 350,400 ), wxTR_FULL_ROW_HIGHLIGHT|wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT|wxTR_NO_LINES|wxNO_BORDER ); - bSizer185->Add( m_treeCtrlFileSystem, 1, wxEXPAND, 5 ); - - - m_panel41->SetSizer( bSizer185 ); - m_panel41->Layout(); - bSizer185->Fit( m_panel41 ); - bSizer134->Add( m_panel41, 1, wxEXPAND, 5 ); - - m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonOkay = new wxButton( this, wxID_OK, _("Select Folder"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOkay->SetDefault(); - m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOkay, 0, wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer134->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer134 ); - this->Layout(); - bSizer134->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SftpFolderPickerGenerated::OnClose ) ); - m_treeCtrlFileSystem->Connect( wxEVT_COMMAND_TREE_ITEM_EXPANDING, wxTreeEventHandler( SftpFolderPickerGenerated::OnExpandNode ), NULL, this ); - m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpFolderPickerGenerated::OnOkay ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpFolderPickerGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer134; + bSizer134 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSftp = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer72->Add( m_bitmapSftp, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Select a directory on the server:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextHeader->Wrap( -1 ); + bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer134->Add( bSizer72, 0, 0, 5 ); + + m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); + + m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxVERTICAL ); + + m_treeCtrlFileSystem = new wxTreeCtrl( m_panel41, wxID_ANY, wxDefaultPosition, wxSize( 350,400 ), wxTR_FULL_ROW_HIGHLIGHT|wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT|wxTR_NO_LINES|wxNO_BORDER ); + bSizer185->Add( m_treeCtrlFileSystem, 1, wxEXPAND, 5 ); + + + m_panel41->SetSizer( bSizer185 ); + m_panel41->Layout(); + bSizer185->Fit( m_panel41 ); + bSizer134->Add( m_panel41, 1, wxEXPAND, 5 ); + + m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonOkay = new wxButton( this, wxID_OK, _("Select Folder"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOkay->SetDefault(); + m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOkay, 0, wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer134->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer134 ); + this->Layout(); + bSizer134->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SftpFolderPickerGenerated::OnClose ) ); + m_treeCtrlFileSystem->Connect( wxEVT_COMMAND_TREE_ITEM_EXPANDING, wxTreeEventHandler( SftpFolderPickerGenerated::OnExpandNode ), NULL, this ); + m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpFolderPickerGenerated::OnOkay ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SftpFolderPickerGenerated::OnCancel ), NULL, this ); } SftpFolderPickerGenerated::~SftpFolderPickerGenerated() @@ -2296,221 +2296,221 @@ SftpFolderPickerGenerated::~SftpFolderPickerGenerated() SyncConfirmationDlgGenerated::SyncConfirmationDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer134; - bSizer134 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSync = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer72->Add( m_bitmapSync, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Start synchronization now?"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextHeader->Wrap( -1 ); - bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer134->Add( bSizer72, 0, 0, 5 ); - - m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); - - m_panelStatistics = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer185->Add( 40, 0, 0, 0, 5 ); - - - bSizer185->Add( 0, 0, 1, 0, 5 ); - - m_staticline38 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer185->Add( m_staticline38, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer162; - bSizer162 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer182; - bSizer182 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText84 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Variant:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText84->Wrap( -1 ); - bSizer182->Add( m_staticText84, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - - - bSizer182->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticTextVariant = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextVariant->Wrap( -1 ); - m_staticTextVariant->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer182->Add( m_staticTextVariant, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - - bSizer182->Add( 0, 0, 1, wxEXPAND, 5 ); - - - bSizer162->Add( bSizer182, 0, wxALL|wxEXPAND, 5 ); - - m_staticline14 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer162->Add( m_staticline14, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer181; - bSizer181 = new wxBoxSizer( wxVERTICAL ); - - m_staticText83 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Statistics:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText83->Wrap( -1 ); - bSizer181->Add( m_staticText83, 0, wxALL, 5 ); - - wxFlexGridSizer* fgSizer11; - fgSizer11 = new wxFlexGridSizer( 2, 7, 2, 5 ); - fgSizer11->SetFlexibleDirection( wxBOTH ); - fgSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_bitmapDeleteLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); - - fgSizer11->Add( m_bitmapDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapUpdateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapUpdateLeft->SetToolTip( _("Number of files that will be updated") ); - - fgSizer11->Add( m_bitmapUpdateLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_bitmapCreateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); - - fgSizer11->Add( m_bitmapCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bitmapData = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapData->SetToolTip( _("Total bytes to copy") ); - - fgSizer11->Add( m_bitmapData, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bitmapCreateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapCreateRight->SetToolTip( _("Number of files and folders that will be created") ); - - fgSizer11->Add( m_bitmapCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bitmapUpdateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapUpdateRight->SetToolTip( _("Number of files that will be updated") ); - - fgSizer11->Add( m_bitmapUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bitmapDeleteRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmapDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); - - fgSizer11->Add( m_bitmapDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextDeleteLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDeleteLeft->Wrap( -1 ); - m_staticTextDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); - - fgSizer11->Add( m_staticTextDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextUpdateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextUpdateLeft->Wrap( -1 ); - m_staticTextUpdateLeft->SetToolTip( _("Number of files that will be updated") ); - - fgSizer11->Add( m_staticTextUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextCreateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCreateLeft->Wrap( -1 ); - m_staticTextCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); - - fgSizer11->Add( m_staticTextCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextData = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextData->Wrap( -1 ); - m_staticTextData->SetToolTip( _("Total bytes to copy") ); - - fgSizer11->Add( m_staticTextData, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextCreateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCreateRight->Wrap( -1 ); - m_staticTextCreateRight->SetToolTip( _("Number of files and folders that will be created") ); - - fgSizer11->Add( m_staticTextCreateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextUpdateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextUpdateRight->Wrap( -1 ); - m_staticTextUpdateRight->SetToolTip( _("Number of files that will be updated") ); - - fgSizer11->Add( m_staticTextUpdateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextDeleteRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDeleteRight->Wrap( -1 ); - m_staticTextDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); - - fgSizer11->Add( m_staticTextDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer181->Add( fgSizer11, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - - bSizer162->Add( bSizer181, 0, wxEXPAND|wxALL, 5 ); - - - bSizer185->Add( bSizer162, 0, 0, 5 ); - - m_staticline381 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer185->Add( m_staticline381, 0, wxEXPAND, 5 ); - - - bSizer185->Add( 0, 0, 1, 0, 5 ); - - - bSizer185->Add( 40, 0, 0, 0, 5 ); - - - m_panelStatistics->SetSizer( bSizer185 ); - m_panelStatistics->Layout(); - bSizer185->Fit( m_panelStatistics ); - bSizer134->Add( m_panelStatistics, 0, wxEXPAND, 5 ); - - m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer164; - bSizer164 = new wxBoxSizer( wxVERTICAL ); - - m_checkBoxDontShowAgain = new wxCheckBox( this, wxID_ANY, _("&Don't show this dialog again"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer164->Add( m_checkBoxDontShowAgain, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonStartSync = new wxButton( this, wxID_OK, _("Start"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonStartSync->SetDefault(); - m_buttonStartSync->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonStartSync, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer164->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - bSizer134->Add( bSizer164, 1, wxEXPAND, 5 ); - - - this->SetSizer( bSizer134 ); - this->Layout(); - bSizer134->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SyncConfirmationDlgGenerated::OnClose ) ); - m_buttonStartSync->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SyncConfirmationDlgGenerated::OnStartSync ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SyncConfirmationDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer134; + bSizer134 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSync = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer72->Add( m_bitmapSync, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("Start synchronization now?"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextHeader->Wrap( -1 ); + bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer134->Add( bSizer72, 0, 0, 5 ); + + m_staticline371 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline371, 0, wxEXPAND, 5 ); + + m_panelStatistics = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer185->Add( 40, 0, 0, 0, 5 ); + + + bSizer185->Add( 0, 0, 1, 0, 5 ); + + m_staticline38 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer185->Add( m_staticline38, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer162; + bSizer162 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText84 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Variant:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText84->Wrap( -1 ); + bSizer182->Add( m_staticText84, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + + bSizer182->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticTextVariant = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextVariant->Wrap( -1 ); + m_staticTextVariant->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer182->Add( m_staticTextVariant, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + bSizer182->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer162->Add( bSizer182, 0, wxALL|wxEXPAND, 5 ); + + m_staticline14 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer162->Add( m_staticline14, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxVERTICAL ); + + m_staticText83 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Statistics:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText83->Wrap( -1 ); + bSizer181->Add( m_staticText83, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer11; + fgSizer11 = new wxFlexGridSizer( 2, 7, 2, 5 ); + fgSizer11->SetFlexibleDirection( wxBOTH ); + fgSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_bitmapDeleteLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); + + fgSizer11->Add( m_bitmapDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapUpdateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapUpdateLeft->SetToolTip( _("Number of files that will be updated") ); + + fgSizer11->Add( m_bitmapUpdateLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_bitmapCreateLeft = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); + + fgSizer11->Add( m_bitmapCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bitmapData = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapData->SetToolTip( _("Total bytes to copy") ); + + fgSizer11->Add( m_bitmapData, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bitmapCreateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapCreateRight->SetToolTip( _("Number of files and folders that will be created") ); + + fgSizer11->Add( m_bitmapCreateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bitmapUpdateRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapUpdateRight->SetToolTip( _("Number of files that will be updated") ); + + fgSizer11->Add( m_bitmapUpdateRight, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bitmapDeleteRight = new wxStaticBitmap( m_panelStatistics, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); + + fgSizer11->Add( m_bitmapDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextDeleteLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDeleteLeft->Wrap( -1 ); + m_staticTextDeleteLeft->SetToolTip( _("Number of files and folders that will be deleted") ); + + fgSizer11->Add( m_staticTextDeleteLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextUpdateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextUpdateLeft->Wrap( -1 ); + m_staticTextUpdateLeft->SetToolTip( _("Number of files that will be updated") ); + + fgSizer11->Add( m_staticTextUpdateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextCreateLeft = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCreateLeft->Wrap( -1 ); + m_staticTextCreateLeft->SetToolTip( _("Number of files and folders that will be created") ); + + fgSizer11->Add( m_staticTextCreateLeft, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextData = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextData->Wrap( -1 ); + m_staticTextData->SetToolTip( _("Total bytes to copy") ); + + fgSizer11->Add( m_staticTextData, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextCreateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCreateRight->Wrap( -1 ); + m_staticTextCreateRight->SetToolTip( _("Number of files and folders that will be created") ); + + fgSizer11->Add( m_staticTextCreateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextUpdateRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextUpdateRight->Wrap( -1 ); + m_staticTextUpdateRight->SetToolTip( _("Number of files that will be updated") ); + + fgSizer11->Add( m_staticTextUpdateRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextDeleteRight = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDeleteRight->Wrap( -1 ); + m_staticTextDeleteRight->SetToolTip( _("Number of files and folders that will be deleted") ); + + fgSizer11->Add( m_staticTextDeleteRight, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer181->Add( fgSizer11, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + bSizer162->Add( bSizer181, 0, wxEXPAND|wxALL, 5 ); + + + bSizer185->Add( bSizer162, 0, 0, 5 ); + + m_staticline381 = new wxStaticLine( m_panelStatistics, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer185->Add( m_staticline381, 0, wxEXPAND, 5 ); + + + bSizer185->Add( 0, 0, 1, 0, 5 ); + + + bSizer185->Add( 40, 0, 0, 0, 5 ); + + + m_panelStatistics->SetSizer( bSizer185 ); + m_panelStatistics->Layout(); + bSizer185->Fit( m_panelStatistics ); + bSizer134->Add( m_panelStatistics, 0, wxEXPAND, 5 ); + + m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer134->Add( m_staticline12, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer164; + bSizer164 = new wxBoxSizer( wxVERTICAL ); + + m_checkBoxDontShowAgain = new wxCheckBox( this, wxID_ANY, _("&Don't show this dialog again"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer164->Add( m_checkBoxDontShowAgain, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonStartSync = new wxButton( this, wxID_OK, _("Start"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonStartSync->SetDefault(); + m_buttonStartSync->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonStartSync, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer164->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + bSizer134->Add( bSizer164, 1, wxEXPAND, 5 ); + + + this->SetSizer( bSizer134 ); + this->Layout(); + bSizer134->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SyncConfirmationDlgGenerated::OnClose ) ); + m_buttonStartSync->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SyncConfirmationDlgGenerated::OnStartSync ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SyncConfirmationDlgGenerated::OnCancel ), NULL, this ); } SyncConfirmationDlgGenerated::~SyncConfirmationDlgGenerated() @@ -2519,110 +2519,134 @@ SyncConfirmationDlgGenerated::~SyncConfirmationDlgGenerated() CompareProgressDlgGenerated::CompareProgressDlgGenerated( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) { - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer40; - bSizer40 = new wxBoxSizer( wxHORIZONTAL ); - - m_panelStatistics = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer187; - bSizer187 = new wxBoxSizer( wxVERTICAL ); - - - bSizer187->Add( 0, 5, 0, 0, 5 ); - - wxFlexGridSizer* fgSizer7; - fgSizer7 = new wxFlexGridSizer( 0, 2, 5, 5 ); - fgSizer7->SetFlexibleDirection( wxHORIZONTAL ); - fgSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticTextItemsFoundLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Items found:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextItemsFoundLabel->Wrap( -1 ); - fgSizer7->Add( m_staticTextItemsFoundLabel, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextItemsFound = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextItemsFound->Wrap( -1 ); - m_staticTextItemsFound->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer7->Add( m_staticTextItemsFound, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextItemsRemainingLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Items remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextItemsRemainingLabel->Wrap( -1 ); - fgSizer7->Add( m_staticTextItemsRemainingLabel, 0, wxALIGN_BOTTOM, 5 ); - - bSizerItemsRemaining = new wxBoxSizer( wxHORIZONTAL ); - - m_staticTextItemsRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextItemsRemaining->Wrap( -1 ); - m_staticTextItemsRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerItemsRemaining->Add( m_staticTextItemsRemaining, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextDataRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDataRemaining->Wrap( -1 ); - bSizerItemsRemaining->Add( m_staticTextDataRemaining, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); - - - fgSizer7->Add( bSizerItemsRemaining, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextTimeRemainingLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Time remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTimeRemainingLabel->Wrap( -1 ); - fgSizer7->Add( m_staticTextTimeRemainingLabel, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextTimeRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTimeRemaining->Wrap( -1 ); - m_staticTextTimeRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer7->Add( m_staticTextTimeRemaining, 0, wxALIGN_BOTTOM, 5 ); - - wxStaticText* m_staticText37; - m_staticText37 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Time elapsed:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText37->Wrap( -1 ); - fgSizer7->Add( m_staticText37, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextTimeElapsed = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTimeElapsed->Wrap( -1 ); - m_staticTextTimeElapsed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - fgSizer7->Add( m_staticTextTimeElapsed, 0, wxALIGN_BOTTOM, 5 ); - - - bSizer187->Add( fgSizer7, 0, wxRIGHT|wxLEFT, 5 ); - - - bSizer187->Add( 0, 5, 0, 0, 5 ); - - - m_panelStatistics->SetSizer( bSizer187 ); - m_panelStatistics->Layout(); - bSizer187->Fit( m_panelStatistics ); - bSizer40->Add( m_panelStatistics, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - wxBoxSizer* bSizer181; - bSizer181 = new wxBoxSizer( wxVERTICAL ); - - m_staticTextStatus = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatus->Wrap( -1 ); - bSizer181->Add( m_staticTextStatus, 0, 0, 5 ); - - m_gauge2 = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,14 ), wxGA_HORIZONTAL|wxGA_SMOOTH ); - bSizer181->Add( m_gauge2, 0, wxEXPAND|wxTOP, 5 ); - - m_staticTextSpeed = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextSpeed->Wrap( -1 ); - m_staticTextSpeed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer181->Add( m_staticTextSpeed, 0, wxTOP, 5 ); - - - bSizer40->Add( bSizer181, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - - this->SetSizer( bSizer40 ); - this->Layout(); - bSizer40->Fit( this ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer40; + bSizer40 = new wxBoxSizer( wxHORIZONTAL ); + + m_panelStatistics = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelStatistics->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer187; + bSizer187 = new wxBoxSizer( wxVERTICAL ); + + + bSizer187->Add( 0, 5, 0, 0, 5 ); + + wxFlexGridSizer* fgSizer7; + fgSizer7 = new wxFlexGridSizer( 0, 2, 5, 5 ); + fgSizer7->SetFlexibleDirection( wxHORIZONTAL ); + fgSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextItemsFoundLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Items found:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextItemsFoundLabel->Wrap( -1 ); + fgSizer7->Add( m_staticTextItemsFoundLabel, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextItemsFound = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextItemsFound->Wrap( -1 ); + m_staticTextItemsFound->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer7->Add( m_staticTextItemsFound, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextItemsRemainingLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Items remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextItemsRemainingLabel->Wrap( -1 ); + fgSizer7->Add( m_staticTextItemsRemainingLabel, 0, wxALIGN_BOTTOM, 5 ); + + bSizerItemsRemaining = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextItemsRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextItemsRemaining->Wrap( -1 ); + m_staticTextItemsRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerItemsRemaining->Add( m_staticTextItemsRemaining, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextBytesRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextBytesRemaining->Wrap( -1 ); + bSizerItemsRemaining->Add( m_staticTextBytesRemaining, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); + + + fgSizer7->Add( bSizerItemsRemaining, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextTimeRemainingLabel = new wxStaticText( m_panelStatistics, wxID_ANY, _("Time remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTimeRemainingLabel->Wrap( -1 ); + fgSizer7->Add( m_staticTextTimeRemainingLabel, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextTimeRemaining = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTimeRemaining->Wrap( -1 ); + m_staticTextTimeRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer7->Add( m_staticTextTimeRemaining, 0, wxALIGN_BOTTOM, 5 ); + + wxStaticText* m_staticText37; + m_staticText37 = new wxStaticText( m_panelStatistics, wxID_ANY, _("Time elapsed:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText37->Wrap( -1 ); + fgSizer7->Add( m_staticText37, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextTimeElapsed = new wxStaticText( m_panelStatistics, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTimeElapsed->Wrap( -1 ); + m_staticTextTimeElapsed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + fgSizer7->Add( m_staticTextTimeElapsed, 0, wxALIGN_BOTTOM, 5 ); + + + bSizer187->Add( fgSizer7, 0, wxRIGHT|wxLEFT, 5 ); + + + bSizer187->Add( 0, 5, 0, 0, 5 ); + + + m_panelStatistics->SetSizer( bSizer187 ); + m_panelStatistics->Layout(); + bSizer187->Fit( m_panelStatistics ); + bSizer40->Add( m_panelStatistics, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxVERTICAL ); + + m_staticTextStatus = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatus->Wrap( -1 ); + bSizer181->Add( m_staticTextStatus, 0, 0, 5 ); + + wxBoxSizer* bSizer199; + bSizer199 = new wxBoxSizer( wxHORIZONTAL ); + + m_panelProgressLabel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelProgressLabel->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer201; + bSizer201 = new wxBoxSizer( wxVERTICAL ); + + wxStaticText* m_staticText99; + m_staticText99 = new wxStaticText( m_panelProgressLabel, wxID_ANY, _("Bytes:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText99->Wrap( -1 ); + bSizer201->Add( m_staticText99, 0, wxALL, 5 ); + + wxStaticText* m_staticText100; + m_staticText100 = new wxStaticText( m_panelProgressLabel, wxID_ANY, _("Items:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText100->Wrap( -1 ); + bSizer201->Add( m_staticText100, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + m_panelProgressLabel->SetSizer( bSizer201 ); + m_panelProgressLabel->Layout(); + bSizer201->Fit( m_panelProgressLabel ); + bSizer199->Add( m_panelProgressLabel, 0, 0, 5 ); + + m_panelGraphProgress = new zen::Graph2D( this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_panelGraphProgress->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + bSizer199->Add( m_panelGraphProgress, 1, wxEXPAND, 5 ); + + + bSizer181->Add( bSizer199, 1, wxEXPAND|wxTOP, 5 ); + + + bSizer40->Add( bSizer181, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + this->SetSizer( bSizer40 ); + this->Layout(); + bSizer40->Fit( this ); } CompareProgressDlgGenerated::~CompareProgressDlgGenerated() @@ -2631,320 +2655,320 @@ CompareProgressDlgGenerated::~CompareProgressDlgGenerated() SyncProgressPanelGenerated::SyncProgressPanelGenerated( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) { - bSizerRoot = new wxBoxSizer( wxVERTICAL ); - - bSizer42 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer42->Add( 32, 0, 0, 0, 5 ); - - - bSizer42->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bitmapStatus = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), 0 ); - bSizer42->Add( m_bitmapStatus, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); - - m_staticTextPhase = new wxStaticText( this, wxID_ANY, _("Synchronizing..."), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextPhase->Wrap( -1 ); - m_staticTextPhase->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer42->Add( m_staticTextPhase, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); - - m_animCtrlSyncing = new wxAnimationCtrl( this, wxID_ANY, wxNullAnimation, wxDefaultPosition, wxSize( 32,32 ), wxAC_DEFAULT_STYLE ); - bSizer42->Add( m_animCtrlSyncing, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); - - - bSizer42->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bpButtonMinimizeToTray = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), wxBU_AUTODRAW ); - m_bpButtonMinimizeToTray->SetToolTip( _("Minimize to notification area") ); - - bSizer42->Add( m_bpButtonMinimizeToTray, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerRoot->Add( bSizer42, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - bSizerStatusText = new wxBoxSizer( wxVERTICAL ); - - m_staticTextStatus = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStatus->Wrap( -1 ); - bSizerStatusText->Add( m_staticTextStatus, 0, wxEXPAND|wxLEFT, 10 ); - - - bSizerStatusText->Add( 0, 5, 0, 0, 5 ); - - - bSizerRoot->Add( bSizerStatusText, 0, wxEXPAND, 5 ); - - wxStaticLine* m_staticlineHeader; - m_staticlineHeader = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizerRoot->Add( m_staticlineHeader, 0, wxEXPAND, 5 ); - - m_panelProgress = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelProgress->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer173; - bSizer173 = new wxBoxSizer( wxVERTICAL ); - - bSizer171 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer171->Add( 10, 0, 0, 0, 5 ); - - wxBoxSizer* bSizer164; - bSizer164 = new wxBoxSizer( wxVERTICAL ); - - m_panelItemsProcessed = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelItemsProcessed->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer165; - bSizer165 = new wxBoxSizer( wxVERTICAL ); - - - bSizer165->Add( 0, 5, 0, 0, 5 ); - - wxStaticText* m_staticText96; - m_staticText96 = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("Items processed:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText96->Wrap( -1 ); - bSizer165->Add( m_staticText96, 0, wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer169; - bSizer169 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticTextProcessedObj = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_staticTextProcessedObj->Wrap( -1 ); - m_staticTextProcessedObj->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer169->Add( m_staticTextProcessedObj, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextDataProcessed = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDataProcessed->Wrap( -1 ); - bSizer169->Add( m_staticTextDataProcessed, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); - - - bSizer165->Add( bSizer169, 0, wxRIGHT|wxLEFT, 5 ); - - - bSizer165->Add( 0, 5, 0, 0, 5 ); - - - m_panelItemsProcessed->SetSizer( bSizer165 ); - m_panelItemsProcessed->Layout(); - bSizer165->Fit( m_panelItemsProcessed ); - bSizer164->Add( m_panelItemsProcessed, 0, wxEXPAND|wxTOP, 7 ); - - m_panelItemsRemaining = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelItemsRemaining->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer166; - bSizer166 = new wxBoxSizer( wxVERTICAL ); - - - bSizer166->Add( 0, 5, 0, 0, 5 ); - - wxStaticText* m_staticText97; - m_staticText97 = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("Items remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText97->Wrap( -1 ); - bSizer166->Add( m_staticText97, 0, wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer170; - bSizer170 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticTextRemainingObj = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_staticTextRemainingObj->Wrap( -1 ); - m_staticTextRemainingObj->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer170->Add( m_staticTextRemainingObj, 0, wxALIGN_BOTTOM, 5 ); - - m_staticTextDataRemaining = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDataRemaining->Wrap( -1 ); - bSizer170->Add( m_staticTextDataRemaining, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); - - - bSizer166->Add( bSizer170, 0, wxRIGHT|wxLEFT, 5 ); - - - bSizer166->Add( 0, 5, 0, 0, 5 ); - - - m_panelItemsRemaining->SetSizer( bSizer166 ); - m_panelItemsRemaining->Layout(); - bSizer166->Fit( m_panelItemsRemaining ); - bSizer164->Add( m_panelItemsRemaining, 0, wxTOP|wxEXPAND, 7 ); - - m_panelTimeRemaining = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelTimeRemaining->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer167; - bSizer167 = new wxBoxSizer( wxVERTICAL ); - - - bSizer167->Add( 0, 5, 0, 0, 5 ); - - wxStaticText* m_staticText98; - m_staticText98 = new wxStaticText( m_panelTimeRemaining, wxID_ANY, _("Time remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText98->Wrap( -1 ); - bSizer167->Add( m_staticText98, 0, wxRIGHT|wxLEFT, 5 ); - - m_staticTextRemTime = new wxStaticText( m_panelTimeRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextRemTime->Wrap( -1 ); - m_staticTextRemTime->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer167->Add( m_staticTextRemTime, 0, wxRIGHT|wxLEFT, 5 ); - - - bSizer167->Add( 0, 5, 0, 0, 5 ); - - - m_panelTimeRemaining->SetSizer( bSizer167 ); - m_panelTimeRemaining->Layout(); - bSizer167->Fit( m_panelTimeRemaining ); - bSizer164->Add( m_panelTimeRemaining, 0, wxTOP|wxEXPAND, 7 ); - - wxPanel* m_panelTimeElapsed; - m_panelTimeElapsed = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panelTimeElapsed->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer168; - bSizer168 = new wxBoxSizer( wxVERTICAL ); - - - bSizer168->Add( 0, 5, 0, 0, 5 ); - - wxStaticText* m_staticText961; - m_staticText961 = new wxStaticText( m_panelTimeElapsed, wxID_ANY, _("Time elapsed:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText961->Wrap( -1 ); - bSizer168->Add( m_staticText961, 0, wxRIGHT|wxLEFT, 5 ); - - m_staticTextTimeElapsed = new wxStaticText( m_panelTimeElapsed, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTimeElapsed->Wrap( -1 ); - m_staticTextTimeElapsed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer168->Add( m_staticTextTimeElapsed, 0, wxRIGHT|wxLEFT, 5 ); - - - bSizer168->Add( 0, 5, 0, 0, 5 ); - - - m_panelTimeElapsed->SetSizer( bSizer168 ); - m_panelTimeElapsed->Layout(); - bSizer168->Fit( m_panelTimeElapsed ); - bSizer164->Add( m_panelTimeElapsed, 0, wxTOP|wxEXPAND, 7 ); - - - bSizer171->Add( bSizer164, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer171->Add( 10, 0, 0, 0, 5 ); - - wxBoxSizer* bSizer161; - bSizer161 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer175; - bSizer175 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapGraphKeyBytes = new wxStaticBitmap( m_panelProgress, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer175->Add( m_bitmapGraphKeyBytes, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); - - wxStaticText* m_staticText99; - m_staticText99 = new wxStaticText( m_panelProgress, wxID_ANY, _("Bytes copied:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText99->Wrap( -1 ); - bSizer175->Add( m_staticText99, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer161->Add( bSizer175, 0, 0, 5 ); - - m_panelGraphBytes = new zen::Graph2D( m_panelProgress, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_panelGraphBytes->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - bSizer161->Add( m_panelGraphBytes, 1, wxEXPAND, 15 ); - - wxBoxSizer* bSizer174; - bSizer174 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapGraphKeyItems = new wxStaticBitmap( m_panelProgress, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer174->Add( m_bitmapGraphKeyItems, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); - - wxStaticText* m_staticText100; - m_staticText100 = new wxStaticText( m_panelProgress, wxID_ANY, _("Items processed:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText100->Wrap( -1 ); - bSizer174->Add( m_staticText100, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer161->Add( bSizer174, 0, 0, 5 ); - - m_panelGraphItems = new zen::Graph2D( m_panelProgress, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_panelGraphItems->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - bSizer161->Add( m_panelGraphItems, 1, wxEXPAND, 15 ); - - - bSizer161->Add( 450, 0, 0, 0, 5 ); - - - bSizer171->Add( bSizer161, 1, wxEXPAND, 5 ); - - - bSizer171->Add( 0, 310, 0, 0, 5 ); - - - bSizer173->Add( bSizer171, 1, wxEXPAND, 5 ); - - - m_panelProgress->SetSizer( bSizer173 ); - m_panelProgress->Layout(); - bSizer173->Fit( m_panelProgress ); - bSizerRoot->Add( m_panelProgress, 1, wxEXPAND, 5 ); - - m_notebookResult = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_FIXEDWIDTH ); - - bSizerRoot->Add( m_notebookResult, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_staticlineFooter = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizerRoot->Add( m_staticlineFooter, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer160; - bSizer160 = new wxBoxSizer( wxHORIZONTAL ); - - bSizerOnCompletion = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText87 = new wxStaticText( this, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText87->Wrap( -1 ); - bSizerOnCompletion->Add( m_staticText87, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_comboBoxOnCompletion = new OnCompletionBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizerOnCompletion->Add( m_comboBoxOnCompletion, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer160->Add( bSizerOnCompletion, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer160->Add( 0, 0, 0, 0, 5 ); - - - bSizerStdButtons->Add( bSizer160, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); - - m_buttonClose = new wxButton( this, wxID_OK, _("Close"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonClose->SetDefault(); - m_buttonClose->Enable( false ); - - bSizerStdButtons->Add( m_buttonClose, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonPause = new wxButton( this, wxID_ANY, _("&Pause"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonPause, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - m_buttonStop = new wxButton( this, wxID_CANCEL, _("Stop"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonStop, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizerRoot->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); - - - this->SetSizer( bSizerRoot ); - this->Layout(); - bSizerRoot->Fit( this ); + bSizerRoot = new wxBoxSizer( wxVERTICAL ); + + bSizer42 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer42->Add( 32, 0, 0, 0, 5 ); + + + bSizer42->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bitmapStatus = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), 0 ); + bSizer42->Add( m_bitmapStatus, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); + + m_staticTextPhase = new wxStaticText( this, wxID_ANY, _("Synchronizing..."), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextPhase->Wrap( -1 ); + m_staticTextPhase->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer42->Add( m_staticTextPhase, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); + + m_animCtrlSyncing = new wxAnimationCtrl( this, wxID_ANY, wxNullAnimation, wxDefaultPosition, wxSize( 32,32 ), wxAC_DEFAULT_STYLE ); + bSizer42->Add( m_animCtrlSyncing, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 ); + + + bSizer42->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bpButtonMinimizeToTray = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 32,32 ), wxBU_AUTODRAW ); + m_bpButtonMinimizeToTray->SetToolTip( _("Minimize to notification area") ); + + bSizer42->Add( m_bpButtonMinimizeToTray, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerRoot->Add( bSizer42, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + bSizerStatusText = new wxBoxSizer( wxVERTICAL ); + + m_staticTextStatus = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStatus->Wrap( -1 ); + bSizerStatusText->Add( m_staticTextStatus, 0, wxEXPAND|wxLEFT, 10 ); + + + bSizerStatusText->Add( 0, 5, 0, 0, 5 ); + + + bSizerRoot->Add( bSizerStatusText, 0, wxEXPAND, 5 ); + + wxStaticLine* m_staticlineHeader; + m_staticlineHeader = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizerRoot->Add( m_staticlineHeader, 0, wxEXPAND, 5 ); + + m_panelProgress = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelProgress->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer173; + bSizer173 = new wxBoxSizer( wxVERTICAL ); + + bSizer171 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer171->Add( 10, 0, 0, 0, 5 ); + + wxBoxSizer* bSizer164; + bSizer164 = new wxBoxSizer( wxVERTICAL ); + + m_panelItemsProcessed = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelItemsProcessed->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer165; + bSizer165 = new wxBoxSizer( wxVERTICAL ); + + + bSizer165->Add( 0, 5, 0, 0, 5 ); + + wxStaticText* m_staticText96; + m_staticText96 = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("Items processed:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText96->Wrap( -1 ); + bSizer165->Add( m_staticText96, 0, wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizer169; + bSizer169 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextItemsProcessed = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticTextItemsProcessed->Wrap( -1 ); + m_staticTextItemsProcessed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer169->Add( m_staticTextItemsProcessed, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextBytesProcessed = new wxStaticText( m_panelItemsProcessed, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextBytesProcessed->Wrap( -1 ); + bSizer169->Add( m_staticTextBytesProcessed, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); + + + bSizer165->Add( bSizer169, 0, wxRIGHT|wxLEFT, 5 ); + + + bSizer165->Add( 0, 5, 0, 0, 5 ); + + + m_panelItemsProcessed->SetSizer( bSizer165 ); + m_panelItemsProcessed->Layout(); + bSizer165->Fit( m_panelItemsProcessed ); + bSizer164->Add( m_panelItemsProcessed, 0, wxEXPAND|wxTOP, 7 ); + + m_panelItemsRemaining = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelItemsRemaining->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer166; + bSizer166 = new wxBoxSizer( wxVERTICAL ); + + + bSizer166->Add( 0, 5, 0, 0, 5 ); + + wxStaticText* m_staticText97; + m_staticText97 = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("Items remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText97->Wrap( -1 ); + bSizer166->Add( m_staticText97, 0, wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizer170; + bSizer170 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextItemsRemaining = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticTextItemsRemaining->Wrap( -1 ); + m_staticTextItemsRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer170->Add( m_staticTextItemsRemaining, 0, wxALIGN_BOTTOM, 5 ); + + m_staticTextBytesRemaining = new wxStaticText( m_panelItemsRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextBytesRemaining->Wrap( -1 ); + bSizer170->Add( m_staticTextBytesRemaining, 0, wxLEFT|wxALIGN_BOTTOM, 5 ); + + + bSizer166->Add( bSizer170, 0, wxRIGHT|wxLEFT, 5 ); + + + bSizer166->Add( 0, 5, 0, 0, 5 ); + + + m_panelItemsRemaining->SetSizer( bSizer166 ); + m_panelItemsRemaining->Layout(); + bSizer166->Fit( m_panelItemsRemaining ); + bSizer164->Add( m_panelItemsRemaining, 0, wxTOP|wxEXPAND, 7 ); + + m_panelTimeRemaining = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelTimeRemaining->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer167; + bSizer167 = new wxBoxSizer( wxVERTICAL ); + + + bSizer167->Add( 0, 5, 0, 0, 5 ); + + wxStaticText* m_staticText98; + m_staticText98 = new wxStaticText( m_panelTimeRemaining, wxID_ANY, _("Time remaining:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText98->Wrap( -1 ); + bSizer167->Add( m_staticText98, 0, wxRIGHT|wxLEFT, 5 ); + + m_staticTextTimeRemaining = new wxStaticText( m_panelTimeRemaining, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTimeRemaining->Wrap( -1 ); + m_staticTextTimeRemaining->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer167->Add( m_staticTextTimeRemaining, 0, wxRIGHT|wxLEFT, 5 ); + + + bSizer167->Add( 0, 5, 0, 0, 5 ); + + + m_panelTimeRemaining->SetSizer( bSizer167 ); + m_panelTimeRemaining->Layout(); + bSizer167->Fit( m_panelTimeRemaining ); + bSizer164->Add( m_panelTimeRemaining, 0, wxTOP|wxEXPAND, 7 ); + + wxPanel* m_panelTimeElapsed; + m_panelTimeElapsed = new wxPanel( m_panelProgress, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelTimeElapsed->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer168; + bSizer168 = new wxBoxSizer( wxVERTICAL ); + + + bSizer168->Add( 0, 5, 0, 0, 5 ); + + wxStaticText* m_staticText961; + m_staticText961 = new wxStaticText( m_panelTimeElapsed, wxID_ANY, _("Time elapsed:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText961->Wrap( -1 ); + bSizer168->Add( m_staticText961, 0, wxRIGHT|wxLEFT, 5 ); + + m_staticTextTimeElapsed = new wxStaticText( m_panelTimeElapsed, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTimeElapsed->Wrap( -1 ); + m_staticTextTimeElapsed->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer168->Add( m_staticTextTimeElapsed, 0, wxRIGHT|wxLEFT, 5 ); + + + bSizer168->Add( 0, 5, 0, 0, 5 ); + + + m_panelTimeElapsed->SetSizer( bSizer168 ); + m_panelTimeElapsed->Layout(); + bSizer168->Fit( m_panelTimeElapsed ); + bSizer164->Add( m_panelTimeElapsed, 0, wxTOP|wxEXPAND, 7 ); + + + bSizer171->Add( bSizer164, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer171->Add( 10, 0, 0, 0, 5 ); + + wxBoxSizer* bSizer161; + bSizer161 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer175; + bSizer175 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapGraphKeyBytes = new wxStaticBitmap( m_panelProgress, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer175->Add( m_bitmapGraphKeyBytes, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); + + wxStaticText* m_staticText99; + m_staticText99 = new wxStaticText( m_panelProgress, wxID_ANY, _("Bytes copied:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText99->Wrap( -1 ); + bSizer175->Add( m_staticText99, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer161->Add( bSizer175, 0, 0, 5 ); + + m_panelGraphBytes = new zen::Graph2D( m_panelProgress, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_panelGraphBytes->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + bSizer161->Add( m_panelGraphBytes, 1, wxEXPAND, 15 ); + + wxBoxSizer* bSizer174; + bSizer174 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapGraphKeyItems = new wxStaticBitmap( m_panelProgress, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer174->Add( m_bitmapGraphKeyItems, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); + + wxStaticText* m_staticText100; + m_staticText100 = new wxStaticText( m_panelProgress, wxID_ANY, _("Items processed:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText100->Wrap( -1 ); + bSizer174->Add( m_staticText100, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer161->Add( bSizer174, 0, 0, 5 ); + + m_panelGraphItems = new zen::Graph2D( m_panelProgress, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_panelGraphItems->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + bSizer161->Add( m_panelGraphItems, 1, wxEXPAND, 15 ); + + + bSizer161->Add( 450, 0, 0, 0, 5 ); + + + bSizer171->Add( bSizer161, 1, wxEXPAND, 5 ); + + + bSizer171->Add( 0, 310, 0, 0, 5 ); + + + bSizer173->Add( bSizer171, 1, wxEXPAND, 5 ); + + + m_panelProgress->SetSizer( bSizer173 ); + m_panelProgress->Layout(); + bSizer173->Fit( m_panelProgress ); + bSizerRoot->Add( m_panelProgress, 1, wxEXPAND, 5 ); + + m_notebookResult = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_FIXEDWIDTH ); + + bSizerRoot->Add( m_notebookResult, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_staticlineFooter = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizerRoot->Add( m_staticlineFooter, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer160; + bSizer160 = new wxBoxSizer( wxHORIZONTAL ); + + bSizerOnCompletion = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText87 = new wxStaticText( this, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText87->Wrap( -1 ); + bSizerOnCompletion->Add( m_staticText87, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_comboBoxOnCompletion = new OnCompletionBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizerOnCompletion->Add( m_comboBoxOnCompletion, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer160->Add( bSizerOnCompletion, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer160->Add( 0, 0, 0, 0, 5 ); + + + bSizerStdButtons->Add( bSizer160, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + m_buttonClose = new wxButton( this, wxID_OK, _("Close"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonClose->SetDefault(); + m_buttonClose->Enable( false ); + + bSizerStdButtons->Add( m_buttonClose, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonPause = new wxButton( this, wxID_ANY, _("&Pause"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonPause, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_buttonStop = new wxButton( this, wxID_CANCEL, _("Stop"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonStop, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizerRoot->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizerRoot ); + this->Layout(); + bSizerRoot->Fit( this ); } SyncProgressPanelGenerated::~SyncProgressPanelGenerated() @@ -2953,48 +2977,48 @@ SyncProgressPanelGenerated::~SyncProgressPanelGenerated() LogPanelGenerated::LogPanelGenerated( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) { - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer179; - bSizer179 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer153; - bSizer153 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer154; - bSizer154 = new wxBoxSizer( wxVERTICAL ); - - m_bpButtonErrors = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); - bSizer154->Add( m_bpButtonErrors, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonWarnings = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); - bSizer154->Add( m_bpButtonWarnings, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_bpButtonInfo = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); - bSizer154->Add( m_bpButtonInfo, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer153->Add( bSizer154, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - m_staticline13 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer153->Add( m_staticline13, 0, wxEXPAND, 5 ); - - m_gridMessages = new zen::Grid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); - m_gridMessages->SetScrollRate( 5, 5 ); - bSizer153->Add( m_gridMessages, 1, wxEXPAND, 5 ); - - - bSizer179->Add( bSizer153, 1, wxEXPAND, 5 ); - - - this->SetSizer( bSizer179 ); - this->Layout(); - bSizer179->Fit( this ); - - // Connect Events - m_bpButtonErrors->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnErrors ), NULL, this ); - m_bpButtonWarnings->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnWarnings ), NULL, this ); - m_bpButtonInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnInfo ), NULL, this ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer179; + bSizer179 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer153; + bSizer153 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer154; + bSizer154 = new wxBoxSizer( wxVERTICAL ); + + m_bpButtonErrors = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); + bSizer154->Add( m_bpButtonErrors, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonWarnings = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); + bSizer154->Add( m_bpButtonWarnings, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_bpButtonInfo = new ToggleButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 49,49 ), wxBU_AUTODRAW ); + bSizer154->Add( m_bpButtonInfo, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer153->Add( bSizer154, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + m_staticline13 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer153->Add( m_staticline13, 0, wxEXPAND, 5 ); + + m_gridMessages = new zen::Grid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_gridMessages->SetScrollRate( 5, 5 ); + bSizer153->Add( m_gridMessages, 1, wxEXPAND, 5 ); + + + bSizer179->Add( bSizer153, 1, wxEXPAND, 5 ); + + + this->SetSizer( bSizer179 ); + this->Layout(); + bSizer179->Fit( this ); + + // Connect Events + m_bpButtonErrors->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnErrors ), NULL, this ); + m_bpButtonWarnings->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnWarnings ), NULL, this ); + m_bpButtonInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( LogPanelGenerated::OnInfo ), NULL, this ); } LogPanelGenerated::~LogPanelGenerated() @@ -3003,175 +3027,175 @@ LogPanelGenerated::~LogPanelGenerated() BatchDlgGenerated::BatchDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer54; - bSizer54 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapBatchJob = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizer72->Add( m_bitmapBatchJob, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextDescr = new wxStaticText( this, wxID_ANY, _("Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDescr->Wrap( 520 ); - bSizer72->Add( m_staticTextDescr, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer54->Add( bSizer72, 0, 0, 5 ); - - m_staticline18 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer54->Add( m_staticline18, 0, wxEXPAND, 5 ); - - m_panel35 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel35->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer172; - bSizer172 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer180; - bSizer180 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText82 = new wxStaticText( m_panel35, wxID_ANY, _("Handle errors:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText82->Wrap( -1 ); - bSizer180->Add( m_staticText82, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); - - wxBoxSizer* bSizer169; - bSizer169 = new wxBoxSizer( wxVERTICAL ); - - m_radioBtnPopupOnErrors = new wxRadioButton( m_panel35, wxID_ANY, _("&Pop-up"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnPopupOnErrors->SetValue( true ); - m_radioBtnPopupOnErrors->SetToolTip( _("Show pop-up on errors or warnings") ); - - bSizer169->Add( m_radioBtnPopupOnErrors, 0, wxEXPAND|wxALL, 5 ); - - m_radioBtnIgnoreErrors = new wxRadioButton( m_panel35, wxID_ANY, _("&Ignore"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnIgnoreErrors->SetToolTip( _("Hide all error and warning messages") ); - - bSizer169->Add( m_radioBtnIgnoreErrors, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_radioBtnStopOnError = new wxRadioButton( m_panel35, wxID_ANY, _("&Stop"), wxDefaultPosition, wxDefaultSize, 0 ); - m_radioBtnStopOnError->SetToolTip( _("Stop synchronization at first error") ); - - bSizer169->Add( m_radioBtnStopOnError, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer180->Add( bSizer169, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticline26 = new wxStaticLine( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer180->Add( m_staticline26, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer170; - bSizer170 = new wxBoxSizer( wxVERTICAL ); - - m_staticText81 = new wxStaticText( m_panel35, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText81->Wrap( -1 ); - bSizer170->Add( m_staticText81, 0, wxALL, 5 ); - - m_comboBoxOnCompletion = new OnCompletionBox( m_panel35, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer170->Add( m_comboBoxOnCompletion, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_checkBoxRunMinimized = new wxCheckBox( m_panel35, wxID_ANY, _("Run minimized"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer170->Add( m_checkBoxRunMinimized, 0, wxEXPAND|wxALL, 5 ); - - - bSizer180->Add( bSizer170, 1, wxALL, 5 ); - - - bSizer172->Add( bSizer180, 0, wxEXPAND, 5 ); - - m_staticline25 = new wxStaticLine( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer172->Add( m_staticline25, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer191; - bSizer191 = new wxBoxSizer( wxVERTICAL ); - - m_checkBoxGenerateLogfile = new wxCheckBox( m_panel35, wxID_ANY, _("Save log:"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer191->Add( m_checkBoxGenerateLogfile, 0, wxEXPAND|wxALL, 5 ); - - m_panelLogfile = new wxPanel( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelLogfile->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer1721; - bSizer1721 = new wxBoxSizer( wxHORIZONTAL ); - - m_logFolderPath = new FolderHistoryBox( m_panelLogfile, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer1721->Add( m_logFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectLogFolder = new wxButton( m_panelLogfile, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectLogFolder->SetToolTip( _("Select a folder") ); - - bSizer1721->Add( m_buttonSelectLogFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltLogFolder = new wxBitmapButton( m_panelLogfile, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltLogFolder->SetToolTip( _("Select SFTP folder") ); - - bSizer1721->Add( m_bpButtonSelectAltLogFolder, 0, wxEXPAND, 5 ); - - m_checkBoxLogfilesLimit = new wxCheckBox( m_panelLogfile, wxID_ANY, _("Limit:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxLogfilesLimit->SetToolTip( _("Limit maximum number of log files") ); - - bSizer1721->Add( m_checkBoxLogfilesLimit, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_spinCtrlLogfileLimit = new wxSpinCtrl( m_panelLogfile, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 70,-1 ), wxSP_ARROW_KEYS, 1, 2000000000, 1 ); - m_spinCtrlLogfileLimit->SetToolTip( _("Limit maximum number of log files") ); - - bSizer1721->Add( m_spinCtrlLogfileLimit, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - m_panelLogfile->SetSizer( bSizer1721 ); - m_panelLogfile->Layout(); - bSizer1721->Fit( m_panelLogfile ); - bSizer191->Add( m_panelLogfile, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - - bSizer172->Add( bSizer191, 0, wxEXPAND|wxALL, 5 ); - - m_hyperlink17 = new wxHyperlinkCtrl( m_panel35, wxID_ANY, _("How can I schedule a batch job?"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer172->Add( m_hyperlink17, 0, wxALL, 10 ); - - - m_panel35->SetSizer( bSizer172 ); - m_panel35->Layout(); - bSizer172->Fit( m_panel35 ); - bSizer54->Add( m_panel35, 1, wxEXPAND, 5 ); - - m_staticline13 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer54->Add( m_staticline13, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonSaveAs = new wxButton( this, wxID_SAVE, _("Save &as..."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonSaveAs->SetDefault(); - m_buttonSaveAs->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonSaveAs, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer54->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer54 ); - this->Layout(); - bSizer54->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( BatchDlgGenerated::OnClose ) ); - m_radioBtnPopupOnErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorPopup ), NULL, this ); - m_radioBtnIgnoreErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorIgnore ), NULL, this ); - m_radioBtnStopOnError->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorStop ), NULL, this ); - m_checkBoxGenerateLogfile->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnToggleGenerateLogfile ), NULL, this ); - m_checkBoxLogfilesLimit->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnToggleLogfilesLimit ), NULL, this ); - m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( BatchDlgGenerated::OnHelpScheduleBatch ), NULL, this ); - m_buttonSaveAs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnSaveBatchJob ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer54; + bSizer54 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapBatchJob = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizer72->Add( m_bitmapBatchJob, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextDescr = new wxStaticText( this, wxID_ANY, _("Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDescr->Wrap( 520 ); + bSizer72->Add( m_staticTextDescr, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer54->Add( bSizer72, 0, 0, 5 ); + + m_staticline18 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer54->Add( m_staticline18, 0, wxEXPAND, 5 ); + + m_panel35 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel35->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer172; + bSizer172 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer180; + bSizer180 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText82 = new wxStaticText( m_panel35, wxID_ANY, _("Handle errors:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText82->Wrap( -1 ); + bSizer180->Add( m_staticText82, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); + + wxBoxSizer* bSizer169; + bSizer169 = new wxBoxSizer( wxVERTICAL ); + + m_radioBtnPopupOnErrors = new wxRadioButton( m_panel35, wxID_ANY, _("&Pop-up"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnPopupOnErrors->SetValue( true ); + m_radioBtnPopupOnErrors->SetToolTip( _("Show pop-up on errors or warnings") ); + + bSizer169->Add( m_radioBtnPopupOnErrors, 0, wxEXPAND|wxALL, 5 ); + + m_radioBtnIgnoreErrors = new wxRadioButton( m_panel35, wxID_ANY, _("&Ignore"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnIgnoreErrors->SetToolTip( _("Hide all error and warning messages") ); + + bSizer169->Add( m_radioBtnIgnoreErrors, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_radioBtnStopOnError = new wxRadioButton( m_panel35, wxID_ANY, _("&Stop"), wxDefaultPosition, wxDefaultSize, 0 ); + m_radioBtnStopOnError->SetToolTip( _("Stop synchronization at first error") ); + + bSizer169->Add( m_radioBtnStopOnError, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer180->Add( bSizer169, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticline26 = new wxStaticLine( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer180->Add( m_staticline26, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer170; + bSizer170 = new wxBoxSizer( wxVERTICAL ); + + m_staticText81 = new wxStaticText( m_panel35, wxID_ANY, _("On completion:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText81->Wrap( -1 ); + bSizer170->Add( m_staticText81, 0, wxALL, 5 ); + + m_comboBoxOnCompletion = new OnCompletionBox( m_panel35, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer170->Add( m_comboBoxOnCompletion, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_checkBoxRunMinimized = new wxCheckBox( m_panel35, wxID_ANY, _("Run minimized"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer170->Add( m_checkBoxRunMinimized, 0, wxEXPAND|wxALL, 5 ); + + + bSizer180->Add( bSizer170, 1, wxALL, 5 ); + + + bSizer172->Add( bSizer180, 0, wxEXPAND, 5 ); + + m_staticline25 = new wxStaticLine( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer172->Add( m_staticline25, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer191; + bSizer191 = new wxBoxSizer( wxVERTICAL ); + + m_checkBoxGenerateLogfile = new wxCheckBox( m_panel35, wxID_ANY, _("Save log:"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer191->Add( m_checkBoxGenerateLogfile, 0, wxEXPAND|wxALL, 5 ); + + m_panelLogfile = new wxPanel( m_panel35, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelLogfile->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer1721; + bSizer1721 = new wxBoxSizer( wxHORIZONTAL ); + + m_logFolderPath = new FolderHistoryBox( m_panelLogfile, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer1721->Add( m_logFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectLogFolder = new wxButton( m_panelLogfile, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectLogFolder->SetToolTip( _("Select a folder") ); + + bSizer1721->Add( m_buttonSelectLogFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltLogFolder = new wxBitmapButton( m_panelLogfile, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltLogFolder->SetToolTip( _("Select SFTP folder") ); + + bSizer1721->Add( m_bpButtonSelectAltLogFolder, 0, wxEXPAND, 5 ); + + m_checkBoxLogfilesLimit = new wxCheckBox( m_panelLogfile, wxID_ANY, _("Limit:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxLogfilesLimit->SetToolTip( _("Limit maximum number of log files") ); + + bSizer1721->Add( m_checkBoxLogfilesLimit, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_spinCtrlLogfileLimit = new wxSpinCtrl( m_panelLogfile, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 70,-1 ), wxSP_ARROW_KEYS, 1, 2000000000, 1 ); + m_spinCtrlLogfileLimit->SetToolTip( _("Limit maximum number of log files") ); + + bSizer1721->Add( m_spinCtrlLogfileLimit, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + m_panelLogfile->SetSizer( bSizer1721 ); + m_panelLogfile->Layout(); + bSizer1721->Fit( m_panelLogfile ); + bSizer191->Add( m_panelLogfile, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + bSizer172->Add( bSizer191, 0, wxEXPAND|wxALL, 5 ); + + m_hyperlink17 = new wxHyperlinkCtrl( m_panel35, wxID_ANY, _("How can I schedule a batch job?"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer172->Add( m_hyperlink17, 0, wxALL, 10 ); + + + m_panel35->SetSizer( bSizer172 ); + m_panel35->Layout(); + bSizer172->Fit( m_panel35 ); + bSizer54->Add( m_panel35, 1, wxEXPAND, 5 ); + + m_staticline13 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer54->Add( m_staticline13, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonSaveAs = new wxButton( this, wxID_SAVE, _("Save &as..."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonSaveAs->SetDefault(); + m_buttonSaveAs->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonSaveAs, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer54->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer54 ); + this->Layout(); + bSizer54->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( BatchDlgGenerated::OnClose ) ); + m_radioBtnPopupOnErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorPopup ), NULL, this ); + m_radioBtnIgnoreErrors->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorIgnore ), NULL, this ); + m_radioBtnStopOnError->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( BatchDlgGenerated::OnErrorStop ), NULL, this ); + m_checkBoxGenerateLogfile->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnToggleGenerateLogfile ), NULL, this ); + m_checkBoxLogfilesLimit->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnToggleLogfilesLimit ), NULL, this ); + m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( BatchDlgGenerated::OnHelpScheduleBatch ), NULL, this ); + m_buttonSaveAs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnSaveBatchJob ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BatchDlgGenerated::OnCancel ), NULL, this ); } BatchDlgGenerated::~BatchDlgGenerated() @@ -3180,81 +3204,81 @@ BatchDlgGenerated::~BatchDlgGenerated() DeleteDlgGenerated::DeleteDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer24; - bSizer24 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapDeleteType = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer72->Add( m_bitmapDeleteType, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0|wxNO_BORDER ); - m_staticTextHeader->Wrap( -1 ); - bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer24->Add( bSizer72, 0, 0, 5 ); - - m_staticline91 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer24->Add( m_staticline91, 0, wxEXPAND, 5 ); - - m_panel31 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel31->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer185->Add( 60, 0, 0, 0, 5 ); - - m_staticline42 = new wxStaticLine( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer185->Add( m_staticline42, 0, wxEXPAND, 5 ); - - m_textCtrlFileList = new wxTextCtrl( m_panel31, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 500,200 ), wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); - bSizer185->Add( m_textCtrlFileList, 1, wxEXPAND, 5 ); - - - m_panel31->SetSizer( bSizer185 ); - m_panel31->Layout(); - bSizer185->Fit( m_panel31 ); - bSizer24->Add( m_panel31, 1, wxEXPAND, 5 ); - - m_staticline9 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer24->Add( m_staticline9, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxUseRecycler = new wxCheckBox( this, wxID_ANY, _("&Recycle bin"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerStdButtons->Add( m_checkBoxUseRecycler, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonOK = new wxButton( this, wxID_OK, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOK->SetDefault(); - m_buttonOK->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOK, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer24->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); - - - this->SetSizer( bSizer24 ); - this->Layout(); - bSizer24->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DeleteDlgGenerated::OnClose ) ); - m_checkBoxUseRecycler->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnUseRecycler ), NULL, this ); - m_buttonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnOK ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer24; + bSizer24 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapDeleteType = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer72->Add( m_bitmapDeleteType, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0|wxNO_BORDER ); + m_staticTextHeader->Wrap( -1 ); + bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer24->Add( bSizer72, 0, 0, 5 ); + + m_staticline91 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer24->Add( m_staticline91, 0, wxEXPAND, 5 ); + + m_panel31 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel31->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer185->Add( 60, 0, 0, 0, 5 ); + + m_staticline42 = new wxStaticLine( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer185->Add( m_staticline42, 0, wxEXPAND, 5 ); + + m_textCtrlFileList = new wxTextCtrl( m_panel31, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 500,200 ), wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); + bSizer185->Add( m_textCtrlFileList, 1, wxEXPAND, 5 ); + + + m_panel31->SetSizer( bSizer185 ); + m_panel31->Layout(); + bSizer185->Fit( m_panel31 ); + bSizer24->Add( m_panel31, 1, wxEXPAND, 5 ); + + m_staticline9 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer24->Add( m_staticline9, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_checkBoxUseRecycler = new wxCheckBox( this, wxID_ANY, _("&Recycle bin"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerStdButtons->Add( m_checkBoxUseRecycler, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonOK = new wxButton( this, wxID_OK, _("dummy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOK->SetDefault(); + m_buttonOK->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOK, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer24->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizer24 ); + this->Layout(); + bSizer24->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DeleteDlgGenerated::OnClose ) ); + m_checkBoxUseRecycler->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnUseRecycler ), NULL, this ); + m_buttonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnOK ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DeleteDlgGenerated::OnCancel ), NULL, this ); } DeleteDlgGenerated::~DeleteDlgGenerated() @@ -3263,112 +3287,112 @@ DeleteDlgGenerated::~DeleteDlgGenerated() CopyToDlgGenerated::CopyToDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer24; - bSizer24 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapCopyTo = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer72->Add( m_bitmapCopyTo, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0|wxNO_BORDER ); - m_staticTextHeader->Wrap( 460 ); - bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer24->Add( bSizer72, 0, 0, 5 ); - - m_staticline91 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer24->Add( m_staticline91, 0, wxEXPAND, 5 ); - - m_panel31 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel31->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer185->Add( 60, 0, 0, 0, 5 ); - - m_staticline42 = new wxStaticLine( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer185->Add( m_staticline42, 0, wxEXPAND, 5 ); - - m_textCtrlFileList = new wxTextCtrl( m_panel31, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 500,200 ), wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); - bSizer185->Add( m_textCtrlFileList, 1, wxEXPAND, 5 ); - - - m_panel31->SetSizer( bSizer185 ); - m_panel31->Layout(); - bSizer185->Fit( m_panel31 ); - bSizer24->Add( m_panel31, 1, wxEXPAND, 5 ); - - wxBoxSizer* bSizer182; - bSizer182 = new wxBoxSizer( wxHORIZONTAL ); - - m_targetFolderPath = new FolderHistoryBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - bSizer182->Add( m_targetFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonSelectTargetFolder = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonSelectTargetFolder->SetToolTip( _("Select a folder") ); - - bSizer182->Add( m_buttonSelectTargetFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_bpButtonSelectAltTargetFolder = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); - m_bpButtonSelectAltTargetFolder->SetToolTip( _("Select SFTP folder") ); - - bSizer182->Add( m_bpButtonSelectAltTargetFolder, 0, wxEXPAND, 5 ); - - - bSizer24->Add( bSizer182, 0, wxEXPAND|wxALL, 5 ); - - m_staticline9 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer24->Add( m_staticline9, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer189; - bSizer189 = new wxBoxSizer( wxVERTICAL ); - - m_checkBoxKeepRelPath = new wxCheckBox( this, wxID_ANY, _("&Keep relative paths"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxKeepRelPath->SetValue(true); - bSizer189->Add( m_checkBoxKeepRelPath, 0, wxALL|wxEXPAND, 5 ); - - m_checkBoxOverwriteIfExists = new wxCheckBox( this, wxID_ANY, _("&Overwrite existing files"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxOverwriteIfExists->SetValue(true); - bSizer189->Add( m_checkBoxOverwriteIfExists, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - - bSizerStdButtons->Add( bSizer189, 1, wxALIGN_CENTER_VERTICAL, 5 ); - - m_buttonOK = new wxButton( this, wxID_OK, _("Copy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOK->SetDefault(); - m_buttonOK->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOK, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer24->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); - - - this->SetSizer( bSizer24 ); - this->Layout(); - bSizer24->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( CopyToDlgGenerated::OnClose ) ); - m_checkBoxKeepRelPath->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnUseRecycler ), NULL, this ); - m_checkBoxOverwriteIfExists->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnUseRecycler ), NULL, this ); - m_buttonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnOK ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer24; + bSizer24 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapCopyTo = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer72->Add( m_bitmapCopyTo, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticTextHeader = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0|wxNO_BORDER ); + m_staticTextHeader->Wrap( 460 ); + bSizer72->Add( m_staticTextHeader, 0, wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer24->Add( bSizer72, 0, 0, 5 ); + + m_staticline91 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer24->Add( m_staticline91, 0, wxEXPAND, 5 ); + + m_panel31 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel31->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer185->Add( 60, 0, 0, 0, 5 ); + + m_staticline42 = new wxStaticLine( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer185->Add( m_staticline42, 0, wxEXPAND, 5 ); + + m_textCtrlFileList = new wxTextCtrl( m_panel31, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 500,200 ), wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY|wxNO_BORDER ); + bSizer185->Add( m_textCtrlFileList, 1, wxEXPAND, 5 ); + + + m_panel31->SetSizer( bSizer185 ); + m_panel31->Layout(); + bSizer185->Fit( m_panel31 ); + bSizer24->Add( m_panel31, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxHORIZONTAL ); + + m_targetFolderPath = new FolderHistoryBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer182->Add( m_targetFolderPath, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonSelectTargetFolder = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonSelectTargetFolder->SetToolTip( _("Select a folder") ); + + bSizer182->Add( m_buttonSelectTargetFolder, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_bpButtonSelectAltTargetFolder = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 26,-1 ), wxBU_AUTODRAW ); + m_bpButtonSelectAltTargetFolder->SetToolTip( _("Select SFTP folder") ); + + bSizer182->Add( m_bpButtonSelectAltTargetFolder, 0, wxEXPAND, 5 ); + + + bSizer24->Add( bSizer182, 0, wxEXPAND|wxALL, 5 ); + + m_staticline9 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer24->Add( m_staticline9, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer189; + bSizer189 = new wxBoxSizer( wxVERTICAL ); + + m_checkBoxKeepRelPath = new wxCheckBox( this, wxID_ANY, _("&Keep relative paths"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxKeepRelPath->SetValue(true); + bSizer189->Add( m_checkBoxKeepRelPath, 0, wxALL|wxEXPAND, 5 ); + + m_checkBoxOverwriteIfExists = new wxCheckBox( this, wxID_ANY, _("&Overwrite existing files"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxOverwriteIfExists->SetValue(true); + bSizer189->Add( m_checkBoxOverwriteIfExists, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + + bSizerStdButtons->Add( bSizer189, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + m_buttonOK = new wxButton( this, wxID_OK, _("Copy"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOK->SetDefault(); + m_buttonOK->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOK, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer24->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizer24 ); + this->Layout(); + bSizer24->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( CopyToDlgGenerated::OnClose ) ); + m_checkBoxKeepRelPath->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnUseRecycler ), NULL, this ); + m_checkBoxOverwriteIfExists->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnUseRecycler ), NULL, this ); + m_buttonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnOK ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CopyToDlgGenerated::OnCancel ), NULL, this ); } CopyToDlgGenerated::~CopyToDlgGenerated() @@ -3377,258 +3401,258 @@ CopyToDlgGenerated::~CopyToDlgGenerated() OptionsDlgGenerated::OptionsDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer95; - bSizer95 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer72; - bSizer72 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapSettings = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizer72->Add( m_bitmapSettings, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_staticText44 = new wxStaticText( this, wxID_ANY, _("The following settings are used for all synchronization jobs."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_staticText44->Wrap( 500 ); - bSizer72->Add( m_staticText44, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); - - - bSizer95->Add( bSizer72, 0, 0, 5 ); - - m_staticline20 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer95->Add( m_staticline20, 0, wxEXPAND, 5 ); - - m_panel39 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel39->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer166; - bSizer166 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer186; - bSizer186 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer160; - bSizer160 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer176; - bSizer176 = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxFailSafe = new wxCheckBox( m_panel39, wxID_ANY, _("Fail-safe file copy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxFailSafe->SetValue(true); - m_checkBoxFailSafe->SetToolTip( _("Copy to a temporary file (*.ffs_tmp) before overwriting target.\nThis guarantees a consistent state even in case of a serious error.") ); - - bSizer176->Add( m_checkBoxFailSafe, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticText91 = new wxStaticText( m_panel39, wxID_ANY, _("(recommended)"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText91->Wrap( -1 ); - m_staticText91->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer176->Add( m_staticText91, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer160->Add( bSizer176, 0, wxEXPAND, 5 ); - - bSizerLockedFiles = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxCopyLocked = new wxCheckBox( m_panel39, wxID_ANY, _("Copy locked files"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxCopyLocked->SetValue(true); - m_checkBoxCopyLocked->SetToolTip( _("Copy shared or locked files using the Volume Shadow Copy Service.") ); - - bSizerLockedFiles->Add( m_checkBoxCopyLocked, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticText92 = new wxStaticText( m_panel39, wxID_ANY, _("(requires administrator rights)"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText92->Wrap( -1 ); - m_staticText92->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizerLockedFiles->Add( m_staticText92, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer160->Add( bSizerLockedFiles, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer178; - bSizer178 = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxCopyPermissions = new wxCheckBox( m_panel39, wxID_ANY, _("Copy file access permissions"), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkBoxCopyPermissions->SetValue(true); - m_checkBoxCopyPermissions->SetToolTip( _("Transfer file and folder permissions.") ); - - bSizer178->Add( m_checkBoxCopyPermissions, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticText93 = new wxStaticText( m_panel39, wxID_ANY, _("(requires administrator rights)"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText93->Wrap( -1 ); - m_staticText93->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); - - bSizer178->Add( m_staticText93, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer160->Add( bSizer178, 0, wxEXPAND, 5 ); - - - bSizer186->Add( bSizer160, 0, wxEXPAND|wxALL, 5 ); - - m_staticline39 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer186->Add( m_staticline39, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer188; - bSizer188 = new wxBoxSizer( wxVERTICAL ); - - m_staticText95 = new wxStaticText( m_panel39, wxID_ANY, _("Automatic retry on error:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText95->Wrap( -1 ); - bSizer188->Add( m_staticText95, 0, wxBOTTOM, 5 ); - - wxFlexGridSizer* fgSizer6; - fgSizer6 = new wxFlexGridSizer( 0, 2, 5, 5 ); - fgSizer6->SetFlexibleDirection( wxBOTH ); - fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticText96 = new wxStaticText( m_panel39, wxID_ANY, _("Retry count:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText96->Wrap( -1 ); - fgSizer6->Add( m_staticText96, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_spinCtrlAutoRetryCount = new wxSpinCtrl( m_panel39, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), wxSP_ARROW_KEYS, 0, 2000000000, 4 ); - fgSizer6->Add( m_spinCtrlAutoRetryCount, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextAutoRetryDelay = new wxStaticText( m_panel39, wxID_ANY, _("Delay (in seconds):"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextAutoRetryDelay->Wrap( -1 ); - fgSizer6->Add( m_staticTextAutoRetryDelay, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_spinCtrlAutoRetryDelay = new wxSpinCtrl( m_panel39, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), wxSP_ARROW_KEYS, 0, 2000000000, 0 ); - fgSizer6->Add( m_spinCtrlAutoRetryDelay, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer188->Add( fgSizer6, 0, wxLEFT, 10 ); - - - bSizer186->Add( bSizer188, 0, wxALL, 10 ); - - - bSizer166->Add( bSizer186, 0, wxEXPAND, 5 ); - - m_staticline191 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer166->Add( m_staticline191, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer181; - bSizer181 = new wxBoxSizer( wxVERTICAL ); - - m_staticText85 = new wxStaticText( m_panel39, wxID_ANY, _("Customize context menu:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText85->Wrap( -1 ); - bSizer181->Add( m_staticText85, 0, wxBOTTOM, 5 ); - - m_gridCustomCommand = new wxGrid( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - - // Grid - m_gridCustomCommand->CreateGrid( 5, 2 ); - m_gridCustomCommand->EnableEditing( true ); - m_gridCustomCommand->EnableGridLines( true ); - m_gridCustomCommand->EnableDragGridSize( false ); - m_gridCustomCommand->SetMargins( 0, 0 ); - - // Columns - m_gridCustomCommand->SetColSize( 0, 165 ); - m_gridCustomCommand->SetColSize( 1, 196 ); - m_gridCustomCommand->EnableDragColMove( false ); - m_gridCustomCommand->EnableDragColSize( true ); - m_gridCustomCommand->SetColLabelSize( 20 ); - m_gridCustomCommand->SetColLabelValue( 0, _("Description") ); - m_gridCustomCommand->SetColLabelValue( 1, _("Command line") ); - m_gridCustomCommand->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE ); - - // Rows - m_gridCustomCommand->EnableDragRowSize( false ); - m_gridCustomCommand->SetRowLabelSize( 1 ); - m_gridCustomCommand->SetRowLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTRE ); - - // Label Appearance - - // Cell Defaults - m_gridCustomCommand->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP ); - bSizer181->Add( m_gridCustomCommand, 1, wxEXPAND, 5 ); - - wxBoxSizer* bSizer193; - bSizer193 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButtonAddRow = new wxBitmapButton( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - bSizer193->Add( m_bpButtonAddRow, 0, 0, 5 ); - - m_bpButtonRemoveRow = new wxBitmapButton( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); - bSizer193->Add( m_bpButtonRemoveRow, 0, 0, 5 ); - - - bSizer193->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_hyperlink17 = new wxHyperlinkCtrl( m_panel39, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - bSizer193->Add( m_hyperlink17, 0, wxLEFT, 5 ); - - - bSizer181->Add( bSizer193, 0, wxTOP|wxEXPAND, 5 ); - - - bSizer166->Add( bSizer181, 1, wxEXPAND|wxALL, 10 ); - - m_staticline192 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer166->Add( m_staticline192, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1881; - bSizer1881 = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonResetDialogs = new zen::BitmapTextButton( m_panel39, wxID_ANY, _("Show hidden dialogs again"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonResetDialogs->SetToolTip( _("Show all permanently hidden dialogs and warning messages again") ); - - bSizer1881->Add( m_buttonResetDialogs, 0, wxALL|wxALIGN_CENTER_VERTICAL, 10 ); - - m_staticline40 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer1881->Add( m_staticline40, 0, wxEXPAND, 5 ); - - - bSizer166->Add( bSizer1881, 0, 0, 5 ); - - - m_panel39->SetSizer( bSizer166 ); - m_panel39->Layout(); - bSizer166->Fit( m_panel39 ); - bSizer95->Add( m_panel39, 1, wxEXPAND, 5 ); - - m_staticline36 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer95->Add( m_staticline36, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonDefault = new wxButton( this, wxID_DEFAULT, _("&Default"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonDefault, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizerStdButtons->Add( 0, 0, 1, 0, 5 ); - - m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOkay->SetDefault(); - m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer95->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); - - - this->SetSizer( bSizer95 ); - this->Layout(); - bSizer95->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OptionsDlgGenerated::OnClose ) ); - m_spinCtrlAutoRetryCount->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( OptionsDlgGenerated::OnToggleAutoRetryCount ), NULL, this ); - m_bpButtonAddRow->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnAddRow ), NULL, this ); - m_bpButtonRemoveRow->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnRemoveRow ), NULL, this ); - m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( OptionsDlgGenerated::OnHelpShowExamples ), NULL, this ); - m_buttonResetDialogs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnResetDialogs ), NULL, this ); - m_buttonDefault->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnDefault ), NULL, this ); - m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnOkay ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer95; + bSizer95 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer72; + bSizer72 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapSettings = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizer72->Add( m_bitmapSettings, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_staticText44 = new wxStaticText( this, wxID_ANY, _("The following settings are used for all synchronization jobs."), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticText44->Wrap( 500 ); + bSizer72->Add( m_staticText44, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 10 ); + + + bSizer95->Add( bSizer72, 0, 0, 5 ); + + m_staticline20 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer95->Add( m_staticline20, 0, wxEXPAND, 5 ); + + m_panel39 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel39->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer166; + bSizer166 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer186; + bSizer186 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer160; + bSizer160 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer176; + bSizer176 = new wxBoxSizer( wxHORIZONTAL ); + + m_checkBoxFailSafe = new wxCheckBox( m_panel39, wxID_ANY, _("Fail-safe file copy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxFailSafe->SetValue(true); + m_checkBoxFailSafe->SetToolTip( _("Copy to a temporary file (*.ffs_tmp) before overwriting target.\nThis guarantees a consistent state even in case of a serious error.") ); + + bSizer176->Add( m_checkBoxFailSafe, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText91 = new wxStaticText( m_panel39, wxID_ANY, _("(recommended)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText91->Wrap( -1 ); + m_staticText91->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer176->Add( m_staticText91, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer160->Add( bSizer176, 0, wxEXPAND, 5 ); + + bSizerLockedFiles = new wxBoxSizer( wxHORIZONTAL ); + + m_checkBoxCopyLocked = new wxCheckBox( m_panel39, wxID_ANY, _("Copy locked files"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxCopyLocked->SetValue(true); + m_checkBoxCopyLocked->SetToolTip( _("Copy shared or locked files using the Volume Shadow Copy Service.") ); + + bSizerLockedFiles->Add( m_checkBoxCopyLocked, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText92 = new wxStaticText( m_panel39, wxID_ANY, _("(requires administrator rights)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText92->Wrap( -1 ); + m_staticText92->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizerLockedFiles->Add( m_staticText92, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer160->Add( bSizerLockedFiles, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer178; + bSizer178 = new wxBoxSizer( wxHORIZONTAL ); + + m_checkBoxCopyPermissions = new wxCheckBox( m_panel39, wxID_ANY, _("Copy file access permissions"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxCopyPermissions->SetValue(true); + m_checkBoxCopyPermissions->SetToolTip( _("Transfer file and folder permissions.") ); + + bSizer178->Add( m_checkBoxCopyPermissions, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText93 = new wxStaticText( m_panel39, wxID_ANY, _("(requires administrator rights)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText93->Wrap( -1 ); + m_staticText93->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) ); + + bSizer178->Add( m_staticText93, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer160->Add( bSizer178, 0, wxEXPAND, 5 ); + + + bSizer186->Add( bSizer160, 0, wxEXPAND|wxALL, 5 ); + + m_staticline39 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer186->Add( m_staticline39, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer188; + bSizer188 = new wxBoxSizer( wxVERTICAL ); + + m_staticText95 = new wxStaticText( m_panel39, wxID_ANY, _("Automatic retry on error:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText95->Wrap( -1 ); + bSizer188->Add( m_staticText95, 0, wxBOTTOM, 5 ); + + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 5, 5 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticText96 = new wxStaticText( m_panel39, wxID_ANY, _("Retry count:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText96->Wrap( -1 ); + fgSizer6->Add( m_staticText96, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_spinCtrlAutoRetryCount = new wxSpinCtrl( m_panel39, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), wxSP_ARROW_KEYS, 0, 2000000000, 4 ); + fgSizer6->Add( m_spinCtrlAutoRetryCount, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextAutoRetryDelay = new wxStaticText( m_panel39, wxID_ANY, _("Delay (in seconds):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextAutoRetryDelay->Wrap( -1 ); + fgSizer6->Add( m_staticTextAutoRetryDelay, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + m_spinCtrlAutoRetryDelay = new wxSpinCtrl( m_panel39, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), wxSP_ARROW_KEYS, 0, 2000000000, 0 ); + fgSizer6->Add( m_spinCtrlAutoRetryDelay, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer188->Add( fgSizer6, 0, wxLEFT, 10 ); + + + bSizer186->Add( bSizer188, 0, wxALL, 10 ); + + + bSizer166->Add( bSizer186, 0, wxEXPAND, 5 ); + + m_staticline191 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer166->Add( m_staticline191, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxVERTICAL ); + + m_staticText85 = new wxStaticText( m_panel39, wxID_ANY, _("Customize context menu:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText85->Wrap( -1 ); + bSizer181->Add( m_staticText85, 0, wxBOTTOM, 5 ); + + m_gridCustomCommand = new wxGrid( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + + // Grid + m_gridCustomCommand->CreateGrid( 5, 2 ); + m_gridCustomCommand->EnableEditing( true ); + m_gridCustomCommand->EnableGridLines( true ); + m_gridCustomCommand->EnableDragGridSize( false ); + m_gridCustomCommand->SetMargins( 0, 0 ); + + // Columns + m_gridCustomCommand->SetColSize( 0, 165 ); + m_gridCustomCommand->SetColSize( 1, 196 ); + m_gridCustomCommand->EnableDragColMove( false ); + m_gridCustomCommand->EnableDragColSize( true ); + m_gridCustomCommand->SetColLabelSize( 20 ); + m_gridCustomCommand->SetColLabelValue( 0, _("Description") ); + m_gridCustomCommand->SetColLabelValue( 1, _("Command line") ); + m_gridCustomCommand->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE ); + + // Rows + m_gridCustomCommand->EnableDragRowSize( false ); + m_gridCustomCommand->SetRowLabelSize( 1 ); + m_gridCustomCommand->SetRowLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTRE ); + + // Label Appearance + + // Cell Defaults + m_gridCustomCommand->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP ); + bSizer181->Add( m_gridCustomCommand, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer193; + bSizer193 = new wxBoxSizer( wxHORIZONTAL ); + + m_bpButtonAddRow = new wxBitmapButton( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + bSizer193->Add( m_bpButtonAddRow, 0, 0, 5 ); + + m_bpButtonRemoveRow = new wxBitmapButton( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 25,25 ), wxBU_AUTODRAW ); + bSizer193->Add( m_bpButtonRemoveRow, 0, 0, 5 ); + + + bSizer193->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_hyperlink17 = new wxHyperlinkCtrl( m_panel39, wxID_ANY, _("Show examples"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizer193->Add( m_hyperlink17, 0, wxLEFT, 5 ); + + + bSizer181->Add( bSizer193, 0, wxTOP|wxEXPAND, 5 ); + + + bSizer166->Add( bSizer181, 1, wxEXPAND|wxALL, 10 ); + + m_staticline192 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer166->Add( m_staticline192, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer1881; + bSizer1881 = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonResetDialogs = new zen::BitmapTextButton( m_panel39, wxID_ANY, _("Show hidden dialogs again"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonResetDialogs->SetToolTip( _("Show all permanently hidden dialogs and warning messages again") ); + + bSizer1881->Add( m_buttonResetDialogs, 0, wxALL|wxALIGN_CENTER_VERTICAL, 10 ); + + m_staticline40 = new wxStaticLine( m_panel39, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer1881->Add( m_staticline40, 0, wxEXPAND, 5 ); + + + bSizer166->Add( bSizer1881, 0, 0, 5 ); + + + m_panel39->SetSizer( bSizer166 ); + m_panel39->Layout(); + bSizer166->Fit( m_panel39 ); + bSizer95->Add( m_panel39, 1, wxEXPAND, 5 ); + + m_staticline36 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer95->Add( m_staticline36, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonDefault = new wxButton( this, wxID_DEFAULT, _("&Default"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonDefault, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizerStdButtons->Add( 0, 0, 1, 0, 5 ); + + m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOkay->SetDefault(); + m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer95->Add( bSizerStdButtons, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizer95 ); + this->Layout(); + bSizer95->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OptionsDlgGenerated::OnClose ) ); + m_spinCtrlAutoRetryCount->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( OptionsDlgGenerated::OnToggleAutoRetryCount ), NULL, this ); + m_bpButtonAddRow->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnAddRow ), NULL, this ); + m_bpButtonRemoveRow->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnRemoveRow ), NULL, this ); + m_hyperlink17->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( OptionsDlgGenerated::OnHelpShowExamples ), NULL, this ); + m_buttonResetDialogs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnResetDialogs ), NULL, this ); + m_buttonDefault->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnDefault ), NULL, this ); + m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnOkay ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OptionsDlgGenerated::OnCancel ), NULL, this ); } OptionsDlgGenerated::~OptionsDlgGenerated() @@ -3637,22 +3661,22 @@ OptionsDlgGenerated::~OptionsDlgGenerated() TooltipDialogGenerated::TooltipDialogGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - - wxBoxSizer* bSizer158; - bSizer158 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapLeft = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer158->Add( m_bitmapLeft, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextMain = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextMain->Wrap( 600 ); - bSizer158->Add( m_staticTextMain, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - this->SetSizer( bSizer158 ); - this->Layout(); - bSizer158->Fit( this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer158; + bSizer158 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapLeft = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer158->Add( m_bitmapLeft, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextMain = new wxStaticText( this, wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextMain->Wrap( 600 ); + bSizer158->Add( m_staticTextMain, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + this->SetSizer( bSizer158 ); + this->Layout(); + bSizer158->Fit( this ); } TooltipDialogGenerated::~TooltipDialogGenerated() @@ -3661,60 +3685,60 @@ TooltipDialogGenerated::~TooltipDialogGenerated() SelectTimespanDlgGenerated::SelectTimespanDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer96; - bSizer96 = new wxBoxSizer( wxVERTICAL ); - - m_panel35 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel35->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer98; - bSizer98 = new wxBoxSizer( wxHORIZONTAL ); - - m_calendarFrom = new wxCalendarCtrl( m_panel35, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS|wxNO_BORDER ); - bSizer98->Add( m_calendarFrom, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); - - m_calendarTo = new wxCalendarCtrl( m_panel35, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS|wxNO_BORDER ); - bSizer98->Add( m_calendarTo, 0, wxALL, 10 ); - - - m_panel35->SetSizer( bSizer98 ); - m_panel35->Layout(); - bSizer98->Fit( m_panel35 ); - bSizer96->Add( m_panel35, 0, wxEXPAND, 5 ); - - m_staticline21 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer96->Add( m_staticline21, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonOkay->SetDefault(); - m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - - bSizer96->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer96 ); - this->Layout(); - bSizer96->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SelectTimespanDlgGenerated::OnClose ) ); - m_calendarFrom->Connect( wxEVT_CALENDAR_SEL_CHANGED, wxCalendarEventHandler( SelectTimespanDlgGenerated::OnChangeSelectionFrom ), NULL, this ); - m_calendarTo->Connect( wxEVT_CALENDAR_SEL_CHANGED, wxCalendarEventHandler( SelectTimespanDlgGenerated::OnChangeSelectionTo ), NULL, this ); - m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SelectTimespanDlgGenerated::OnOkay ), NULL, this ); - m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SelectTimespanDlgGenerated::OnCancel ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer96; + bSizer96 = new wxBoxSizer( wxVERTICAL ); + + m_panel35 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel35->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer98; + bSizer98 = new wxBoxSizer( wxHORIZONTAL ); + + m_calendarFrom = new wxCalendarCtrl( m_panel35, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS|wxNO_BORDER ); + bSizer98->Add( m_calendarFrom, 0, wxTOP|wxBOTTOM|wxLEFT, 10 ); + + m_calendarTo = new wxCalendarCtrl( m_panel35, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS|wxNO_BORDER ); + bSizer98->Add( m_calendarTo, 0, wxALL, 10 ); + + + m_panel35->SetSizer( bSizer98 ); + m_panel35->Layout(); + bSizer98->Fit( m_panel35 ); + bSizer96->Add( m_panel35, 0, wxEXPAND, 5 ); + + m_staticline21 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer96->Add( m_staticline21, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonOkay = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonOkay->SetDefault(); + m_buttonOkay->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizerStdButtons->Add( m_buttonOkay, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizerStdButtons->Add( m_buttonCancel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + + bSizer96->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer96 ); + this->Layout(); + bSizer96->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SelectTimespanDlgGenerated::OnClose ) ); + m_calendarFrom->Connect( wxEVT_CALENDAR_SEL_CHANGED, wxCalendarEventHandler( SelectTimespanDlgGenerated::OnChangeSelectionFrom ), NULL, this ); + m_calendarTo->Connect( wxEVT_CALENDAR_SEL_CHANGED, wxCalendarEventHandler( SelectTimespanDlgGenerated::OnChangeSelectionTo ), NULL, this ); + m_buttonOkay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SelectTimespanDlgGenerated::OnOkay ), NULL, this ); + m_buttonCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( SelectTimespanDlgGenerated::OnCancel ), NULL, this ); } SelectTimespanDlgGenerated::~SelectTimespanDlgGenerated() @@ -3723,308 +3747,308 @@ SelectTimespanDlgGenerated::~SelectTimespanDlgGenerated() AboutDlgGenerated::AboutDlgGenerated( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); - - wxBoxSizer* bSizer31; - bSizer31 = new wxBoxSizer( wxVERTICAL ); - - m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - wxBoxSizer* bSizer162; - bSizer162 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapLogo = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizer162->Add( m_bitmapLogo, 0, 0, 5 ); - - m_staticline341 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer162->Add( m_staticline341, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer174; - bSizer174 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer181; - bSizer181 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer187; - bSizer187 = new wxBoxSizer( wxVERTICAL ); - - m_staticText96 = new wxStaticText( m_panel41, wxID_ANY, _("Source code written in C++ using:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText96->Wrap( -1 ); - bSizer187->Add( m_staticText96, 0, wxALL, 5 ); - - wxBoxSizer* bSizer171; - bSizer171 = new wxBoxSizer( wxHORIZONTAL ); - - m_hyperlink11 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("MS Visual C++"), wxT("http://www.visualstudio.com"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink11->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink11->SetToolTip( _("http://www.visualstudio.com") ); - - bSizer171->Add( m_hyperlink11, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink7 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("wxWidgets"), wxT("http://www.wxwidgets.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink7->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink7->SetToolTip( _("http://www.wxwidgets.org") ); - - bSizer171->Add( m_hyperlink7, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink14 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("wxFormBuilder"), wxT("http://wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink14->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink14->SetToolTip( _("http://wxformbuilder.org") ); - - bSizer171->Add( m_hyperlink14, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink16 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Artistic Style"), wxT("http://astyle.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink16->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink16->SetToolTip( _("http://astyle.sourceforge.net") ); - - bSizer171->Add( m_hyperlink16, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer187->Add( bSizer171, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer172; - bSizer172 = new wxBoxSizer( wxHORIZONTAL ); - - m_hyperlink15 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("zen::Xml"), wxT("http://zenxml.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink15->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink15->SetToolTip( _("http://zenxml.sourceforge.net") ); - - bSizer172->Add( m_hyperlink15, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink12 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Google Test"), wxT("http://code.google.com/p/googletest"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink12->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink12->SetToolTip( _("http://code.google.com/p/googletest") ); - - bSizer172->Add( m_hyperlink12, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink13 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Boost"), wxT("http://www.boost.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink13->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink13->SetToolTip( _("http://www.boost.org") ); - - bSizer172->Add( m_hyperlink13, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink10 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("libssh2"), wxT("http://www.libssh2.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink10->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink10->SetToolTip( _("http://www.libssh2.org") ); - - bSizer172->Add( m_hyperlink10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink18 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("NSIS"), wxT("http://nsis.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink18->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink18->SetToolTip( _("http://nsis.sourceforge.net") ); - - bSizer172->Add( m_hyperlink18, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink9 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Inno Setup"), wxT("http://www.jrsoftware.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink9->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink9->SetToolTip( _("http://www.jrsoftware.org") ); - - bSizer172->Add( m_hyperlink9, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer187->Add( bSizer172, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer181->Add( bSizer187, 0, wxALL|wxEXPAND, 5 ); - - m_panelDonate = new wxPanel( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panelDonate->SetBackgroundColour( wxColour( 153, 170, 187 ) ); - - wxBoxSizer* bSizer183; - bSizer183 = new wxBoxSizer( wxVERTICAL ); - - m_panel39 = new wxPanel( m_panelDonate, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - m_panel39->SetBackgroundColour( wxColour( 221, 221, 255 ) ); - - wxBoxSizer* bSizer184; - bSizer184 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer184->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bitmapDonate = new wxStaticBitmap( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer184->Add( m_bitmapDonate, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - wxBoxSizer* bSizer178; - bSizer178 = new wxBoxSizer( wxVERTICAL ); - - m_staticText83 = new wxStaticText( m_panel39, wxID_ANY, _("If you like FreeFileSync:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText83->Wrap( -1 ); - m_staticText83->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - m_staticText83->SetForegroundColour( wxColour( 0, 0, 0 ) ); - - bSizer178->Add( m_staticText83, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_buttonDonate = new wxButton( m_panel39, wxID_ANY, _("Donate with PayPal"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonDonate->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) ); - m_buttonDonate->SetToolTip( _("http://www.freefilesync.org/donate.php") ); - - bSizer178->Add( m_buttonDonate, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer184->Add( bSizer178, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer184->Add( 0, 0, 1, wxEXPAND, 5 ); - - - m_panel39->SetSizer( bSizer184 ); - m_panel39->Layout(); - bSizer184->Fit( m_panel39 ); - bSizer183->Add( m_panel39, 0, wxEXPAND|wxALL, 5 ); - - - m_panelDonate->SetSizer( bSizer183 ); - m_panelDonate->Layout(); - bSizer183->Fit( m_panelDonate ); - bSizer181->Add( m_panelDonate, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer186; - bSizer186 = new wxBoxSizer( wxVERTICAL ); - - m_staticText94 = new wxStaticText( m_panel41, wxID_ANY, _("Feedback and suggestions are welcome"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText94->Wrap( -1 ); - bSizer186->Add( m_staticText94, 0, wxALL, 5 ); - - wxBoxSizer* bSizer166; - bSizer166 = new wxBoxSizer( wxHORIZONTAL ); - - - bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bitmapHomepage = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_bitmapHomepage->SetToolTip( _("Homepage") ); - - bSizer166->Add( m_bitmapHomepage, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - m_hyperlink1 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("FreeFileSync.org"), wxT("http://www.freefilesync.org/"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, true, wxEmptyString ) ); - m_hyperlink1->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink1->SetToolTip( _("http://www.freefilesync.org") ); - - bSizer166->Add( m_hyperlink1, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bitmapEmail = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_bitmapEmail->SetToolTip( _("Email") ); - - bSizer166->Add( m_bitmapEmail, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - m_hyperlink2 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("zenju@gmx.de"), wxT("mailto:zenju@gmx.de"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink2->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, true, wxEmptyString ) ); - m_hyperlink2->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink2->SetToolTip( _("mailto:zenju@gmx.de") ); - - bSizer166->Add( m_hyperlink2, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); - - - bSizer186->Add( bSizer166, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer181->Add( bSizer186, 0, wxALL|wxEXPAND, 5 ); - - m_staticline34 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer181->Add( m_staticline34, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer185; - bSizer185 = new wxBoxSizer( wxVERTICAL ); - - m_staticText93 = new wxStaticText( m_panel41, wxID_ANY, _("Published under the GNU General Public License"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText93->Wrap( -1 ); - bSizer185->Add( m_staticText93, 0, wxALL, 5 ); - - wxBoxSizer* bSizer1671; - bSizer1671 = new wxBoxSizer( wxHORIZONTAL ); - - m_bitmapGpl = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); - bSizer1671->Add( m_bitmapGpl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - m_hyperlink5 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("http://www.gnu.org/licenses/gpl-3.0"), wxT("http://www.gnu.org/licenses/gpl-3.0"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink5->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - - bSizer1671->Add( m_hyperlink5, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer185->Add( bSizer1671, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizer181->Add( bSizer185, 0, wxALL|wxEXPAND, 5 ); - - - bSizer174->Add( bSizer181, 0, 0, 5 ); - - m_staticline37 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); - bSizer174->Add( m_staticline37, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer177; - bSizer177 = new wxBoxSizer( wxVERTICAL ); - - m_staticText54 = new wxStaticText( m_panel41, wxID_ANY, _("Many thanks for localization:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText54->Wrap( 200 ); - m_staticText54->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); - - bSizer177->Add( m_staticText54, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - - - bSizer177->Add( 0, 5, 0, 0, 5 ); - - m_scrolledWindowTranslators = new wxScrolledWindow( m_panel41, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxVSCROLL ); - m_scrolledWindowTranslators->SetScrollRate( 10, 10 ); - m_scrolledWindowTranslators->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_scrolledWindowTranslators->SetMinSize( wxSize( 220,-1 ) ); - - fgSizerTranslators = new wxFlexGridSizer( 0, 2, 2, 10 ); - fgSizerTranslators->SetFlexibleDirection( wxBOTH ); - fgSizerTranslators->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - - m_scrolledWindowTranslators->SetSizer( fgSizerTranslators ); - m_scrolledWindowTranslators->Layout(); - fgSizerTranslators->Fit( m_scrolledWindowTranslators ); - bSizer177->Add( m_scrolledWindowTranslators, 1, wxLEFT|wxEXPAND, 5 ); - - - bSizer174->Add( bSizer177, 0, wxEXPAND|wxTOP|wxLEFT, 5 ); - - - bSizer162->Add( bSizer174, 0, 0, 5 ); - - - m_panel41->SetSizer( bSizer162 ); - m_panel41->Layout(); - bSizer162->Fit( m_panel41 ); - bSizer31->Add( m_panel41, 0, wxEXPAND, 5 ); - - m_staticline36 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer31->Add( m_staticline36, 0, wxEXPAND, 5 ); - - bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonClose = new wxButton( this, wxID_OK, _("Close"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_buttonClose->SetDefault(); - bSizerStdButtons->Add( m_buttonClose, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - bSizer31->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); - - - this->SetSizer( bSizer31 ); - this->Layout(); - bSizer31->Fit( this ); - - this->Centre( wxBOTH ); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( AboutDlgGenerated::OnClose ) ); - m_buttonDonate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AboutDlgGenerated::OnDonate ), NULL, this ); - m_buttonClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AboutDlgGenerated::OnOK ), NULL, this ); + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer31; + bSizer31 = new wxBoxSizer( wxVERTICAL ); + + m_panel41 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel41->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + wxBoxSizer* bSizer162; + bSizer162 = new wxBoxSizer( wxVERTICAL ); + + m_bitmapLogo = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizer162->Add( m_bitmapLogo, 0, 0, 5 ); + + m_staticline341 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer162->Add( m_staticline341, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer174; + bSizer174 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer187; + bSizer187 = new wxBoxSizer( wxVERTICAL ); + + m_staticText96 = new wxStaticText( m_panel41, wxID_ANY, _("Source code written in C++ using:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText96->Wrap( -1 ); + bSizer187->Add( m_staticText96, 0, wxALL, 5 ); + + wxBoxSizer* bSizer171; + bSizer171 = new wxBoxSizer( wxHORIZONTAL ); + + m_hyperlink11 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("MS Visual C++"), wxT("http://www.visualstudio.com"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink11->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink11->SetToolTip( _("http://www.visualstudio.com") ); + + bSizer171->Add( m_hyperlink11, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink7 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("wxWidgets"), wxT("http://www.wxwidgets.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink7->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink7->SetToolTip( _("http://www.wxwidgets.org") ); + + bSizer171->Add( m_hyperlink7, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink14 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("wxFormBuilder"), wxT("http://wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink14->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink14->SetToolTip( _("http://wxformbuilder.org") ); + + bSizer171->Add( m_hyperlink14, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink16 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Artistic Style"), wxT("http://astyle.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink16->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink16->SetToolTip( _("http://astyle.sourceforge.net") ); + + bSizer171->Add( m_hyperlink16, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer187->Add( bSizer171, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizer172; + bSizer172 = new wxBoxSizer( wxHORIZONTAL ); + + m_hyperlink15 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("zen::Xml"), wxT("http://zenxml.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink15->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink15->SetToolTip( _("http://zenxml.sourceforge.net") ); + + bSizer172->Add( m_hyperlink15, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink12 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Google Test"), wxT("http://code.google.com/p/googletest"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink12->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink12->SetToolTip( _("http://code.google.com/p/googletest") ); + + bSizer172->Add( m_hyperlink12, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink13 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Boost"), wxT("http://www.boost.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink13->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink13->SetToolTip( _("http://www.boost.org") ); + + bSizer172->Add( m_hyperlink13, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink10 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("libssh2"), wxT("http://www.libssh2.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink10->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink10->SetToolTip( _("http://www.libssh2.org") ); + + bSizer172->Add( m_hyperlink10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink18 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("NSIS"), wxT("http://nsis.sourceforge.net"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink18->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink18->SetToolTip( _("http://nsis.sourceforge.net") ); + + bSizer172->Add( m_hyperlink18, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink9 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("Inno Setup"), wxT("http://www.jrsoftware.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink9->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink9->SetToolTip( _("http://www.jrsoftware.org") ); + + bSizer172->Add( m_hyperlink9, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer187->Add( bSizer172, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer181->Add( bSizer187, 0, wxALL|wxEXPAND, 5 ); + + m_panelDonate = new wxPanel( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panelDonate->SetBackgroundColour( wxColour( 153, 170, 187 ) ); + + wxBoxSizer* bSizer183; + bSizer183 = new wxBoxSizer( wxVERTICAL ); + + m_panel39 = new wxPanel( m_panelDonate, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_panel39->SetBackgroundColour( wxColour( 221, 221, 255 ) ); + + wxBoxSizer* bSizer184; + bSizer184 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer184->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bitmapDonate = new wxStaticBitmap( m_panel39, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer184->Add( m_bitmapDonate, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* bSizer178; + bSizer178 = new wxBoxSizer( wxVERTICAL ); + + m_staticText83 = new wxStaticText( m_panel39, wxID_ANY, _("If you like FreeFileSync:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText83->Wrap( -1 ); + m_staticText83->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + m_staticText83->SetForegroundColour( wxColour( 0, 0, 0 ) ); + + bSizer178->Add( m_staticText83, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_buttonDonate = new wxButton( m_panel39, wxID_ANY, _("Donate with PayPal"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonDonate->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) ); + m_buttonDonate->SetToolTip( _("http://www.freefilesync.org/donate.php") ); + + bSizer178->Add( m_buttonDonate, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizer184->Add( bSizer178, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer184->Add( 0, 0, 1, wxEXPAND, 5 ); + + + m_panel39->SetSizer( bSizer184 ); + m_panel39->Layout(); + bSizer184->Fit( m_panel39 ); + bSizer183->Add( m_panel39, 0, wxEXPAND|wxALL, 5 ); + + + m_panelDonate->SetSizer( bSizer183 ); + m_panelDonate->Layout(); + bSizer183->Fit( m_panelDonate ); + bSizer181->Add( m_panelDonate, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizer186; + bSizer186 = new wxBoxSizer( wxVERTICAL ); + + m_staticText94 = new wxStaticText( m_panel41, wxID_ANY, _("Feedback and suggestions are welcome"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText94->Wrap( -1 ); + bSizer186->Add( m_staticText94, 0, wxALL, 5 ); + + wxBoxSizer* bSizer166; + bSizer166 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bitmapHomepage = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_bitmapHomepage->SetToolTip( _("Homepage") ); + + bSizer166->Add( m_bitmapHomepage, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + m_hyperlink1 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("FreeFileSync.org"), wxT("http://www.freefilesync.org/"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, true, wxEmptyString ) ); + m_hyperlink1->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink1->SetToolTip( _("http://www.freefilesync.org") ); + + bSizer166->Add( m_hyperlink1, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_bitmapEmail = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_bitmapEmail->SetToolTip( _("Email") ); + + bSizer166->Add( m_bitmapEmail, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + m_hyperlink2 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("zenju@gmx.de"), wxT("mailto:zenju@gmx.de"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink2->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, true, wxEmptyString ) ); + m_hyperlink2->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink2->SetToolTip( _("mailto:zenju@gmx.de") ); + + bSizer166->Add( m_hyperlink2, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer166->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer186->Add( bSizer166, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer181->Add( bSizer186, 0, wxALL|wxEXPAND, 5 ); + + m_staticline34 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer181->Add( m_staticline34, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer185; + bSizer185 = new wxBoxSizer( wxVERTICAL ); + + m_staticText93 = new wxStaticText( m_panel41, wxID_ANY, _("Published under the GNU General Public License"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText93->Wrap( -1 ); + bSizer185->Add( m_staticText93, 0, wxALL, 5 ); + + wxBoxSizer* bSizer1671; + bSizer1671 = new wxBoxSizer( wxHORIZONTAL ); + + m_bitmapGpl = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + bSizer1671->Add( m_bitmapGpl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + m_hyperlink5 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("http://www.gnu.org/licenses/gpl-3.0"), wxT("http://www.gnu.org/licenses/gpl-3.0"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink5->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + + bSizer1671->Add( m_hyperlink5, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer185->Add( bSizer1671, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizer181->Add( bSizer185, 0, wxALL|wxEXPAND, 5 ); + + + bSizer174->Add( bSizer181, 0, 0, 5 ); + + m_staticline37 = new wxStaticLine( m_panel41, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + bSizer174->Add( m_staticline37, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer177; + bSizer177 = new wxBoxSizer( wxVERTICAL ); + + m_staticText54 = new wxStaticText( m_panel41, wxID_ANY, _("Many thanks for localization:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText54->Wrap( 200 ); + m_staticText54->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer177->Add( m_staticText54, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + + + bSizer177->Add( 0, 5, 0, 0, 5 ); + + m_scrolledWindowTranslators = new wxScrolledWindow( m_panel41, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxVSCROLL ); + m_scrolledWindowTranslators->SetScrollRate( 10, 10 ); + m_scrolledWindowTranslators->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_scrolledWindowTranslators->SetMinSize( wxSize( 220,-1 ) ); + + fgSizerTranslators = new wxFlexGridSizer( 0, 2, 2, 10 ); + fgSizerTranslators->SetFlexibleDirection( wxBOTH ); + fgSizerTranslators->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + m_scrolledWindowTranslators->SetSizer( fgSizerTranslators ); + m_scrolledWindowTranslators->Layout(); + fgSizerTranslators->Fit( m_scrolledWindowTranslators ); + bSizer177->Add( m_scrolledWindowTranslators, 1, wxLEFT|wxEXPAND, 5 ); + + + bSizer174->Add( bSizer177, 0, wxEXPAND|wxTOP|wxLEFT, 5 ); + + + bSizer162->Add( bSizer174, 0, 0, 5 ); + + + m_panel41->SetSizer( bSizer162 ); + m_panel41->Layout(); + bSizer162->Fit( m_panel41 ); + bSizer31->Add( m_panel41, 0, wxEXPAND, 5 ); + + m_staticline36 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer31->Add( m_staticline36, 0, wxEXPAND, 5 ); + + bSizerStdButtons = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonClose = new wxButton( this, wxID_OK, _("Close"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_buttonClose->SetDefault(); + bSizerStdButtons->Add( m_buttonClose, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer31->Add( bSizerStdButtons, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer31 ); + this->Layout(); + bSizer31->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( AboutDlgGenerated::OnClose ) ); + m_buttonDonate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AboutDlgGenerated::OnDonate ), NULL, this ); + m_buttonClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AboutDlgGenerated::OnOK ), NULL, this ); } AboutDlgGenerated::~AboutDlgGenerated() diff --git a/FreeFileSync/Source/ui/gui_generated.h b/FreeFileSync/Source/ui/gui_generated.h index 842b7a10..9cbd581f 100644 --- a/FreeFileSync/Source/ui/gui_generated.h +++ b/FreeFileSync/Source/ui/gui_generated.h @@ -14,10 +14,10 @@ class FolderHistoryBox; class OnCompletionBox; class ToggleButton; -namespace zen { class BitmapTextButton; } -namespace zen { class Graph2D; } -namespace zen { class Grid; } -namespace zen { class TripleSplitter; } +namespace zen{ class BitmapTextButton; } +namespace zen{ class Graph2D; } +namespace zen{ class Grid; } +namespace zen{ class TripleSplitter; } #include <wx/string.h> #include <wx/bitmap.h> @@ -49,7 +49,6 @@ namespace zen { class TripleSplitter; } #include <wx/notebook.h> #include <wx/dialog.h> #include <wx/treectrl.h> -#include <wx/gauge.h> #include <wx/animate.h> #include <wx/grid.h> #include <wx/calctrl.h> @@ -62,945 +61,945 @@ namespace zen { class TripleSplitter; } /////////////////////////////////////////////////////////////////////////////// /// Class MainDialogGenerated /////////////////////////////////////////////////////////////////////////////// -class MainDialogGenerated : public wxFrame +class MainDialogGenerated : public wxFrame { -private: - -protected: - wxMenuBar* m_menubar1; - wxMenu* m_menuFile; - wxMenuItem* m_menuItemNew; - wxMenuItem* m_menuItemLoad; - wxMenuItem* m_menuItemSave; - wxMenuItem* m_menuItemSaveAs; - wxMenuItem* m_menuItemSaveAsBatch; - wxMenu* m_menu4; - wxMenuItem* m_menuItemCompare; - wxMenuItem* m_menuItemCompSettings; - wxMenuItem* m_menuItemFilter; - wxMenuItem* m_menuItemSyncSettings; - wxMenuItem* m_menuItemSynchronize; - wxMenu* m_menuTools; - wxMenuItem* m_menuItemOptions; - wxMenu* m_menuLanguages; - wxMenu* m_menuHelp; - wxMenuItem* m_menuItemHelp; - wxMenu* m_menuCheckVersion; - wxMenuItem* m_menuItemCheckVersionNow; - wxMenuItem* m_menuItemCheckVersionAuto; - wxMenuItem* m_menuItemAbout; - wxBoxSizer* bSizerPanelHolder; - wxPanel* m_panelTopButtons; - wxBoxSizer* bSizerTopButtons; - zen::BitmapTextButton* m_buttonCancel; - zen::BitmapTextButton* m_buttonCompare; - wxBitmapButton* m_bpButtonCmpConfig; - wxBitmapButton* m_bpButtonCmpContext; - wxBitmapButton* m_bpButtonFilter; - wxBitmapButton* m_bpButtonFilterContext; - wxBitmapButton* m_bpButtonSyncConfig; - wxBitmapButton* m_bpButtonSyncContext; - zen::BitmapTextButton* m_buttonSync; - wxPanel* m_panelDirectoryPairs; - wxStaticText* m_staticTextResolvedPathL; - wxBitmapButton* m_bpButtonAddPair; - wxButton* m_buttonSelectFolderLeft; - wxPanel* m_panelTopCenter; - wxBitmapButton* m_bpButtonSwapSides; - wxStaticText* m_staticTextResolvedPathR; - wxButton* m_buttonSelectFolderRight; - wxScrolledWindow* m_scrolledWindowFolderPairs; - wxBoxSizer* bSizerAddFolderPairs; - zen::Grid* m_gridNavi; - wxPanel* m_panelCenter; - zen::TripleSplitter* m_splitterMain; - zen::Grid* m_gridMainL; - zen::Grid* m_gridMainC; - zen::Grid* m_gridMainR; - wxPanel* m_panelStatusBar; - wxBoxSizer* bSizerFileStatus; - wxBoxSizer* bSizerStatusLeft; - wxBoxSizer* bSizerStatusLeftDirectories; - wxStaticBitmap* m_bitmapSmallDirectoryLeft; - wxStaticText* m_staticTextStatusLeftDirs; - wxBoxSizer* bSizerStatusLeftFiles; - wxStaticBitmap* m_bitmapSmallFileLeft; - wxStaticText* m_staticTextStatusLeftFiles; - wxStaticText* m_staticTextStatusLeftBytes; - wxStaticLine* m_staticline9; - wxStaticText* m_staticTextStatusCenter; - wxBoxSizer* bSizerStatusRight; - wxStaticLine* m_staticline10; - wxBoxSizer* bSizerStatusRightDirectories; - wxStaticBitmap* m_bitmapSmallDirectoryRight; - wxStaticText* m_staticTextStatusRightDirs; - wxBoxSizer* bSizerStatusRightFiles; - wxStaticBitmap* m_bitmapSmallFileRight; - wxStaticText* m_staticTextStatusRightFiles; - wxStaticText* m_staticTextStatusRightBytes; - wxStaticText* m_staticTextFullStatus; - wxPanel* m_panelSearch; - wxBitmapButton* m_bpButtonHideSearch; - wxStaticText* m_staticText101; - wxTextCtrl* m_textCtrlSearchTxt; - wxCheckBox* m_checkBoxMatchCase; - wxPanel* m_panelConfig; - wxBoxSizer* bSizerConfig; - wxBitmapButton* m_bpButtonNew; - wxStaticText* m_staticText951; - wxBitmapButton* m_bpButtonOpen; - wxStaticText* m_staticText95; - wxBitmapButton* m_bpButtonSave; - wxStaticText* m_staticText961; - wxBitmapButton* m_bpButtonSaveAs; - wxBitmapButton* m_bpButtonSaveAsBatch; - wxStaticText* m_staticText97; - wxListBox* m_listBoxHistory; - wxPanel* m_panelViewFilter; - wxBoxSizer* bSizerViewFilter; - wxStaticText* m_staticTextViewType; - ToggleButton* m_bpButtonViewTypeSyncAction; - ToggleButton* m_bpButtonShowExcluded; - wxStaticText* m_staticTextSelectView; - ToggleButton* m_bpButtonShowDeleteLeft; - ToggleButton* m_bpButtonShowUpdateLeft; - ToggleButton* m_bpButtonShowCreateLeft; - ToggleButton* m_bpButtonShowLeftOnly; - ToggleButton* m_bpButtonShowLeftNewer; - ToggleButton* m_bpButtonShowEqual; - ToggleButton* m_bpButtonShowDoNothing; - ToggleButton* m_bpButtonShowDifferent; - ToggleButton* m_bpButtonShowRightNewer; - ToggleButton* m_bpButtonShowRightOnly; - ToggleButton* m_bpButtonShowCreateRight; - ToggleButton* m_bpButtonShowUpdateRight; - ToggleButton* m_bpButtonShowDeleteRight; - ToggleButton* m_bpButtonShowConflict; - wxStaticText* m_staticText96; - wxPanel* m_panelStatistics; - wxBoxSizer* bSizer1801; - wxStaticBitmap* m_bitmapDeleteLeft; - wxStaticText* m_staticTextDeleteLeft; - wxStaticBitmap* m_bitmapUpdateLeft; - wxStaticText* m_staticTextUpdateLeft; - wxStaticBitmap* m_bitmapCreateLeft; - wxStaticText* m_staticTextCreateLeft; - wxStaticBitmap* m_bitmapData; - wxStaticText* m_staticTextData; - wxStaticBitmap* m_bitmapCreateRight; - wxStaticText* m_staticTextCreateRight; - wxStaticBitmap* m_bitmapUpdateRight; - wxStaticText* m_staticTextUpdateRight; - wxStaticBitmap* m_bitmapDeleteRight; - wxStaticText* m_staticTextDeleteRight; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnConfigNew( wxCommandEvent& event ) { event.Skip(); } - virtual void OnConfigLoad( wxCommandEvent& event ) { event.Skip(); } - virtual void OnConfigSave( wxCommandEvent& event ) { event.Skip(); } - virtual void OnConfigSaveAs( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSaveAsBatchJob( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuQuit( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCompare( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCmpSettings( wxCommandEvent& event ) { event.Skip(); } - virtual void OnConfigureFilter( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncSettings( wxCommandEvent& event ) { event.Skip(); } - virtual void OnStartSync( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuOptions( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuFindItem( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuResetLayout( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } - virtual void OnShowHelp( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuAbout( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCompSettingsContext( wxMouseEvent& event ) { event.Skip(); } - virtual void OnCompSettingsContext( wxCommandEvent& event ) { event.Skip(); } - virtual void OnGlobalFilterContext( wxMouseEvent& event ) { event.Skip(); } - virtual void OnGlobalFilterContext( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncSettingsContext( wxMouseEvent& event ) { event.Skip(); } - virtual void OnSyncSettingsContext( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTopFolderPairAdd( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTopFolderPairRemove( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSwapSides( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTopLocalCompCfg( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTopLocalFilterCfg( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTopLocalSyncCfg( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHideSearchPanel( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSearchGridEnter( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCfgHistoryKeyEvent( wxKeyEvent& event ) { event.Skip(); } - virtual void OnLoadFromHistory( wxCommandEvent& event ) { event.Skip(); } - virtual void OnLoadFromHistoryDoubleClick( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCfgHistoryRightClick( wxMouseEvent& event ) { event.Skip(); } - virtual void OnToggleViewType( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleViewButton( wxCommandEvent& event ) { event.Skip(); } - virtual void OnViewButtonRightClick( wxMouseEvent& event ) { event.Skip(); } - - -public: - wxPanel* m_panelTopLeft; - wxBitmapButton* m_bpButtonRemovePair; - FolderHistoryBox* m_folderPathLeft; - wxBitmapButton* m_bpButtonSelectAltFolderLeft; - wxBitmapButton* m_bpButtonAltCompCfg; - wxBitmapButton* m_bpButtonLocalFilter; - wxBitmapButton* m_bpButtonAltSyncCfg; - wxPanel* m_panelTopRight; - FolderHistoryBox* m_folderPathRight; - wxBitmapButton* m_bpButtonSelectAltFolderRight; - wxBoxSizer* bSizerStatistics; - wxBoxSizer* bSizerData; - - MainDialogGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("dummy"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 900,600 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); - - ~MainDialogGenerated(); - + private: + + protected: + wxMenuBar* m_menubar1; + wxMenu* m_menuFile; + wxMenuItem* m_menuItemNew; + wxMenuItem* m_menuItemLoad; + wxMenuItem* m_menuItemSave; + wxMenuItem* m_menuItemSaveAs; + wxMenuItem* m_menuItemSaveAsBatch; + wxMenu* m_menu4; + wxMenuItem* m_menuItemCompare; + wxMenuItem* m_menuItemCompSettings; + wxMenuItem* m_menuItemFilter; + wxMenuItem* m_menuItemSyncSettings; + wxMenuItem* m_menuItemSynchronize; + wxMenu* m_menuTools; + wxMenuItem* m_menuItemOptions; + wxMenu* m_menuLanguages; + wxMenu* m_menuHelp; + wxMenuItem* m_menuItemHelp; + wxMenu* m_menuCheckVersion; + wxMenuItem* m_menuItemCheckVersionNow; + wxMenuItem* m_menuItemCheckVersionAuto; + wxMenuItem* m_menuItemAbout; + wxBoxSizer* bSizerPanelHolder; + wxPanel* m_panelTopButtons; + wxBoxSizer* bSizerTopButtons; + zen::BitmapTextButton* m_buttonCancel; + zen::BitmapTextButton* m_buttonCompare; + wxBitmapButton* m_bpButtonCmpConfig; + wxBitmapButton* m_bpButtonCmpContext; + wxBitmapButton* m_bpButtonFilter; + wxBitmapButton* m_bpButtonFilterContext; + wxBitmapButton* m_bpButtonSyncConfig; + wxBitmapButton* m_bpButtonSyncContext; + zen::BitmapTextButton* m_buttonSync; + wxPanel* m_panelDirectoryPairs; + wxStaticText* m_staticTextResolvedPathL; + wxBitmapButton* m_bpButtonAddPair; + wxButton* m_buttonSelectFolderLeft; + wxPanel* m_panelTopCenter; + wxBitmapButton* m_bpButtonSwapSides; + wxStaticText* m_staticTextResolvedPathR; + wxButton* m_buttonSelectFolderRight; + wxScrolledWindow* m_scrolledWindowFolderPairs; + wxBoxSizer* bSizerAddFolderPairs; + zen::Grid* m_gridNavi; + wxPanel* m_panelCenter; + zen::TripleSplitter* m_splitterMain; + zen::Grid* m_gridMainL; + zen::Grid* m_gridMainC; + zen::Grid* m_gridMainR; + wxPanel* m_panelStatusBar; + wxBoxSizer* bSizerFileStatus; + wxBoxSizer* bSizerStatusLeft; + wxBoxSizer* bSizerStatusLeftDirectories; + wxStaticBitmap* m_bitmapSmallDirectoryLeft; + wxStaticText* m_staticTextStatusLeftDirs; + wxBoxSizer* bSizerStatusLeftFiles; + wxStaticBitmap* m_bitmapSmallFileLeft; + wxStaticText* m_staticTextStatusLeftFiles; + wxStaticText* m_staticTextStatusLeftBytes; + wxStaticLine* m_staticline9; + wxStaticText* m_staticTextStatusCenter; + wxBoxSizer* bSizerStatusRight; + wxStaticLine* m_staticline10; + wxBoxSizer* bSizerStatusRightDirectories; + wxStaticBitmap* m_bitmapSmallDirectoryRight; + wxStaticText* m_staticTextStatusRightDirs; + wxBoxSizer* bSizerStatusRightFiles; + wxStaticBitmap* m_bitmapSmallFileRight; + wxStaticText* m_staticTextStatusRightFiles; + wxStaticText* m_staticTextStatusRightBytes; + wxStaticText* m_staticTextFullStatus; + wxPanel* m_panelSearch; + wxBitmapButton* m_bpButtonHideSearch; + wxStaticText* m_staticText101; + wxTextCtrl* m_textCtrlSearchTxt; + wxCheckBox* m_checkBoxMatchCase; + wxPanel* m_panelConfig; + wxBoxSizer* bSizerConfig; + wxBitmapButton* m_bpButtonNew; + wxStaticText* m_staticText951; + wxBitmapButton* m_bpButtonOpen; + wxStaticText* m_staticText95; + wxBitmapButton* m_bpButtonSave; + wxStaticText* m_staticText961; + wxBitmapButton* m_bpButtonSaveAs; + wxBitmapButton* m_bpButtonSaveAsBatch; + wxStaticText* m_staticText97; + wxListBox* m_listBoxHistory; + wxPanel* m_panelViewFilter; + wxBoxSizer* bSizerViewFilter; + wxStaticText* m_staticTextViewType; + ToggleButton* m_bpButtonViewTypeSyncAction; + ToggleButton* m_bpButtonShowExcluded; + wxStaticText* m_staticTextSelectView; + ToggleButton* m_bpButtonShowDeleteLeft; + ToggleButton* m_bpButtonShowUpdateLeft; + ToggleButton* m_bpButtonShowCreateLeft; + ToggleButton* m_bpButtonShowLeftOnly; + ToggleButton* m_bpButtonShowLeftNewer; + ToggleButton* m_bpButtonShowEqual; + ToggleButton* m_bpButtonShowDoNothing; + ToggleButton* m_bpButtonShowDifferent; + ToggleButton* m_bpButtonShowRightNewer; + ToggleButton* m_bpButtonShowRightOnly; + ToggleButton* m_bpButtonShowCreateRight; + ToggleButton* m_bpButtonShowUpdateRight; + ToggleButton* m_bpButtonShowDeleteRight; + ToggleButton* m_bpButtonShowConflict; + wxStaticText* m_staticText96; + wxPanel* m_panelStatistics; + wxBoxSizer* bSizer1801; + wxStaticBitmap* m_bitmapDeleteLeft; + wxStaticText* m_staticTextDeleteLeft; + wxStaticBitmap* m_bitmapUpdateLeft; + wxStaticText* m_staticTextUpdateLeft; + wxStaticBitmap* m_bitmapCreateLeft; + wxStaticText* m_staticTextCreateLeft; + wxStaticBitmap* m_bitmapData; + wxStaticText* m_staticTextData; + wxStaticBitmap* m_bitmapCreateRight; + wxStaticText* m_staticTextCreateRight; + wxStaticBitmap* m_bitmapUpdateRight; + wxStaticText* m_staticTextUpdateRight; + wxStaticBitmap* m_bitmapDeleteRight; + wxStaticText* m_staticTextDeleteRight; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnConfigNew( wxCommandEvent& event ) { event.Skip(); } + virtual void OnConfigLoad( wxCommandEvent& event ) { event.Skip(); } + virtual void OnConfigSave( wxCommandEvent& event ) { event.Skip(); } + virtual void OnConfigSaveAs( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSaveAsBatchJob( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuQuit( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCompare( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCmpSettings( wxCommandEvent& event ) { event.Skip(); } + virtual void OnConfigureFilter( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncSettings( wxCommandEvent& event ) { event.Skip(); } + virtual void OnStartSync( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuOptions( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuFindItem( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuResetLayout( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } + virtual void OnShowHelp( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); } + virtual void OnMenuAbout( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCompSettingsContext( wxMouseEvent& event ) { event.Skip(); } + virtual void OnCompSettingsContext( wxCommandEvent& event ) { event.Skip(); } + virtual void OnGlobalFilterContext( wxMouseEvent& event ) { event.Skip(); } + virtual void OnGlobalFilterContext( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncSettingsContext( wxMouseEvent& event ) { event.Skip(); } + virtual void OnSyncSettingsContext( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTopFolderPairAdd( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTopFolderPairRemove( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSwapSides( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTopLocalCompCfg( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTopLocalFilterCfg( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTopLocalSyncCfg( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHideSearchPanel( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSearchGridEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCfgHistoryKeyEvent( wxKeyEvent& event ) { event.Skip(); } + virtual void OnLoadFromHistory( wxCommandEvent& event ) { event.Skip(); } + virtual void OnLoadFromHistoryDoubleClick( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCfgHistoryRightClick( wxMouseEvent& event ) { event.Skip(); } + virtual void OnToggleViewType( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleViewButton( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViewButtonRightClick( wxMouseEvent& event ) { event.Skip(); } + + + public: + wxPanel* m_panelTopLeft; + wxBitmapButton* m_bpButtonRemovePair; + FolderHistoryBox* m_folderPathLeft; + wxBitmapButton* m_bpButtonSelectAltFolderLeft; + wxBitmapButton* m_bpButtonAltCompCfg; + wxBitmapButton* m_bpButtonLocalFilter; + wxBitmapButton* m_bpButtonAltSyncCfg; + wxPanel* m_panelTopRight; + FolderHistoryBox* m_folderPathRight; + wxBitmapButton* m_bpButtonSelectAltFolderRight; + wxBoxSizer* bSizerStatistics; + wxBoxSizer* bSizerData; + + MainDialogGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("dummy"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 900,600 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); + + ~MainDialogGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class ConfigDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class ConfigDlgGenerated : public wxDialog +class ConfigDlgGenerated : public wxDialog { -private: - -protected: - wxStaticText* m_staticTextFolderPairLabel; - wxListBox* m_listBoxFolderPair; - wxNotebook* m_notebook; - wxPanel* m_panelCompSettingsHolder; - wxBoxSizer* bSizerHeaderCompSettings; - wxStaticText* m_staticTextMainCompSettings; - wxCheckBox* m_checkBoxUseLocalCmpOptions; - wxStaticLine* m_staticlineCompHeader; - wxPanel* m_panelComparisonSettings; - wxStaticText* m_staticText91; - wxStaticBitmap* m_bitmapByTimeSize; - wxToggleButton* m_toggleBtnByTimeSize; - wxStaticBitmap* m_bitmapByContent; - wxToggleButton* m_toggleBtnByContent; - wxStaticBitmap* m_bitmapBySize; - wxToggleButton* m_toggleBtnBySize; - wxStaticLine* m_staticline42; - wxTextCtrl* m_textCtrlCompVarDescription; - wxStaticLine* m_staticline33; - wxCheckBox* m_checkBoxSymlinksInclude; - wxRadioButton* m_radioBtnSymlinksFollow; - wxRadioButton* m_radioBtnSymlinksDirect; - wxHyperlinkCtrl* m_hyperlink24; - wxStaticLine* m_staticline44; - wxStaticText* m_staticText112; - wxTextCtrl* m_textCtrlTimeShift; - wxStaticText* m_staticText1381; - wxStaticText* m_staticText13811; - wxHyperlinkCtrl* m_hyperlink241; - wxStaticLine* m_staticline441; - wxStaticLine* m_staticline331; - wxPanel* m_panelFilterSettingsHolder; - wxBoxSizer* bSizerHeaderFilterSettings; - wxStaticText* m_staticTextMainFilterSettings; - wxStaticText* m_staticTextLocalFilterSettings; - wxStaticLine* m_staticlineFilterHeader; - wxPanel* m_panelFilterSettings; - wxStaticBitmap* m_bitmapInclude; - wxStaticText* m_staticText78; - wxTextCtrl* m_textCtrlInclude; - wxStaticLine* m_staticline22; - wxStaticBitmap* m_bitmapExclude; - wxStaticText* m_staticText77; - wxHyperlinkCtrl* m_hyperlink171; - wxTextCtrl* m_textCtrlExclude; - wxStaticLine* m_staticline24; - wxStaticBitmap* m_bitmapFilterDate; - wxStaticText* m_staticText79; - wxSpinCtrl* m_spinCtrlTimespan; - wxChoice* m_choiceUnitTimespan; - wxStaticLine* m_staticline23; - wxStaticBitmap* m_bitmapFilterSize; - wxStaticText* m_staticText80; - wxStaticText* m_staticText101; - wxSpinCtrl* m_spinCtrlMinSize; - wxChoice* m_choiceUnitMinSize; - wxStaticText* m_staticText102; - wxSpinCtrl* m_spinCtrlMaxSize; - wxChoice* m_choiceUnitMaxSize; - wxStaticLine* m_staticline62; - wxStaticText* m_staticText44; - wxStaticLine* m_staticline46; - wxButton* m_buttonClear; - wxPanel* m_panelSyncSettingsHolder; - wxBoxSizer* bSizerHeaderSyncSettings; - wxStaticText* m_staticTextMainSyncSettings; - wxCheckBox* m_checkBoxUseLocalSyncOptions; - wxStaticLine* m_staticlineSyncHeader; - wxPanel* m_panelSyncSettings; - wxStaticText* m_staticText86; - wxToggleButton* m_toggleBtnTwoWay; - wxToggleButton* m_toggleBtnMirror; - wxToggleButton* m_toggleBtnUpdate; - wxToggleButton* m_toggleBtnCustom; - wxStaticLine* m_staticline53; - wxBoxSizer* bSizerSyncConfig; - wxStaticText* m_staticText119; - wxStaticText* m_staticText120; - wxFlexGridSizer* fgSizerSyncDirections; - wxStaticBitmap* m_bitmapLeftOnly; - wxStaticBitmap* m_bitmapLeftNewer; - wxStaticBitmap* m_bitmapDifferent; - wxStaticBitmap* m_bitmapConflict; - wxStaticBitmap* m_bitmapRightNewer; - wxStaticBitmap* m_bitmapRightOnly; - wxBitmapButton* m_bpButtonLeftOnly; - wxBitmapButton* m_bpButtonLeftNewer; - wxBitmapButton* m_bpButtonDifferent; - wxBitmapButton* m_bpButtonConflict; - wxBitmapButton* m_bpButtonRightNewer; - wxBitmapButton* m_bpButtonRightOnly; - wxStaticBitmap* m_bitmapDatabase; - wxStaticLine* m_staticline431; - wxCheckBox* m_checkBoxDetectMove; - wxHyperlinkCtrl* m_hyperlink242; - wxStaticLine* m_staticline531; - wxTextCtrl* m_textCtrlSyncVarDescription; - wxStaticLine* m_staticline54; - wxBoxSizer* bSizerDelHandling; - wxStaticText* m_staticText87; - wxBitmapButton* m_bpButtonDeletionType; - wxRadioButton* m_radioBtnRecycler; - wxRadioButton* m_radioBtnPermanent; - wxRadioButton* m_radioBtnVersioning; - wxPanel* m_panelVersioning; - FolderHistoryBox* m_versioningFolderPath; - wxButton* m_buttonSelectVersioningFolder; - wxStaticText* m_staticText93; - wxHyperlinkCtrl* m_hyperlink17; - wxBoxSizer* bSizer192; - wxChoice* m_choiceVersioningStyle; - wxStaticText* m_staticTextNamingCvtPart1; - wxStaticText* m_staticTextNamingCvtPart2Bold; - wxStaticText* m_staticTextNamingCvtPart3; - wxStaticLine* m_staticline582; - wxBoxSizer* bSizerMiscConfig; - wxStaticText* m_staticText88; - wxRadioButton* m_radioBtnPopupOnErrors; - wxRadioButton* m_radioBtnIgnoreErrors; - wxStaticLine* m_staticline57; - wxBoxSizer* bSizerOnCompletion; - wxStaticText* m_staticText89; - OnCompletionBox* m_comboBoxOnCompletion; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonOkay; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void onListBoxKeyEvent( wxKeyEvent& event ) { event.Skip(); } - virtual void OnSelectFolderPair( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleLocalCompSettings( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCompByTimeSizeDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnCompByTimeSize( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCompByContentDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnCompByContent( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCompBySizeDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnCompBySize( wxCommandEvent& event ) { event.Skip(); } - virtual void OnChangeCompOption( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpComparisonSettings( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void onlTimeShiftKeyDown( wxKeyEvent& event ) { event.Skip(); } - virtual void OnHelpTimeShift( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnChangeFilterOption( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpShowExamples( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnFilterReset( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleLocalSyncSettings( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncTwoWayDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnSyncTwoWay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncMirrorDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnSyncMirror( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncUpdateDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnSyncUpdate( wxCommandEvent& event ) { event.Skip(); } - virtual void OnSyncCustomDouble( wxMouseEvent& event ) { event.Skip(); } - virtual void OnSyncCustom( wxCommandEvent& event ) { event.Skip(); } - virtual void OnExLeftSideOnly( wxCommandEvent& event ) { event.Skip(); } - virtual void OnLeftNewer( wxCommandEvent& event ) { event.Skip(); } - virtual void OnDifferent( wxCommandEvent& event ) { event.Skip(); } - virtual void OnConflict( wxCommandEvent& event ) { event.Skip(); } - virtual void OnRightNewer( wxCommandEvent& event ) { event.Skip(); } - virtual void OnExRightSideOnly( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleDetectMovedFiles( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpDetectMovedFiles( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnToggleDeletionType( wxCommandEvent& event ) { event.Skip(); } - virtual void OnDeletionRecycler( wxCommandEvent& event ) { event.Skip(); } - virtual void OnDeletionPermanent( wxCommandEvent& event ) { event.Skip(); } - virtual void OnDeletionVersioning( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpVersioning( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnChangeSyncOption( wxCommandEvent& event ) { event.Skip(); } - virtual void OnErrorPopup( wxCommandEvent& event ) { event.Skip(); } - virtual void OnErrorIgnore( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - wxBitmapButton* m_bpButtonSelectAltFolder; - - ConfigDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("dummy"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); - ~ConfigDlgGenerated(); - + private: + + protected: + wxStaticText* m_staticTextFolderPairLabel; + wxListBox* m_listBoxFolderPair; + wxNotebook* m_notebook; + wxPanel* m_panelCompSettingsHolder; + wxBoxSizer* bSizerHeaderCompSettings; + wxStaticText* m_staticTextMainCompSettings; + wxCheckBox* m_checkBoxUseLocalCmpOptions; + wxStaticLine* m_staticlineCompHeader; + wxPanel* m_panelComparisonSettings; + wxStaticText* m_staticText91; + wxStaticBitmap* m_bitmapByTimeSize; + wxToggleButton* m_toggleBtnByTimeSize; + wxStaticBitmap* m_bitmapByContent; + wxToggleButton* m_toggleBtnByContent; + wxStaticBitmap* m_bitmapBySize; + wxToggleButton* m_toggleBtnBySize; + wxStaticLine* m_staticline42; + wxTextCtrl* m_textCtrlCompVarDescription; + wxStaticLine* m_staticline33; + wxCheckBox* m_checkBoxSymlinksInclude; + wxRadioButton* m_radioBtnSymlinksFollow; + wxRadioButton* m_radioBtnSymlinksDirect; + wxHyperlinkCtrl* m_hyperlink24; + wxStaticLine* m_staticline44; + wxStaticText* m_staticText112; + wxTextCtrl* m_textCtrlTimeShift; + wxStaticText* m_staticText1381; + wxStaticText* m_staticText13811; + wxHyperlinkCtrl* m_hyperlink241; + wxStaticLine* m_staticline441; + wxStaticLine* m_staticline331; + wxPanel* m_panelFilterSettingsHolder; + wxBoxSizer* bSizerHeaderFilterSettings; + wxStaticText* m_staticTextMainFilterSettings; + wxStaticText* m_staticTextLocalFilterSettings; + wxStaticLine* m_staticlineFilterHeader; + wxPanel* m_panelFilterSettings; + wxStaticBitmap* m_bitmapInclude; + wxStaticText* m_staticText78; + wxTextCtrl* m_textCtrlInclude; + wxStaticLine* m_staticline22; + wxStaticBitmap* m_bitmapExclude; + wxStaticText* m_staticText77; + wxHyperlinkCtrl* m_hyperlink171; + wxTextCtrl* m_textCtrlExclude; + wxStaticLine* m_staticline24; + wxStaticBitmap* m_bitmapFilterDate; + wxStaticText* m_staticText79; + wxSpinCtrl* m_spinCtrlTimespan; + wxChoice* m_choiceUnitTimespan; + wxStaticLine* m_staticline23; + wxStaticBitmap* m_bitmapFilterSize; + wxStaticText* m_staticText80; + wxStaticText* m_staticText101; + wxSpinCtrl* m_spinCtrlMinSize; + wxChoice* m_choiceUnitMinSize; + wxStaticText* m_staticText102; + wxSpinCtrl* m_spinCtrlMaxSize; + wxChoice* m_choiceUnitMaxSize; + wxStaticLine* m_staticline62; + wxStaticText* m_staticText44; + wxStaticLine* m_staticline46; + wxButton* m_buttonClear; + wxPanel* m_panelSyncSettingsHolder; + wxBoxSizer* bSizerHeaderSyncSettings; + wxStaticText* m_staticTextMainSyncSettings; + wxCheckBox* m_checkBoxUseLocalSyncOptions; + wxStaticLine* m_staticlineSyncHeader; + wxPanel* m_panelSyncSettings; + wxStaticText* m_staticText86; + wxToggleButton* m_toggleBtnTwoWay; + wxToggleButton* m_toggleBtnMirror; + wxToggleButton* m_toggleBtnUpdate; + wxToggleButton* m_toggleBtnCustom; + wxStaticLine* m_staticline53; + wxBoxSizer* bSizerSyncConfig; + wxStaticText* m_staticText119; + wxStaticText* m_staticText120; + wxFlexGridSizer* fgSizerSyncDirections; + wxStaticBitmap* m_bitmapLeftOnly; + wxStaticBitmap* m_bitmapLeftNewer; + wxStaticBitmap* m_bitmapDifferent; + wxStaticBitmap* m_bitmapConflict; + wxStaticBitmap* m_bitmapRightNewer; + wxStaticBitmap* m_bitmapRightOnly; + wxBitmapButton* m_bpButtonLeftOnly; + wxBitmapButton* m_bpButtonLeftNewer; + wxBitmapButton* m_bpButtonDifferent; + wxBitmapButton* m_bpButtonConflict; + wxBitmapButton* m_bpButtonRightNewer; + wxBitmapButton* m_bpButtonRightOnly; + wxStaticBitmap* m_bitmapDatabase; + wxStaticLine* m_staticline431; + wxCheckBox* m_checkBoxDetectMove; + wxHyperlinkCtrl* m_hyperlink242; + wxStaticLine* m_staticline531; + wxTextCtrl* m_textCtrlSyncVarDescription; + wxStaticLine* m_staticline54; + wxBoxSizer* bSizerDelHandling; + wxStaticText* m_staticText87; + wxBitmapButton* m_bpButtonDeletionType; + wxRadioButton* m_radioBtnRecycler; + wxRadioButton* m_radioBtnPermanent; + wxRadioButton* m_radioBtnVersioning; + wxPanel* m_panelVersioning; + FolderHistoryBox* m_versioningFolderPath; + wxButton* m_buttonSelectVersioningFolder; + wxStaticText* m_staticText93; + wxHyperlinkCtrl* m_hyperlink17; + wxBoxSizer* bSizer192; + wxChoice* m_choiceVersioningStyle; + wxStaticText* m_staticTextNamingCvtPart1; + wxStaticText* m_staticTextNamingCvtPart2Bold; + wxStaticText* m_staticTextNamingCvtPart3; + wxStaticLine* m_staticline582; + wxBoxSizer* bSizerMiscConfig; + wxStaticText* m_staticText88; + wxRadioButton* m_radioBtnPopupOnErrors; + wxRadioButton* m_radioBtnIgnoreErrors; + wxStaticLine* m_staticline57; + wxBoxSizer* bSizerOnCompletion; + wxStaticText* m_staticText89; + OnCompletionBox* m_comboBoxOnCompletion; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonOkay; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void onListBoxKeyEvent( wxKeyEvent& event ) { event.Skip(); } + virtual void OnSelectFolderPair( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleLocalCompSettings( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCompByTimeSizeDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnCompByTimeSize( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCompByContentDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnCompByContent( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCompBySizeDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnCompBySize( wxCommandEvent& event ) { event.Skip(); } + virtual void OnChangeCompOption( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpComparisonSettings( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void onlTimeShiftKeyDown( wxKeyEvent& event ) { event.Skip(); } + virtual void OnHelpTimeShift( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnChangeFilterOption( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpShowExamples( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnFilterReset( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleLocalSyncSettings( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncTwoWayDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnSyncTwoWay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncMirrorDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnSyncMirror( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncUpdateDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnSyncUpdate( wxCommandEvent& event ) { event.Skip(); } + virtual void OnSyncCustomDouble( wxMouseEvent& event ) { event.Skip(); } + virtual void OnSyncCustom( wxCommandEvent& event ) { event.Skip(); } + virtual void OnExLeftSideOnly( wxCommandEvent& event ) { event.Skip(); } + virtual void OnLeftNewer( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDifferent( wxCommandEvent& event ) { event.Skip(); } + virtual void OnConflict( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRightNewer( wxCommandEvent& event ) { event.Skip(); } + virtual void OnExRightSideOnly( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleDetectMovedFiles( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpDetectMovedFiles( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnToggleDeletionType( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDeletionRecycler( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDeletionPermanent( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDeletionVersioning( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpVersioning( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnChangeSyncOption( wxCommandEvent& event ) { event.Skip(); } + virtual void OnErrorPopup( wxCommandEvent& event ) { event.Skip(); } + virtual void OnErrorIgnore( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + wxBitmapButton* m_bpButtonSelectAltFolder; + + ConfigDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("dummy"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + ~ConfigDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class FolderPairPanelGenerated /////////////////////////////////////////////////////////////////////////////// -class FolderPairPanelGenerated : public wxPanel +class FolderPairPanelGenerated : public wxPanel { -private: - -protected: - wxButton* m_buttonSelectFolderLeft; - wxButton* m_buttonSelectFolderRight; - -public: - wxPanel* m_panelLeft; - wxBitmapButton* m_bpButtonFolderPairOptions; - wxBitmapButton* m_bpButtonRemovePair; - FolderHistoryBox* m_folderPathLeft; - wxBitmapButton* m_bpButtonSelectAltFolderLeft; - wxPanel* m_panel20; - wxBitmapButton* m_bpButtonAltCompCfg; - wxBitmapButton* m_bpButtonLocalFilter; - wxBitmapButton* m_bpButtonAltSyncCfg; - wxPanel* m_panelRight; - FolderHistoryBox* m_folderPathRight; - wxBitmapButton* m_bpButtonSelectAltFolderRight; - - FolderPairPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0 ); - ~FolderPairPanelGenerated(); - + private: + + protected: + wxButton* m_buttonSelectFolderLeft; + wxButton* m_buttonSelectFolderRight; + + public: + wxPanel* m_panelLeft; + wxBitmapButton* m_bpButtonFolderPairOptions; + wxBitmapButton* m_bpButtonRemovePair; + FolderHistoryBox* m_folderPathLeft; + wxBitmapButton* m_bpButtonSelectAltFolderLeft; + wxPanel* m_panel20; + wxBitmapButton* m_bpButtonAltCompCfg; + wxBitmapButton* m_bpButtonLocalFilter; + wxBitmapButton* m_bpButtonAltSyncCfg; + wxPanel* m_panelRight; + FolderHistoryBox* m_folderPathRight; + wxBitmapButton* m_bpButtonSelectAltFolderRight; + + FolderPairPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0 ); + ~FolderPairPanelGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class SftpSetupDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class SftpSetupDlgGenerated : public wxDialog +class SftpSetupDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapSftp; - wxStaticText* m_staticTextHeader; - wxStaticLine* m_staticline371; - wxPanel* m_panel41; - wxStaticText* m_staticText12311; - wxTextCtrl* m_textCtrlServer; - wxStaticText* m_staticText1233; - wxTextCtrl* m_textCtrlPort; - wxStaticText* m_staticText1381; - wxStaticText* m_staticText1382; - wxStaticText* m_staticText138; - wxStaticText* m_staticText123; - wxTextCtrl* m_textCtrlUserName; - wxStaticText* m_staticText1231; - wxTextCtrl* m_textCtrlPasswordVisible; - wxTextCtrl* m_textCtrlPasswordHidden; - wxCheckBox* m_checkBoxShowPassword; - wxStaticText* m_staticText1232; - wxTextCtrl* m_textCtrlServerPath; - wxButton* m_buttonSelectFolder; - wxStaticLine* m_staticline12; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonOkay; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnToggleShowPassword( wxCommandEvent& event ) { event.Skip(); } - virtual void OnBrowseSftpFolder( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - SftpSetupDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SSH File Transfer Protocol"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); - ~SftpSetupDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapSftp; + wxStaticText* m_staticTextHeader; + wxStaticLine* m_staticline371; + wxPanel* m_panel41; + wxStaticText* m_staticText12311; + wxTextCtrl* m_textCtrlServer; + wxStaticText* m_staticText1233; + wxTextCtrl* m_textCtrlPort; + wxStaticText* m_staticText1381; + wxStaticText* m_staticText1382; + wxStaticText* m_staticText138; + wxStaticText* m_staticText123; + wxTextCtrl* m_textCtrlUserName; + wxStaticText* m_staticText1231; + wxTextCtrl* m_textCtrlPasswordVisible; + wxTextCtrl* m_textCtrlPasswordHidden; + wxCheckBox* m_checkBoxShowPassword; + wxStaticText* m_staticText1232; + wxTextCtrl* m_textCtrlServerPath; + wxButton* m_buttonSelectFolder; + wxStaticLine* m_staticline12; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonOkay; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnToggleShowPassword( wxCommandEvent& event ) { event.Skip(); } + virtual void OnBrowseSftpFolder( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + SftpSetupDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SSH File Transfer Protocol"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + ~SftpSetupDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class SftpFolderPickerGenerated /////////////////////////////////////////////////////////////////////////////// -class SftpFolderPickerGenerated : public wxDialog +class SftpFolderPickerGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapSftp; - wxStaticText* m_staticTextHeader; - wxStaticLine* m_staticline371; - wxPanel* m_panel41; - wxTreeCtrl* m_treeCtrlFileSystem; - wxStaticLine* m_staticline12; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonOkay; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnExpandNode( wxTreeEvent& event ) { event.Skip(); } - virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - SftpFolderPickerGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SSH File Transfer Protocol"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); - ~SftpFolderPickerGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapSftp; + wxStaticText* m_staticTextHeader; + wxStaticLine* m_staticline371; + wxPanel* m_panel41; + wxTreeCtrl* m_treeCtrlFileSystem; + wxStaticLine* m_staticline12; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonOkay; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnExpandNode( wxTreeEvent& event ) { event.Skip(); } + virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + SftpFolderPickerGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SSH File Transfer Protocol"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + ~SftpFolderPickerGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class SyncConfirmationDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class SyncConfirmationDlgGenerated : public wxDialog +class SyncConfirmationDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapSync; - wxStaticText* m_staticTextHeader; - wxStaticLine* m_staticline371; - wxPanel* m_panelStatistics; - wxStaticLine* m_staticline38; - wxStaticText* m_staticText84; - wxStaticText* m_staticTextVariant; - wxStaticLine* m_staticline14; - wxStaticText* m_staticText83; - wxStaticBitmap* m_bitmapDeleteLeft; - wxStaticBitmap* m_bitmapUpdateLeft; - wxStaticBitmap* m_bitmapCreateLeft; - wxStaticBitmap* m_bitmapData; - wxStaticBitmap* m_bitmapCreateRight; - wxStaticBitmap* m_bitmapUpdateRight; - wxStaticBitmap* m_bitmapDeleteRight; - wxStaticText* m_staticTextDeleteLeft; - wxStaticText* m_staticTextUpdateLeft; - wxStaticText* m_staticTextCreateLeft; - wxStaticText* m_staticTextData; - wxStaticText* m_staticTextCreateRight; - wxStaticText* m_staticTextUpdateRight; - wxStaticText* m_staticTextDeleteRight; - wxStaticLine* m_staticline381; - wxStaticLine* m_staticline12; - wxCheckBox* m_checkBoxDontShowAgain; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonStartSync; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnStartSync( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - SyncConfirmationDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("FreeFileSync"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); - ~SyncConfirmationDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapSync; + wxStaticText* m_staticTextHeader; + wxStaticLine* m_staticline371; + wxPanel* m_panelStatistics; + wxStaticLine* m_staticline38; + wxStaticText* m_staticText84; + wxStaticText* m_staticTextVariant; + wxStaticLine* m_staticline14; + wxStaticText* m_staticText83; + wxStaticBitmap* m_bitmapDeleteLeft; + wxStaticBitmap* m_bitmapUpdateLeft; + wxStaticBitmap* m_bitmapCreateLeft; + wxStaticBitmap* m_bitmapData; + wxStaticBitmap* m_bitmapCreateRight; + wxStaticBitmap* m_bitmapUpdateRight; + wxStaticBitmap* m_bitmapDeleteRight; + wxStaticText* m_staticTextDeleteLeft; + wxStaticText* m_staticTextUpdateLeft; + wxStaticText* m_staticTextCreateLeft; + wxStaticText* m_staticTextData; + wxStaticText* m_staticTextCreateRight; + wxStaticText* m_staticTextUpdateRight; + wxStaticText* m_staticTextDeleteRight; + wxStaticLine* m_staticline381; + wxStaticLine* m_staticline12; + wxCheckBox* m_checkBoxDontShowAgain; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonStartSync; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnStartSync( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + SyncConfirmationDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("FreeFileSync"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); + ~SyncConfirmationDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class CompareProgressDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class CompareProgressDlgGenerated : public wxPanel +class CompareProgressDlgGenerated : public wxPanel { -private: - -protected: - wxPanel* m_panelStatistics; - wxStaticText* m_staticTextItemsFoundLabel; - wxStaticText* m_staticTextItemsFound; - wxStaticText* m_staticTextItemsRemainingLabel; - wxBoxSizer* bSizerItemsRemaining; - wxStaticText* m_staticTextItemsRemaining; - wxStaticText* m_staticTextDataRemaining; - wxStaticText* m_staticTextTimeRemainingLabel; - wxStaticText* m_staticTextTimeRemaining; - wxStaticText* m_staticTextTimeElapsed; - wxStaticText* m_staticTextStatus; - wxGauge* m_gauge2; - wxStaticText* m_staticTextSpeed; - -public: - - CompareProgressDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxRAISED_BORDER ); - ~CompareProgressDlgGenerated(); - + private: + + protected: + wxPanel* m_panelStatistics; + wxStaticText* m_staticTextItemsFoundLabel; + wxStaticText* m_staticTextItemsFound; + wxStaticText* m_staticTextItemsRemainingLabel; + wxBoxSizer* bSizerItemsRemaining; + wxStaticText* m_staticTextItemsRemaining; + wxStaticText* m_staticTextBytesRemaining; + wxStaticText* m_staticTextTimeRemainingLabel; + wxStaticText* m_staticTextTimeRemaining; + wxStaticText* m_staticTextTimeElapsed; + wxStaticText* m_staticTextStatus; + wxPanel* m_panelProgressLabel; + + public: + zen::Graph2D* m_panelGraphProgress; + + CompareProgressDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxRAISED_BORDER ); + ~CompareProgressDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class SyncProgressPanelGenerated /////////////////////////////////////////////////////////////////////////////// -class SyncProgressPanelGenerated : public wxPanel +class SyncProgressPanelGenerated : public wxPanel { -private: - -protected: - wxBoxSizer* bSizer42; - wxBoxSizer* bSizer171; - wxStaticText* m_staticText87; - -public: - wxBoxSizer* bSizerRoot; - wxStaticBitmap* m_bitmapStatus; - wxStaticText* m_staticTextPhase; - wxAnimationCtrl* m_animCtrlSyncing; - wxBitmapButton* m_bpButtonMinimizeToTray; - wxBoxSizer* bSizerStatusText; - wxStaticText* m_staticTextStatus; - wxPanel* m_panelProgress; - wxPanel* m_panelItemsProcessed; - wxStaticText* m_staticTextProcessedObj; - wxStaticText* m_staticTextDataProcessed; - wxPanel* m_panelItemsRemaining; - wxStaticText* m_staticTextRemainingObj; - wxStaticText* m_staticTextDataRemaining; - wxPanel* m_panelTimeRemaining; - wxStaticText* m_staticTextRemTime; - wxStaticText* m_staticTextTimeElapsed; - wxStaticBitmap* m_bitmapGraphKeyBytes; - zen::Graph2D* m_panelGraphBytes; - wxStaticBitmap* m_bitmapGraphKeyItems; - zen::Graph2D* m_panelGraphItems; - wxNotebook* m_notebookResult; - wxStaticLine* m_staticlineFooter; - wxBoxSizer* bSizerStdButtons; - wxBoxSizer* bSizerOnCompletion; - OnCompletionBox* m_comboBoxOnCompletion; - wxButton* m_buttonClose; - wxButton* m_buttonPause; - wxButton* m_buttonStop; - - SyncProgressPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL ); - ~SyncProgressPanelGenerated(); - + private: + + protected: + wxBoxSizer* bSizer42; + wxBoxSizer* bSizer171; + wxStaticText* m_staticText87; + + public: + wxBoxSizer* bSizerRoot; + wxStaticBitmap* m_bitmapStatus; + wxStaticText* m_staticTextPhase; + wxAnimationCtrl* m_animCtrlSyncing; + wxBitmapButton* m_bpButtonMinimizeToTray; + wxBoxSizer* bSizerStatusText; + wxStaticText* m_staticTextStatus; + wxPanel* m_panelProgress; + wxPanel* m_panelItemsProcessed; + wxStaticText* m_staticTextItemsProcessed; + wxStaticText* m_staticTextBytesProcessed; + wxPanel* m_panelItemsRemaining; + wxStaticText* m_staticTextItemsRemaining; + wxStaticText* m_staticTextBytesRemaining; + wxPanel* m_panelTimeRemaining; + wxStaticText* m_staticTextTimeRemaining; + wxStaticText* m_staticTextTimeElapsed; + wxStaticBitmap* m_bitmapGraphKeyBytes; + zen::Graph2D* m_panelGraphBytes; + wxStaticBitmap* m_bitmapGraphKeyItems; + zen::Graph2D* m_panelGraphItems; + wxNotebook* m_notebookResult; + wxStaticLine* m_staticlineFooter; + wxBoxSizer* bSizerStdButtons; + wxBoxSizer* bSizerOnCompletion; + OnCompletionBox* m_comboBoxOnCompletion; + wxButton* m_buttonClose; + wxButton* m_buttonPause; + wxButton* m_buttonStop; + + SyncProgressPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL ); + ~SyncProgressPanelGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class LogPanelGenerated /////////////////////////////////////////////////////////////////////////////// -class LogPanelGenerated : public wxPanel +class LogPanelGenerated : public wxPanel { -private: - -protected: - ToggleButton* m_bpButtonErrors; - ToggleButton* m_bpButtonWarnings; - ToggleButton* m_bpButtonInfo; - wxStaticLine* m_staticline13; - zen::Grid* m_gridMessages; - - // Virtual event handlers, overide them in your derived class - virtual void OnErrors( wxCommandEvent& event ) { event.Skip(); } - virtual void OnWarnings( wxCommandEvent& event ) { event.Skip(); } - virtual void OnInfo( wxCommandEvent& event ) { event.Skip(); } - - -public: - - LogPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL ); - ~LogPanelGenerated(); - + private: + + protected: + ToggleButton* m_bpButtonErrors; + ToggleButton* m_bpButtonWarnings; + ToggleButton* m_bpButtonInfo; + wxStaticLine* m_staticline13; + zen::Grid* m_gridMessages; + + // Virtual event handlers, overide them in your derived class + virtual void OnErrors( wxCommandEvent& event ) { event.Skip(); } + virtual void OnWarnings( wxCommandEvent& event ) { event.Skip(); } + virtual void OnInfo( wxCommandEvent& event ) { event.Skip(); } + + + public: + + LogPanelGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL ); + ~LogPanelGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class BatchDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class BatchDlgGenerated : public wxDialog +class BatchDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapBatchJob; - wxStaticText* m_staticTextDescr; - wxStaticLine* m_staticline18; - wxPanel* m_panel35; - wxStaticText* m_staticText82; - wxRadioButton* m_radioBtnPopupOnErrors; - wxRadioButton* m_radioBtnIgnoreErrors; - wxRadioButton* m_radioBtnStopOnError; - wxStaticLine* m_staticline26; - wxStaticText* m_staticText81; - OnCompletionBox* m_comboBoxOnCompletion; - wxCheckBox* m_checkBoxRunMinimized; - wxStaticLine* m_staticline25; - wxCheckBox* m_checkBoxGenerateLogfile; - wxPanel* m_panelLogfile; - wxButton* m_buttonSelectLogFolder; - wxCheckBox* m_checkBoxLogfilesLimit; - wxSpinCtrl* m_spinCtrlLogfileLimit; - wxHyperlinkCtrl* m_hyperlink17; - wxStaticLine* m_staticline13; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonSaveAs; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnErrorPopup( wxCommandEvent& event ) { event.Skip(); } - virtual void OnErrorIgnore( wxCommandEvent& event ) { event.Skip(); } - virtual void OnErrorStop( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleGenerateLogfile( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToggleLogfilesLimit( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpScheduleBatch( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnSaveBatchJob( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - FolderHistoryBox* m_logFolderPath; - wxBitmapButton* m_bpButtonSelectAltLogFolder; - - BatchDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Save as Batch Job"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); - ~BatchDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapBatchJob; + wxStaticText* m_staticTextDescr; + wxStaticLine* m_staticline18; + wxPanel* m_panel35; + wxStaticText* m_staticText82; + wxRadioButton* m_radioBtnPopupOnErrors; + wxRadioButton* m_radioBtnIgnoreErrors; + wxRadioButton* m_radioBtnStopOnError; + wxStaticLine* m_staticline26; + wxStaticText* m_staticText81; + OnCompletionBox* m_comboBoxOnCompletion; + wxCheckBox* m_checkBoxRunMinimized; + wxStaticLine* m_staticline25; + wxCheckBox* m_checkBoxGenerateLogfile; + wxPanel* m_panelLogfile; + wxButton* m_buttonSelectLogFolder; + wxCheckBox* m_checkBoxLogfilesLimit; + wxSpinCtrl* m_spinCtrlLogfileLimit; + wxHyperlinkCtrl* m_hyperlink17; + wxStaticLine* m_staticline13; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonSaveAs; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnErrorPopup( wxCommandEvent& event ) { event.Skip(); } + virtual void OnErrorIgnore( wxCommandEvent& event ) { event.Skip(); } + virtual void OnErrorStop( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleGenerateLogfile( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToggleLogfilesLimit( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpScheduleBatch( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnSaveBatchJob( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + FolderHistoryBox* m_logFolderPath; + wxBitmapButton* m_bpButtonSelectAltLogFolder; + + BatchDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Save as Batch Job"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~BatchDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class DeleteDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class DeleteDlgGenerated : public wxDialog +class DeleteDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapDeleteType; - wxStaticText* m_staticTextHeader; - wxStaticLine* m_staticline91; - wxPanel* m_panel31; - wxStaticLine* m_staticline42; - wxTextCtrl* m_textCtrlFileList; - wxStaticLine* m_staticline9; - wxBoxSizer* bSizerStdButtons; - wxCheckBox* m_checkBoxUseRecycler; - wxButton* m_buttonOK; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnUseRecycler( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - DeleteDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Delete Items"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); - ~DeleteDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapDeleteType; + wxStaticText* m_staticTextHeader; + wxStaticLine* m_staticline91; + wxPanel* m_panel31; + wxStaticLine* m_staticline42; + wxTextCtrl* m_textCtrlFileList; + wxStaticLine* m_staticline9; + wxBoxSizer* bSizerStdButtons; + wxCheckBox* m_checkBoxUseRecycler; + wxButton* m_buttonOK; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnUseRecycler( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + DeleteDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Delete Items"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + ~DeleteDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class CopyToDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class CopyToDlgGenerated : public wxDialog +class CopyToDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapCopyTo; - wxStaticText* m_staticTextHeader; - wxStaticLine* m_staticline91; - wxPanel* m_panel31; - wxStaticLine* m_staticline42; - wxTextCtrl* m_textCtrlFileList; - wxButton* m_buttonSelectTargetFolder; - wxStaticLine* m_staticline9; - wxBoxSizer* bSizerStdButtons; - wxCheckBox* m_checkBoxKeepRelPath; - wxCheckBox* m_checkBoxOverwriteIfExists; - wxButton* m_buttonOK; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnUseRecycler( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - FolderHistoryBox* m_targetFolderPath; - wxBitmapButton* m_bpButtonSelectAltTargetFolder; - - CopyToDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Copy items"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); - ~CopyToDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapCopyTo; + wxStaticText* m_staticTextHeader; + wxStaticLine* m_staticline91; + wxPanel* m_panel31; + wxStaticLine* m_staticline42; + wxTextCtrl* m_textCtrlFileList; + wxButton* m_buttonSelectTargetFolder; + wxStaticLine* m_staticline9; + wxBoxSizer* bSizerStdButtons; + wxCheckBox* m_checkBoxKeepRelPath; + wxCheckBox* m_checkBoxOverwriteIfExists; + wxButton* m_buttonOK; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnUseRecycler( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + FolderHistoryBox* m_targetFolderPath; + wxBitmapButton* m_bpButtonSelectAltTargetFolder; + + CopyToDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Copy items"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + ~CopyToDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class OptionsDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class OptionsDlgGenerated : public wxDialog +class OptionsDlgGenerated : public wxDialog { -private: - -protected: - wxStaticBitmap* m_bitmapSettings; - wxStaticText* m_staticText44; - wxStaticLine* m_staticline20; - wxPanel* m_panel39; - wxCheckBox* m_checkBoxFailSafe; - wxStaticText* m_staticText91; - wxBoxSizer* bSizerLockedFiles; - wxCheckBox* m_checkBoxCopyLocked; - wxStaticText* m_staticText92; - wxCheckBox* m_checkBoxCopyPermissions; - wxStaticText* m_staticText93; - wxStaticLine* m_staticline39; - wxStaticText* m_staticText95; - wxStaticText* m_staticText96; - wxSpinCtrl* m_spinCtrlAutoRetryCount; - wxStaticText* m_staticTextAutoRetryDelay; - wxSpinCtrl* m_spinCtrlAutoRetryDelay; - wxStaticLine* m_staticline191; - wxStaticText* m_staticText85; - wxGrid* m_gridCustomCommand; - wxBitmapButton* m_bpButtonAddRow; - wxBitmapButton* m_bpButtonRemoveRow; - wxHyperlinkCtrl* m_hyperlink17; - wxStaticLine* m_staticline192; - zen::BitmapTextButton* m_buttonResetDialogs; - wxStaticLine* m_staticline40; - wxStaticLine* m_staticline36; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonDefault; - wxButton* m_buttonOkay; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnToggleAutoRetryCount( wxCommandEvent& event ) { event.Skip(); } - virtual void OnAddRow( wxCommandEvent& event ) { event.Skip(); } - virtual void OnRemoveRow( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHelpShowExamples( wxHyperlinkEvent& event ) { event.Skip(); } - virtual void OnResetDialogs( wxCommandEvent& event ) { event.Skip(); } - virtual void OnDefault( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - OptionsDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); - ~OptionsDlgGenerated(); - + private: + + protected: + wxStaticBitmap* m_bitmapSettings; + wxStaticText* m_staticText44; + wxStaticLine* m_staticline20; + wxPanel* m_panel39; + wxCheckBox* m_checkBoxFailSafe; + wxStaticText* m_staticText91; + wxBoxSizer* bSizerLockedFiles; + wxCheckBox* m_checkBoxCopyLocked; + wxStaticText* m_staticText92; + wxCheckBox* m_checkBoxCopyPermissions; + wxStaticText* m_staticText93; + wxStaticLine* m_staticline39; + wxStaticText* m_staticText95; + wxStaticText* m_staticText96; + wxSpinCtrl* m_spinCtrlAutoRetryCount; + wxStaticText* m_staticTextAutoRetryDelay; + wxSpinCtrl* m_spinCtrlAutoRetryDelay; + wxStaticLine* m_staticline191; + wxStaticText* m_staticText85; + wxGrid* m_gridCustomCommand; + wxBitmapButton* m_bpButtonAddRow; + wxBitmapButton* m_bpButtonRemoveRow; + wxHyperlinkCtrl* m_hyperlink17; + wxStaticLine* m_staticline192; + zen::BitmapTextButton* m_buttonResetDialogs; + wxStaticLine* m_staticline40; + wxStaticLine* m_staticline36; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonDefault; + wxButton* m_buttonOkay; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnToggleAutoRetryCount( wxCommandEvent& event ) { event.Skip(); } + virtual void OnAddRow( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRemoveRow( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHelpShowExamples( wxHyperlinkEvent& event ) { event.Skip(); } + virtual void OnResetDialogs( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDefault( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + OptionsDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~OptionsDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class TooltipDialogGenerated /////////////////////////////////////////////////////////////////////////////// -class TooltipDialogGenerated : public wxDialog +class TooltipDialogGenerated : public wxDialog { -private: - -protected: - -public: - wxStaticBitmap* m_bitmapLeft; - wxStaticText* m_staticTextMain; - - TooltipDialogGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); - ~TooltipDialogGenerated(); - + private: + + protected: + + public: + wxStaticBitmap* m_bitmapLeft; + wxStaticText* m_staticTextMain; + + TooltipDialogGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); + ~TooltipDialogGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class SelectTimespanDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class SelectTimespanDlgGenerated : public wxDialog +class SelectTimespanDlgGenerated : public wxDialog { -private: - -protected: - wxPanel* m_panel35; - wxCalendarCtrl* m_calendarFrom; - wxCalendarCtrl* m_calendarTo; - wxStaticLine* m_staticline21; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonOkay; - wxButton* m_buttonCancel; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnChangeSelectionFrom( wxCalendarEvent& event ) { event.Skip(); } - virtual void OnChangeSelectionTo( wxCalendarEvent& event ) { event.Skip(); } - virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } - - -public: - - SelectTimespanDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Select Time Span"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); - ~SelectTimespanDlgGenerated(); - + private: + + protected: + wxPanel* m_panel35; + wxCalendarCtrl* m_calendarFrom; + wxCalendarCtrl* m_calendarTo; + wxStaticLine* m_staticline21; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonOkay; + wxButton* m_buttonCancel; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnChangeSelectionFrom( wxCalendarEvent& event ) { event.Skip(); } + virtual void OnChangeSelectionTo( wxCalendarEvent& event ) { event.Skip(); } + virtual void OnOkay( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + + + public: + + SelectTimespanDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Select Time Span"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); + ~SelectTimespanDlgGenerated(); + }; /////////////////////////////////////////////////////////////////////////////// /// Class AboutDlgGenerated /////////////////////////////////////////////////////////////////////////////// -class AboutDlgGenerated : public wxDialog +class AboutDlgGenerated : public wxDialog { -private: - -protected: - wxPanel* m_panel41; - wxStaticBitmap* m_bitmapLogo; - wxStaticLine* m_staticline341; - wxStaticText* m_staticText96; - wxHyperlinkCtrl* m_hyperlink11; - wxHyperlinkCtrl* m_hyperlink7; - wxHyperlinkCtrl* m_hyperlink14; - wxHyperlinkCtrl* m_hyperlink16; - wxHyperlinkCtrl* m_hyperlink15; - wxHyperlinkCtrl* m_hyperlink12; - wxHyperlinkCtrl* m_hyperlink13; - wxHyperlinkCtrl* m_hyperlink10; - wxHyperlinkCtrl* m_hyperlink18; - wxHyperlinkCtrl* m_hyperlink9; - wxPanel* m_panelDonate; - wxPanel* m_panel39; - wxStaticBitmap* m_bitmapDonate; - wxStaticText* m_staticText83; - wxButton* m_buttonDonate; - wxStaticText* m_staticText94; - wxStaticBitmap* m_bitmapHomepage; - wxHyperlinkCtrl* m_hyperlink1; - wxStaticBitmap* m_bitmapEmail; - wxHyperlinkCtrl* m_hyperlink2; - wxStaticLine* m_staticline34; - wxStaticText* m_staticText93; - wxStaticBitmap* m_bitmapGpl; - wxHyperlinkCtrl* m_hyperlink5; - wxStaticLine* m_staticline37; - wxStaticText* m_staticText54; - wxScrolledWindow* m_scrolledWindowTranslators; - wxFlexGridSizer* fgSizerTranslators; - wxStaticLine* m_staticline36; - wxBoxSizer* bSizerStdButtons; - wxButton* m_buttonClose; - - // Virtual event handlers, overide them in your derived class - virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } - virtual void OnDonate( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } - - -public: - - AboutDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); - ~AboutDlgGenerated(); - + private: + + protected: + wxPanel* m_panel41; + wxStaticBitmap* m_bitmapLogo; + wxStaticLine* m_staticline341; + wxStaticText* m_staticText96; + wxHyperlinkCtrl* m_hyperlink11; + wxHyperlinkCtrl* m_hyperlink7; + wxHyperlinkCtrl* m_hyperlink14; + wxHyperlinkCtrl* m_hyperlink16; + wxHyperlinkCtrl* m_hyperlink15; + wxHyperlinkCtrl* m_hyperlink12; + wxHyperlinkCtrl* m_hyperlink13; + wxHyperlinkCtrl* m_hyperlink10; + wxHyperlinkCtrl* m_hyperlink18; + wxHyperlinkCtrl* m_hyperlink9; + wxPanel* m_panelDonate; + wxPanel* m_panel39; + wxStaticBitmap* m_bitmapDonate; + wxStaticText* m_staticText83; + wxButton* m_buttonDonate; + wxStaticText* m_staticText94; + wxStaticBitmap* m_bitmapHomepage; + wxHyperlinkCtrl* m_hyperlink1; + wxStaticBitmap* m_bitmapEmail; + wxHyperlinkCtrl* m_hyperlink2; + wxStaticLine* m_staticline34; + wxStaticText* m_staticText93; + wxStaticBitmap* m_bitmapGpl; + wxHyperlinkCtrl* m_hyperlink5; + wxStaticLine* m_staticline37; + wxStaticText* m_staticText54; + wxScrolledWindow* m_scrolledWindowTranslators; + wxFlexGridSizer* fgSizerTranslators; + wxStaticLine* m_staticline36; + wxBoxSizer* bSizerStdButtons; + wxButton* m_buttonClose; + + // Virtual event handlers, overide them in your derived class + virtual void OnClose( wxCloseEvent& event ) { event.Skip(); } + virtual void OnDonate( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOK( wxCommandEvent& event ) { event.Skip(); } + + + public: + + AboutDlgGenerated( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); + ~AboutDlgGenerated(); + }; #endif //__GUI_GENERATED_H__ diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source/ui/gui_status_handler.cpp index 82f0b707..0540bd5b 100644 --- a/FreeFileSync/Source/ui/gui_status_handler.cpp +++ b/FreeFileSync/Source/ui/gui_status_handler.cpp @@ -123,24 +123,7 @@ void StatusHandlerTemporaryPanel::initNewPhase(int objectsTotal, std::int64_t da { StatusHandler::initNewPhase(objectsTotal, dataTotal, phaseID); - switch (currentPhase()) - { - case PHASE_NONE: - assert(false); - case PHASE_SCANNING: - break; - case PHASE_SYNCHRONIZING: - case PHASE_COMPARING_CONTENT: - { -#ifdef ZEN_WIN - wxWindowUpdateLocker dummy(&mainDlg); //leads to GUI corruption problems on Linux/OS X! -#endif - mainDlg.compareStatus->switchToCompareBytewise(); - mainDlg.Layout(); //show progress bar... - mainDlg.Refresh(); //remove distortion... - } - break; - } + mainDlg.compareStatus->initNewPhase(); //call after "StatusHandler::initNewPhase" forceUiRefresh(); //throw ?; OS X needs a full yield to update GUI and get rid of "dummy" texts } @@ -333,8 +316,8 @@ StatusHandlerFloatingDialog::~StatusHandlerFloatingDialog() } else { - if (getObjectsTotal(PHASE_SYNCHRONIZING) == 0 && //we're past "initNewPhase(PHASE_SYNCHRONIZING)" at this point! - getDataTotal (PHASE_SYNCHRONIZING) == 0) + if (getItemsTotal(PHASE_SYNCHRONIZING) == 0 && //we're past "initNewPhase(PHASE_SYNCHRONIZING)" at this point! + getBytesTotal(PHASE_SYNCHRONIZING) == 0) finalStatus = _("Nothing to synchronize"); //even if "ignored conflicts" occurred! else finalStatus = _("Synchronization completed successfully"); @@ -344,8 +327,8 @@ StatusHandlerFloatingDialog::~StatusHandlerFloatingDialog() const SummaryInfo summary = { jobName_, finalStatus, - getObjectsCurrent(PHASE_SYNCHRONIZING), getDataCurrent(PHASE_SYNCHRONIZING), - getObjectsTotal (PHASE_SYNCHRONIZING), getDataTotal (PHASE_SYNCHRONIZING), + getItemsCurrent(PHASE_SYNCHRONIZING), getBytesCurrent(PHASE_SYNCHRONIZING), + getItemsTotal (PHASE_SYNCHRONIZING), getBytesTotal (PHASE_SYNCHRONIZING), std::time(nullptr) - startTime_ }; diff --git a/FreeFileSync/Source/ui/main_dlg.cpp b/FreeFileSync/Source/ui/main_dlg.cpp index 5d3ac556..0cc64d27 100644 --- a/FreeFileSync/Source/ui/main_dlg.cpp +++ b/FreeFileSync/Source/ui/main_dlg.cpp @@ -52,6 +52,7 @@ #elif defined ZEN_MAC #include <ApplicationServices/ApplicationServices.h> + #include <zen/osx_string.h> #endif using namespace zen; @@ -506,8 +507,7 @@ MainDialog::MainDialog(const Zstring& globalConfigFile, //caption required for all panes that can be manipulated by the users => used by context menu auiMgr.AddPane(m_panelCenter, - wxAuiPaneInfo().Name(L"PanelCenter").CenterPane().PaneBorder(false)); - + wxAuiPaneInfo().Name(L"CenterPanel").CenterPane().PaneBorder(false)); { //set comparison button label tentatively for m_panelTopButtons to receive final height: updateTopButton(*m_buttonCompare, getResourceImage(L"compare"), L"Dummy", false); @@ -518,27 +518,29 @@ MainDialog::MainDialog(const Zstring& globalConfigFile, std::max(m_buttonCancel->GetSize().y, m_buttonCompare->GetSize().y))); auiMgr.AddPane(m_panelTopButtons, - wxAuiPaneInfo().Name(L"PanelTop").Layer(2).Top().Row(1).Caption(_("Main Bar")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(TOP_BUTTON_OPTIMAL_WIDTH, m_panelTopButtons->GetSize().GetHeight())); + wxAuiPaneInfo().Name(L"TopPanel").Layer(2).Top().Row(1).Caption(_("Main Bar")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(TOP_BUTTON_OPTIMAL_WIDTH, m_panelTopButtons->GetSize().GetHeight())); //note: min height is calculated incorrectly by wxAuiManager if panes with and without caption are in the same row => use smaller min-size auiMgr.AddPane(compareStatus->getAsWindow(), - wxAuiPaneInfo().Name(L"PanelProgress").Layer(2).Top().Row(2).CaptionVisible(false).PaneBorder(false).Hide()); + wxAuiPaneInfo().Name(L"ProgressPanel").Layer(2).Top().Row(2).CaptionVisible(false).PaneBorder(false).Hide() + //wxAui does not consider the progress panel's wxRAISED_BORDER and set's too small a panel height! => use correct value from wxWindow::GetSize() + .MinSize(200, compareStatus->getAsWindow()->GetSize().GetHeight())); //bonus: minimal height isn't a bad idea anyway } auiMgr.AddPane(m_panelDirectoryPairs, - wxAuiPaneInfo().Name(L"PanelFolders").Layer(2).Top().Row(3).Caption(_("Folder Pairs")).CaptionVisible(false).PaneBorder(false).Gripper()); + wxAuiPaneInfo().Name(L"FoldersPanel").Layer(2).Top().Row(3).Caption(_("Folder Pairs")).CaptionVisible(false).PaneBorder(false).Gripper()); auiMgr.AddPane(m_panelSearch, - wxAuiPaneInfo().Name(L"PanelFind").Layer(2).Bottom().Row(2).Caption(_("Find")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(200, m_bpButtonHideSearch->GetSize().GetHeight()).Hide()); + wxAuiPaneInfo().Name(L"SearchPanel").Layer(2).Bottom().Row(2).Caption(_("Find")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(200, m_bpButtonHideSearch->GetSize().GetHeight()).Hide()); auiMgr.AddPane(m_panelViewFilter, - wxAuiPaneInfo().Name(L"PanelView").Layer(2).Bottom().Row(1).Caption(_("View Settings")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(m_bpButtonViewTypeSyncAction->GetSize().GetWidth(), m_panelViewFilter->GetSize().GetHeight())); + wxAuiPaneInfo().Name(L"ViewFilterPanel").Layer(2).Bottom().Row(1).Caption(_("View Settings")).CaptionVisible(false).PaneBorder(false).Gripper().MinSize(m_bpButtonViewTypeSyncAction->GetSize().GetWidth(), m_panelViewFilter->GetSize().GetHeight())); auiMgr.AddPane(m_panelConfig, - wxAuiPaneInfo().Name(L"PanelConfig").Layer(3).Left().Position(1).Caption(_("Configuration")).MinSize(m_listBoxHistory->GetSize().GetWidth(), m_panelConfig->GetSize().GetHeight())); + wxAuiPaneInfo().Name(L"ConfigPanel").Layer(3).Left().Position(1).Caption(_("Configuration")).MinSize(m_listBoxHistory->GetSize().GetWidth(), m_panelConfig->GetSize().GetHeight())); auiMgr.AddPane(m_gridNavi, - wxAuiPaneInfo().Name(L"PanelOverview").Layer(3).Left().Position(2).Caption(_("Overview")).MinSize(300, m_gridNavi->GetSize().GetHeight())); //MinSize(): just default size, see comment below + wxAuiPaneInfo().Name(L"OverviewPanel").Layer(3).Left().Position(2).Caption(_("Overview")).MinSize(300, m_gridNavi->GetSize().GetHeight())); //MinSize(): just default size, see comment below auiMgr.Update(); @@ -923,9 +925,9 @@ void MainDialog::setGlobalCfgOnInit(const xmlAccess::XmlGlobalSettings& globalSe m_splitterMain->setSashOffset(globalSettings.gui.mainDlg.sashOffset); m_gridNavi->setColumnConfig(treeview::convertConfig(globalSettings.gui.mainDlg.columnAttribNavi)); - treeview::setShowPercentage(*m_gridNavi, globalSettings.gui.mainDlg.showPercentBar); + treeview::setShowPercentage(*m_gridNavi, globalSettings.gui.mainDlg.naviGridShowPercentBar); - treeDataView->setSortDirection(globalSettings.gui.mainDlg.naviLastSortColumn, globalSettings.gui.mainDlg.naviLastSortAscending); + treeDataView->setSortDirection(globalSettings.gui.mainDlg.naviGridLastSortColumn, globalSettings.gui.mainDlg.naviGridLastSortAscending); //-------------------------------------------------------------------------------- //load list of last used configuration files @@ -948,6 +950,9 @@ void MainDialog::setGlobalCfgOnInit(const xmlAccess::XmlGlobalSettings& globalSe //show/hide file icons gridview::setupIcons(*m_gridMainL, *m_gridMainC, *m_gridMainR, globalSettings.gui.mainDlg.showIcons, convert(globalSettings.gui.mainDlg.iconSize)); + gridview::setItemPathForm(*m_gridMainL, globalSettings.gui.mainDlg.itemPathFormatLeftGrid); + gridview::setItemPathForm(*m_gridMainR, globalSettings.gui.mainDlg.itemPathFormatRightGrid); + //------------------------------------------------------------------------------------------------ m_checkBoxMatchCase->SetValue(globalCfg.gui.mainDlg.textSearchRespectCase); @@ -987,12 +992,12 @@ xmlAccess::XmlGlobalSettings MainDialog::getGlobalCfgBeforeExit() globalSettings.gui.mainDlg.columnAttribRight = gridview::convertConfig(m_gridMainR->getColumnConfig()); globalSettings.gui.mainDlg.sashOffset = m_splitterMain->getSashOffset(); - globalSettings.gui.mainDlg.columnAttribNavi = treeview::convertConfig(m_gridNavi->getColumnConfig()); - globalSettings.gui.mainDlg.showPercentBar = treeview::getShowPercentage(*m_gridNavi); + globalSettings.gui.mainDlg.columnAttribNavi = treeview::convertConfig(m_gridNavi->getColumnConfig()); + globalSettings.gui.mainDlg.naviGridShowPercentBar = treeview::getShowPercentage(*m_gridNavi); const std::pair<ColumnTypeNavi, bool> sortInfo = treeDataView->getSortDirection(); - globalSettings.gui.mainDlg.naviLastSortColumn = sortInfo.first; - globalSettings.gui.mainDlg.naviLastSortAscending = sortInfo.second; + globalSettings.gui.mainDlg.naviGridLastSortColumn = sortInfo.first; + globalSettings.gui.mainDlg.naviGridLastSortAscending = sortInfo.second; //-------------------------------------------------------------------------------- //write list of last used configuration files @@ -2366,17 +2371,17 @@ void MainDialog::onGridLabelContextC(GridLabelClickEvent& event) void MainDialog::onGridLabelContextL(GridLabelClickEvent& event) { - onGridLabelContext(*m_gridMainL, static_cast<ColumnTypeRim>(event.colType_), getDefaultColumnAttributesLeft()); + onGridLabelContextRim(*m_gridMainL, static_cast<ColumnTypeRim>(event.colType_), true /*left*/); } void MainDialog::onGridLabelContextR(GridLabelClickEvent& event) { - onGridLabelContext(*m_gridMainR, static_cast<ColumnTypeRim>(event.colType_), getDefaultColumnAttributesRight()); + onGridLabelContextRim(*m_gridMainR, static_cast<ColumnTypeRim>(event.colType_), false /*left*/); } -void MainDialog::onGridLabelContext(Grid& grid, ColumnTypeRim type, const std::vector<ColumnAttributeRim>& defaultColumnAttributes) +void MainDialog::onGridLabelContextRim(Grid& grid, ColumnTypeRim type, bool left) { ContextMenu menu; @@ -2396,13 +2401,32 @@ void MainDialog::onGridLabelContext(Grid& grid, ColumnTypeRim type, const std::v if (const GridData* prov = grid.getDataProvider()) for (const Grid::ColumnAttribute& ca : grid.getColumnConfig()) menu.addCheckBox(prov->getColumnLabel(ca.type_), [ca, toggleColumn] { toggleColumn(ca.type_); }, - ca.visible_, ca.type_ != static_cast<ColumnType>(ColumnTypeRim::FILENAME)); //do not allow user to hide file name column! + ca.visible_, ca.type_ != static_cast<ColumnType>(ColumnTypeRim::ITEM_PATH)); //do not allow user to hide this column! + //---------------------------------------------------------------------------------------------- + menu.addSeparator(); + + auto& itemPathFormat = left ? globalCfg.gui.mainDlg.itemPathFormatLeftGrid : globalCfg.gui.mainDlg.itemPathFormatRightGrid; + + auto setItemPathFormat = [&](ItemPathFormat fmt) + { + itemPathFormat = fmt; + gridview::setItemPathForm(grid, fmt); + }; + auto addFormatEntry = [&](const wxString& label, ItemPathFormat fmt) + { + menu.addRadio(label, [fmt, &setItemPathFormat] { setItemPathFormat(fmt); }, itemPathFormat == fmt); + }; + addFormatEntry(_("Full path" ), ItemPathFormat::FULL_PATH); + addFormatEntry(_("Relative path"), ItemPathFormat::RELATIVE_PATH); + addFormatEntry(_("Item name" ), ItemPathFormat::ITEM_NAME); + //---------------------------------------------------------------------------------------------- + menu.addSeparator(); auto setDefault = [&] { - grid.setColumnConfig(gridview::convertConfig(defaultColumnAttributes)); + grid.setColumnConfig(gridview::convertConfig(left ? getDefaultColumnAttributesLeft() : getDefaultColumnAttributesRight())); }; menu.addItem(_("&Default"), setDefault); //'&' -> reuse text from "default" buttons elsewhere //---------------------------------------------------------------------------------------------- @@ -2421,8 +2445,7 @@ void MainDialog::onGridLabelContext(Grid& grid, ColumnTypeRim type, const std::v }; auto addSizeEntry = [&](const wxString& label, xmlAccess::FileIconSize sz) { - auto setIconSize2 = setIconSize; //bring into scope - menu.addRadio(label, [sz, setIconSize2] { setIconSize2(sz); }, globalCfg.gui.mainDlg.iconSize == sz, globalCfg.gui.mainDlg.showIcons); + menu.addRadio(label, [sz, &setIconSize] { setIconSize(sz); }, globalCfg.gui.mainDlg.iconSize == sz, globalCfg.gui.mainDlg.showIcons); }; addSizeEntry(L" " + _("Small" ), xmlAccess::ICON_SIZE_SMALL ); addSizeEntry(L" " + _("Medium"), xmlAccess::ICON_SIZE_MEDIUM); @@ -2510,13 +2533,13 @@ void MainDialog::OnCompSettingsContext(wxEvent& event) const wxBitmap iconGrey = greyScale(iconNormal); menu.addItem(getVariantName(cmpVar), [&setVariant, cmpVar] { setVariant(cmpVar); }, activeCmpVar == cmpVar ? &iconNormal : &iconGrey); }; - addVariantItem(CMP_BY_TIME_SIZE, L"file-time-small"); - addVariantItem(CMP_BY_CONTENT, L"file-content-small"); - addVariantItem(CMP_BY_SIZE, L"file-size-small"); + addVariantItem(CompareVariant::TIME_SIZE, L"file-time-small"); + addVariantItem(CompareVariant::CONTENT, L"file-content-small"); + addVariantItem(CompareVariant::SIZE, L"file-size-small"); - //menu.addRadio(getVariantName(CMP_BY_TIME_SIZE), [&] { setVariant(CMP_BY_TIME_SIZE); }, activeCmpVar == CMP_BY_TIME_SIZE); - //menu.addRadio(getVariantName(CMP_BY_CONTENT ), [&] { setVariant(CMP_BY_CONTENT); }, activeCmpVar == CMP_BY_CONTENT); - //menu.addRadio(getVariantName(CMP_BY_SIZE ), [&] { setVariant(CMP_BY_SIZE); }, activeCmpVar == CMP_BY_SIZE); + //menu.addRadio(getVariantName(CompareVariant::TIME_SIZE), [&] { setVariant(CompareVariant::TIME_SIZE); }, activeCmpVar == CompareVariant::TIME_SIZE); + //menu.addRadio(getVariantName(CompareVariant::CONTENT ), [&] { setVariant(CompareVariant::CONTENT); }, activeCmpVar == CompareVariant::CONTENT); + //menu.addRadio(getVariantName(CompareVariant::SIZE ), [&] { setVariant(CompareVariant::SIZE); }, activeCmpVar == CompareVariant::SIZE); wxPoint pos = m_bpButtonCmpContext->GetPosition(); pos.x += m_bpButtonCmpContext->GetSize().GetWidth(); @@ -2536,10 +2559,10 @@ void MainDialog::OnSyncSettingsContext(wxEvent& event) const auto currentVar = getConfig().mainCfg.syncCfg.directionCfg.var; - menu.addRadio(getVariantName(DirectionConfig::TWOWAY), [&] { setVariant(DirectionConfig::TWOWAY); }, currentVar == DirectionConfig::TWOWAY); - menu.addRadio(getVariantName(DirectionConfig::MIRROR), [&] { setVariant(DirectionConfig::MIRROR); }, currentVar == DirectionConfig::MIRROR); - menu.addRadio(getVariantName(DirectionConfig::UPDATE), [&] { setVariant(DirectionConfig::UPDATE); }, currentVar == DirectionConfig::UPDATE); - menu.addRadio(getVariantName(DirectionConfig::CUSTOM), [&] { setVariant(DirectionConfig::CUSTOM); }, currentVar == DirectionConfig::CUSTOM); + menu.addRadio(getVariantName(DirectionConfig::TWO_WAY), [&] { setVariant(DirectionConfig::TWO_WAY); }, currentVar == DirectionConfig::TWO_WAY); + menu.addRadio(getVariantName(DirectionConfig::MIRROR), [&] { setVariant(DirectionConfig::MIRROR); }, currentVar == DirectionConfig::MIRROR); + menu.addRadio(getVariantName(DirectionConfig::UPDATE), [&] { setVariant(DirectionConfig::UPDATE); }, currentVar == DirectionConfig::UPDATE); + menu.addRadio(getVariantName(DirectionConfig::CUSTOM), [&] { setVariant(DirectionConfig::CUSTOM); }, currentVar == DirectionConfig::CUSTOM); wxPoint pos = m_bpButtonSyncContext->GetPosition(); pos.x += m_bpButtonSyncContext->GetSize().GetWidth(); @@ -3162,7 +3185,6 @@ void MainDialog::OnClose(wxCloseEvent& event) if (cancelled) { //attention: this Veto() will NOT cancel system shutdown since saveOldConfig() blocks on modal dialog - event.Veto(); return; } @@ -3772,12 +3794,12 @@ void MainDialog::applyCompareConfig(bool setDefaultViewType) if (setDefaultViewType) switch (currentCfg.mainCfg.cmpConfig.compareVar) { - case CMP_BY_TIME_SIZE: - case CMP_BY_SIZE: + case CompareVariant::TIME_SIZE: + case CompareVariant::SIZE: setViewTypeSyncAction(true); break; - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: setViewTypeSyncAction(false); break; } @@ -3918,7 +3940,9 @@ void MainDialog::onGridLabelLeftClick(bool onLeft, ColumnTypeRim type) if (sortInfo && sortInfo->onLeft_ == onLeft && sortInfo->type_ == type) sortAscending = !sortInfo->ascending_; - gridDataView->sortView(type, onLeft, sortAscending); + const ItemPathFormat itemPathFormat = onLeft ? globalCfg.gui.mainDlg.itemPathFormatLeftGrid : globalCfg.gui.mainDlg.itemPathFormatRightGrid; + + gridDataView->sortView(type, itemPathFormat, onLeft, sortAscending); m_gridMainL->clearSelection(ALLOW_GRID_EVENT); m_gridMainC->clearSelection(ALLOW_GRID_EVENT); @@ -4234,7 +4258,16 @@ void MainDialog::hideFindPanel() void MainDialog::startFindNext() //F3 or ENTER in m_textCtrlSearchTxt { - const wxString searchString = trimCpy(m_textCtrlSearchTxt->GetValue()); + Zstring searchString = utfCvrtTo<Zstring>(trimCpy(m_textCtrlSearchTxt->GetValue())); + +#ifdef ZEN_MAC //normalize all text input (see see native_traverser_impl.h) + try + { + searchString = osx::normalizeUtfForPosix(searchString.c_str()); //throw SysError + } + catch (zen::SysError&) { assert(false); } +#endif + if (searchString.empty()) showFindPanel(); else @@ -4247,7 +4280,7 @@ void MainDialog::startFindNext() //F3 or ENTER in m_textCtrlSearchTxt std::swap(grid1, grid2); //select side to start search at grid cursor position wxBeginBusyCursor(wxHOURGLASS_CURSOR); - const std::pair<const Grid*, ptrdiff_t> result = findGridMatch(*grid1, *grid2, searchString, + const std::pair<const Grid*, ptrdiff_t> result = findGridMatch(*grid1, *grid2, utfCvrtTo<std::wstring>(searchString), m_checkBoxMatchCase->GetValue()); //parameter owned by GUI, *not* globalCfg structure! => we should better implement a getGlocalCfg()! wxEndBusyCursor(); @@ -4268,7 +4301,7 @@ void MainDialog::startFindNext() //F3 or ENTER in m_textCtrlSearchTxt showFindPanel(); showNotificationDialog(this, DialogInfoType::INFO, PopupDialogCfg(). setTitle(_("Find")). - setMainInstructions(replaceCpy(_("Cannot find %x"), L"%x", L"\"" + searchString + L"\""))); + setMainInstructions(replaceCpy(_("Cannot find %x"), L"%x", fmtPath(searchString)))); } } } diff --git a/FreeFileSync/Source/ui/main_dlg.h b/FreeFileSync/Source/ui/main_dlg.h index 0288d19f..70641dd4 100644 --- a/FreeFileSync/Source/ui/main_dlg.h +++ b/FreeFileSync/Source/ui/main_dlg.h @@ -186,7 +186,7 @@ private: void onGridLabelContextL(zen::GridLabelClickEvent& event); void onGridLabelContextC(zen::GridLabelClickEvent& event); void onGridLabelContextR(zen::GridLabelClickEvent& event); - void onGridLabelContext(zen::Grid& grid, zen::ColumnTypeRim type, const std::vector<zen::ColumnAttributeRim>& defaultColumnAttributes); + void onGridLabelContextRim(zen::Grid& grid, zen::ColumnTypeRim type, bool left); void OnToggleViewType (wxCommandEvent& event) override; void OnToggleViewButton(wxCommandEvent& event) override; diff --git a/FreeFileSync/Source/ui/progress_indicator.cpp b/FreeFileSync/Source/ui/progress_indicator.cpp index 5dce1c34..024ae30b 100644 --- a/FreeFileSync/Source/ui/progress_indicator.cpp +++ b/FreeFileSync/Source/ui/progress_indicator.cpp @@ -52,10 +52,14 @@ namespace const int WINDOW_REMAINING_TIME_MS = 60000; //USB memory stick scenario can have drop outs of 40 seconds => 60 sec. window size handles it const int WINDOW_BYTES_PER_SEC = 5000; // -const int GAUGE_FULL_RANGE = 50000; - inline wxColor getColorGridLine() { return { 192, 192, 192 }; } //light grey +inline wxColor getColorCurveAreaBytes () { return { 111, 255, 99 }; } //light green +inline wxColor getColorCurveAreaItems () { return { 127, 147, 255 }; } //light blue +inline wxColor getColorCurveAreaBytesRim() { return { 20, 200, 0 }; } //medium green +inline wxColor getColorCurveAreaItemsRim() { return { 90, 120, 255 }; } //medium blue + + //don't use wxStopWatch for long-running measurements: internally it uses ::QueryPerformanceCounter() which can overflow after only a few days: //http://www.freefilesync.org/forum/viewtopic.php?t=1426 @@ -134,6 +138,49 @@ std::wstring getDialogPhaseText(const Statistics* syncStat, bool paused, SyncPro } return std::wstring(); } + + +class CurveDataProgressBar : public CurveData +{ +public: + CurveDataProgressBar(bool drawTop) : drawTop_(drawTop) {} + + void setFraction(double fraction) { fraction_ = fraction; } //value between [0, 1] + +private: + std::pair<double, double> getRangeX() const override { return std::make_pair(0, 1); } + + std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const override + { + const double yHigh = drawTop_ ? 3 : 1; //draw partially out of vertical bounds to not render top/bottom borders of the bars + const double yLow = drawTop_ ? 1 : -1; // + + return + { + { 0, yHigh }, + { fraction_, yHigh }, + { fraction_, yLow }, + { 0, yLow }, + }; + } + + double fraction_ = 0; + const bool drawTop_; +}; + +class CurveDataProgressSeparatorLine : public CurveData +{ + std::pair<double, double> getRangeX() const override { return std::make_pair(0, 1); } + + std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const override + { + return + { + { 0, 1 }, + { 1, 1 }, + }; + } +}; } @@ -145,7 +192,7 @@ public: void init(const Statistics& syncStat); //constructor/destructor semantics, but underlying Window is reused void teardown(); // - void switchToCompareBytewise(); + void initNewPhase(); void updateStatusPanelNow(); private: @@ -162,6 +209,9 @@ private: int64_t timeLastSpeedEstimateMs = -1000000; //used for calculating intervals between showing and collecting perf samples //initial value: just some big number + + std::shared_ptr<CurveDataProgressBar> curveDataBytes{ std::make_shared<CurveDataProgressBar>(true /*drawTop*/) }; + std::shared_ptr<CurveDataProgressBar> curveDataItems{ std::make_shared<CurveDataProgressBar>(false /*drawTop*/) }; }; @@ -173,6 +223,18 @@ CompareProgressDialog::Pimpl::Pimpl(wxFrame& parentWindow) : m_staticTextItemsFoundLabel->Hide(); m_staticTextItemsFound ->Hide(); + //init graph + m_panelGraphProgress->setAttributes(Graph2D::MainAttributes().setMinY(0).setMaxY(2). + setLabelX(Graph2D::LABEL_X_NONE). + setLabelY(Graph2D::LABEL_Y_NONE). + setBackgroundColor(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)). + setSelectionMode(Graph2D::SELECT_NONE)); + + m_panelGraphProgress->addCurve(curveDataBytes, Graph2D::CurveAttributes().setLineWidth(1).fillPolygonArea(getColorCurveAreaBytes()).setColor(Graph2D::getBorderColor())); + m_panelGraphProgress->addCurve(curveDataItems, Graph2D::CurveAttributes().setLineWidth(1).fillPolygonArea(getColorCurveAreaItems()).setColor(Graph2D::getBorderColor())); + + m_panelGraphProgress->addCurve(std::make_shared<CurveDataProgressSeparatorLine>(), Graph2D::CurveAttributes().setLineWidth(1).setColor(Graph2D::getBorderColor())); + m_panelStatistics->Layout(); Layout(); @@ -192,9 +254,9 @@ void CompareProgressDialog::Pimpl::init(const Statistics& syncStat) } catch (const TaskbarNotAvailable&) {} - //initialize gauge - m_gauge2->SetRange(GAUGE_FULL_RANGE); - m_gauge2->SetValue(0); + //initialize progress indicator + m_panelProgressLabel->Hide(); + m_panelGraphProgress->Hide(); perf.reset(); timeElapsed.restart(); //measure total time @@ -209,9 +271,6 @@ void CompareProgressDialog::Pimpl::init(const Statistics& syncStat) m_staticTextTimeRemainingLabel->Hide(); m_staticTextTimeRemaining ->Hide(); - m_gauge2->Hide(); - m_staticTextSpeed->Hide(); - updateStatusPanelNow(); m_panelStatistics->Layout(); @@ -227,29 +286,42 @@ void CompareProgressDialog::Pimpl::teardown() } -void CompareProgressDialog::Pimpl::switchToCompareBytewise() +void CompareProgressDialog::Pimpl::initNewPhase() { - //start to measure perf - perf = std::make_unique<PerfCheck>(WINDOW_REMAINING_TIME_MS, WINDOW_BYTES_PER_SEC); - timeLastSpeedEstimateMs = -1000000; //some big number + switch (syncStat_->currentPhase()) + { + case ProcessCallback::PHASE_NONE: + assert(false); + case ProcessCallback::PHASE_SCANNING: + break; - binCompStartMs = timeElapsed.timeMs(); + case ProcessCallback::PHASE_COMPARING_CONTENT: + case ProcessCallback::PHASE_SYNCHRONIZING: + //start to measure perf + perf = std::make_unique<PerfCheck>(WINDOW_REMAINING_TIME_MS, WINDOW_BYTES_PER_SEC); + timeLastSpeedEstimateMs = -1000000; //some big number - //show status for comparing bytewise - m_staticTextItemsFoundLabel->Hide(); - m_staticTextItemsFound ->Hide(); + binCompStartMs = timeElapsed.timeMs(); - m_staticTextItemsRemainingLabel->Show(); - bSizerItemsRemaining ->Show(true); + m_panelProgressLabel->Show(); + m_panelGraphProgress->Show(); - m_staticTextTimeRemainingLabel->Show(); - m_staticTextTimeRemaining ->Show(); + //show status for comparing bytewise + m_staticTextItemsFoundLabel->Hide(); + m_staticTextItemsFound ->Hide(); - m_gauge2 ->Show(); - m_staticTextSpeed->Show(); + m_staticTextItemsRemainingLabel->Show(); + bSizerItemsRemaining ->Show(true); - m_panelStatistics->Layout(); - Layout(); + m_staticTextTimeRemainingLabel->Show(); + m_staticTextTimeRemaining ->Show(); + + m_panelStatistics->Layout(); + Layout(); + break; + } + + updateStatusPanelNow(); } @@ -276,7 +348,7 @@ void CompareProgressDialog::Pimpl::updateStatusPanelNow() case ProcessCallback::PHASE_NONE: case ProcessCallback::PHASE_SCANNING: { - const wxString& scannedObjects = toGuiString(syncStat_->getObjectsCurrent(ProcessCallback::PHASE_SCANNING)); + const wxString& scannedObjects = toGuiString(syncStat_->getItemsCurrent(ProcessCallback::PHASE_SCANNING)); //dialog caption, taskbar setTitle(scannedObjects + L" - " + getDialogPhaseText(syncStat_, false /*paused*/, SyncProgressDialog::RESULT_ABORTED)); @@ -291,28 +363,31 @@ void CompareProgressDialog::Pimpl::updateStatusPanelNow() case ProcessCallback::PHASE_SYNCHRONIZING: case ProcessCallback::PHASE_COMPARING_CONTENT: { - const int itemsCurrent = syncStat_->getObjectsCurrent(syncStat_->currentPhase()); - const int itemsTotal = syncStat_->getObjectsTotal (syncStat_->currentPhase()); - const std::int64_t dataCurrent = syncStat_->getDataCurrent (syncStat_->currentPhase()); - const std::int64_t dataTotal = syncStat_->getDataTotal (syncStat_->currentPhase()); + const int itemsCurrent = syncStat_->getItemsCurrent(syncStat_->currentPhase()); + const int itemsTotal = syncStat_->getItemsTotal (syncStat_->currentPhase()); + const std::int64_t bytesCurrent = syncStat_->getBytesCurrent(syncStat_->currentPhase()); + const std::int64_t bytesTotal = syncStat_->getBytesTotal (syncStat_->currentPhase()); - //add both data + obj-count, to handle "deletion-only" cases - const double fraction = dataTotal + itemsTotal == 0 ? 0 : std::max(0.0, 1.0 * (dataCurrent + itemsCurrent) / (dataTotal + itemsTotal)); + //add both bytes + item count, to handle "deletion-only" cases + const double fractionTotal = bytesTotal + itemsTotal == 0 ? 0 : 1.0 * (bytesCurrent + itemsCurrent) / (bytesTotal + itemsTotal); + const double fractionBytes = bytesTotal == 0 ? 0 : 1.0 * bytesCurrent / bytesTotal; + const double fractionItems = itemsTotal == 0 ? 0 : 1.0 * itemsCurrent / itemsTotal; //dialog caption, taskbar - setTitle(fractionToString(fraction) + wxT(" - ") + getDialogPhaseText(syncStat_, false /*paused*/, SyncProgressDialog::RESULT_ABORTED)); + setTitle(fractionToString(fractionTotal) + wxT(" - ") + getDialogPhaseText(syncStat_, false /*paused*/, SyncProgressDialog::RESULT_ABORTED)); if (taskbar_.get()) { - taskbar_->setProgress(fraction); + taskbar_->setProgress(fractionTotal); taskbar_->setStatus(Taskbar::STATUS_NORMAL); } //progress indicator, shown for binary comparison only - m_gauge2->SetValue(numeric::round(fraction * GAUGE_FULL_RANGE)); + curveDataBytes->setFraction(fractionBytes); + curveDataItems->setFraction(fractionItems); - //remaining objects and bytes for file comparison + //remaining item and byte count setText(*m_staticTextItemsRemaining, toGuiString(itemsTotal - itemsCurrent), &layoutChanged); - setText(*m_staticTextDataRemaining, L"(" + filesizeToShortString(dataTotal - dataCurrent) + L")", &layoutChanged); + setText(*m_staticTextBytesRemaining, L"(" + filesizeToShortString(bytesTotal - bytesCurrent) + L")", &layoutChanged); //remaining time and speed: only visible during binary comparison assert(perf); @@ -322,17 +397,21 @@ void CompareProgressDialog::Pimpl::updateStatusPanelNow() timeLastSpeedEstimateMs = timeNowMs; if (numeric::dist(binCompStartMs, timeNowMs) >= 1000) //discard stats for first second: probably messy - perf->addSample(itemsCurrent, dataCurrent, timeNowMs); + perf->addSample(itemsCurrent, bytesCurrent, timeNowMs); + + //current speed -> Win 7 copy uses 1 sec update interval instead + Opt<std::wstring> bps = perf->getBytesPerSecond(); + Opt<std::wstring> ips = perf->getItemsPerSecond(); + m_panelGraphProgress->setAttributes(m_panelGraphProgress->getAttributes().setCornerText(bps ? *bps : L"", Graph2D::CORNER_TOP_RIGHT)); + m_panelGraphProgress->setAttributes(m_panelGraphProgress->getAttributes().setCornerText(ips ? *ips : L"", Graph2D::CORNER_BOTTOM_RIGHT)); //remaining time: display with relative error of 10% - based on samples taken every 0.5 sec only //-> call more often than once per second to correctly show last few seconds countdown, but don't call too often to avoid occasional jitter - Opt<double> remTimeSec = perf->getRemainingTimeSec(dataTotal - dataCurrent); + Opt<double> remTimeSec = perf->getRemainingTimeSec(bytesTotal - bytesCurrent); setText(*m_staticTextTimeRemaining, remTimeSec ? remainingTimeToString(*remTimeSec) : L"-", &layoutChanged); - - //current speed -> Win 7 copy uses 1 sec update interval instead - Opt<std::wstring> bps = perf->getBytesPerSecond(); - setText(*m_staticTextSpeed, bps ? *bps : L"-", &layoutChanged); } + + m_panelGraphProgress->Refresh(); } break; } @@ -375,9 +454,9 @@ void CompareProgressDialog::teardown() pimpl->teardown(); } -void CompareProgressDialog::switchToCompareBytewise() +void CompareProgressDialog::initNewPhase() { - pimpl->switchToCompareBytewise(); + pimpl->initNewPhase(); } void CompareProgressDialog::updateStatusPanelNow() @@ -709,11 +788,12 @@ public: m_gridMessages->setColumnLabelHeight(0); m_gridMessages->showRowLabel(false); m_gridMessages->setRowHeight(rowHeight); - std::vector<Grid::ColumnAttribute> attr; - attr.emplace_back(static_cast<ColumnType>(COL_TYPE_MSG_TIME ), colMsgTimeWidth, 0); - attr.emplace_back(static_cast<ColumnType>(COL_TYPE_MSG_CATEGORY), colMsgCategoryWidth, 0); - attr.emplace_back(static_cast<ColumnType>(COL_TYPE_MSG_TEXT ), -colMsgTimeWidth - colMsgCategoryWidth, 1); - m_gridMessages->setColumnConfig(attr); + m_gridMessages->setColumnConfig( + { + { static_cast<ColumnType>(COL_TYPE_MSG_TIME ), colMsgTimeWidth, 0 }, + { static_cast<ColumnType>(COL_TYPE_MSG_CATEGORY), colMsgCategoryWidth, 0 }, + { static_cast<ColumnType>(COL_TYPE_MSG_TEXT ), -colMsgTimeWidth - colMsgCategoryWidth, 1 }, + }); //support for CTRL + C m_gridMessages->getMainWin().Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(LogPanel::onGridButtonEvent), nullptr, this); @@ -1016,11 +1096,14 @@ public: private: std::pair<double, double> getRangeX() const override { return std::make_pair(x_, x_); } //conceptually just a vertical line! - void getPoints(double minX, double maxX, int pixelWidth, std::vector<CurvePoint>& points) const override + std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const override { - points.emplace_back(0, y_); - points.emplace_back(x_, y_); - points.emplace_back(x_, 0); + return + { + { 0, y_ }, + { x_, y_ }, + { x_, 0 }, + }; } double x_ = 0; //time elapsed in seconds @@ -1200,12 +1283,12 @@ private: //help calculate total speed int64_t phaseStartMs = 0; //begin of current phase in [ms] - std::shared_ptr<CurveDataStatistics > curveDataBytes; - std::shared_ptr<CurveDataStatistics > curveDataItems; - std::shared_ptr<CurveDataRectangleArea> curveDataBytesCurrent; - std::shared_ptr<CurveDataRectangleArea> curveDataItemsCurrent; - std::shared_ptr<CurveDataRectangleArea> curveDataBytesTotal; - std::shared_ptr<CurveDataRectangleArea> curveDataItemsTotal; + std::shared_ptr<CurveDataStatistics > curveDataBytes { std::make_shared<CurveDataStatistics>() }; + std::shared_ptr<CurveDataStatistics > curveDataItems { std::make_shared<CurveDataStatistics>() }; + std::shared_ptr<CurveDataRectangleArea> curveDataBytesCurrent{ std::make_shared<CurveDataRectangleArea>() }; + std::shared_ptr<CurveDataRectangleArea> curveDataItemsCurrent{ std::make_shared<CurveDataRectangleArea>() }; + std::shared_ptr<CurveDataRectangleArea> curveDataBytesTotal { std::make_shared<CurveDataRectangleArea>() }; + std::shared_ptr<CurveDataRectangleArea> curveDataItemsTotal { std::make_shared<CurveDataRectangleArea>() }; wxString parentFrameTitleBackup; std::unique_ptr<FfsTrayIcon> trayIcon; //optional: if filled all other windows should be hidden and conversely @@ -1290,41 +1373,28 @@ SyncProgressDialogImpl<TopLevelDialog>::SyncProgressDialogImpl(long style, //wxF pnl.m_bpButtonMinimizeToTray->SetBitmapLabel(getResourceImage(L"minimize_to_tray")); //init graph - curveDataBytesTotal = std::make_shared<CurveDataRectangleArea>(); - curveDataItemsTotal = std::make_shared<CurveDataRectangleArea>(); - curveDataBytesCurrent = std::make_shared<CurveDataRectangleArea>(); - curveDataItemsCurrent = std::make_shared<CurveDataRectangleArea>(); - curveDataBytes = std::make_shared<CurveDataStatistics>(); - curveDataItems = std::make_shared<CurveDataStatistics>(); - const int xLabelHeight = this->GetCharHeight() + 2 * 1 /*border*/; //use same height for both graphs to make sure they stretch evenly const int yLabelWidth = 70; pnl.m_panelGraphBytes->setAttributes(Graph2D::MainAttributes(). - setLabelX(Graph2D::X_LABEL_BOTTOM, xLabelHeight, std::make_shared<LabelFormatterTimeElapsed>(true)). - setLabelY(Graph2D::Y_LABEL_RIGHT, yLabelWidth, std::make_shared<LabelFormatterBytes>()). + setLabelX(Graph2D::LABEL_X_BOTTOM, xLabelHeight, std::make_shared<LabelFormatterTimeElapsed>(true)). + setLabelY(Graph2D::LABEL_Y_RIGHT, yLabelWidth, std::make_shared<LabelFormatterBytes>()). setBackgroundColor(wxColor(208, 208, 208)). //light grey setSelectionMode(Graph2D::SELECT_NONE)); pnl.m_panelGraphItems->setAttributes(Graph2D::MainAttributes(). - setLabelX(Graph2D::X_LABEL_BOTTOM, xLabelHeight, std::make_shared<LabelFormatterTimeElapsed>(false)). - setLabelY(Graph2D::Y_LABEL_RIGHT, yLabelWidth, std::make_shared<LabelFormatterItemCount>()). + setLabelX(Graph2D::LABEL_X_BOTTOM, xLabelHeight, std::make_shared<LabelFormatterTimeElapsed>(false)). + setLabelY(Graph2D::LABEL_Y_RIGHT, yLabelWidth, std::make_shared<LabelFormatterItemCount>()). setBackgroundColor(wxColor(208, 208, 208)). //light grey setSelectionMode(Graph2D::SELECT_NONE)); - const wxColor colCurveAreaBytes(111, 255, 99); //light green - const wxColor colCurveAreaItems(127, 147, 255); //light blue - - const wxColor colCurveAreaBytesRim(20, 200, 0); //medium green - const wxColor colCurveAreaItemsRim(90, 120, 255); //medium blue - pnl.m_panelGraphBytes->setCurve(curveDataBytesTotal, Graph2D::CurveAttributes().setLineWidth(1).fillCurveArea(*wxWHITE).setColor(wxColor(192, 192, 192))); //medium grey pnl.m_panelGraphItems->setCurve(curveDataItemsTotal, Graph2D::CurveAttributes().setLineWidth(1).fillCurveArea(*wxWHITE).setColor(wxColor(192, 192, 192))); //medium grey pnl.m_panelGraphBytes->addCurve(curveDataBytesCurrent, Graph2D::CurveAttributes().setLineWidth(1).fillCurveArea(wxColor(205, 255, 202))./*faint green*/ setColor(wxColor(12, 128, 0))); //dark green pnl.m_panelGraphItems->addCurve(curveDataItemsCurrent, Graph2D::CurveAttributes().setLineWidth(1).fillCurveArea(wxColor(198, 206, 255))./*faint blue */ setColor(wxColor(53, 25, 255))); //dark blue - pnl.m_panelGraphBytes->addCurve(curveDataBytes, Graph2D::CurveAttributes().setLineWidth(2).fillCurveArea(colCurveAreaBytes).setColor(colCurveAreaBytesRim)); - pnl.m_panelGraphItems->addCurve(curveDataItems, Graph2D::CurveAttributes().setLineWidth(2).fillCurveArea(colCurveAreaItems).setColor(colCurveAreaItemsRim)); + pnl.m_panelGraphBytes->addCurve(curveDataBytes, Graph2D::CurveAttributes().setLineWidth(2).fillCurveArea(getColorCurveAreaBytes()).setColor(getColorCurveAreaBytesRim())); + pnl.m_panelGraphItems->addCurve(curveDataItems, Graph2D::CurveAttributes().setLineWidth(2).fillCurveArea(getColorCurveAreaItems()).setColor(getColorCurveAreaItemsRim())); //graph legend: auto generateSquareBitmap = [&](const wxColor& fillCol, const wxColor& borderCol) @@ -1338,8 +1408,8 @@ SyncProgressDialogImpl<TopLevelDialog>::SyncProgressDialogImpl(long style, //wxF } return bmpSquare; }; - pnl.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(colCurveAreaBytes, colCurveAreaBytesRim)); - pnl.m_bitmapGraphKeyItems->SetBitmap(generateSquareBitmap(colCurveAreaItems, colCurveAreaItemsRim)); + pnl.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorCurveAreaBytes(), getColorCurveAreaBytesRim())); + pnl.m_bitmapGraphKeyItems->SetBitmap(generateSquareBitmap(getColorCurveAreaItems(), getColorCurveAreaItemsRim())); //allow changing the "on completion" command pnl.m_comboBoxOnCompletion->setHistory(onCompletionHistory, onCompletionHistory.size()); //-> we won't use addItemHistory() later @@ -1440,7 +1510,7 @@ void SyncProgressDialogImpl<TopLevelDialog>::initNewPhase() phaseStartMs = timeElapsed.timeMs(); - updateGuiInt(false); + updateGuiInt(false /*allowYield*/); } @@ -1457,10 +1527,10 @@ void SyncProgressDialogImpl<TopLevelDialog>::notifyProgressChange() //noexcept! case ProcessCallback::PHASE_COMPARING_CONTENT: case ProcessCallback::PHASE_SYNCHRONIZING: { - const std::int64_t dataCurrent = syncStat_->getDataCurrent (syncStat_->currentPhase()); - const int itemsCurrent = syncStat_->getObjectsCurrent(syncStat_->currentPhase()); + const std::int64_t bytesCurrent = syncStat_->getBytesCurrent(syncStat_->currentPhase()); + const int itemsCurrent = syncStat_->getItemsCurrent(syncStat_->currentPhase()); - curveDataBytes->addRecord(timeElapsed.timeMs(), dataCurrent); + curveDataBytes->addRecord(timeElapsed.timeMs(), bytesCurrent); curveDataItems->addRecord(timeElapsed.timeMs(), itemsCurrent); } break; @@ -1543,7 +1613,7 @@ void SyncProgressDialogImpl<TopLevelDialog>::updateGuiInt(bool allowYield) case ProcessCallback::PHASE_NONE: case ProcessCallback::PHASE_SCANNING: //dialog caption, taskbar, systray tooltip - setExternalStatus(getDialogPhaseText(syncStat_, paused_, finalResult), toGuiString(syncStat_->getObjectsCurrent(ProcessCallback::PHASE_SCANNING))); //status text may be "paused"! + setExternalStatus(getDialogPhaseText(syncStat_, paused_, finalResult), toGuiString(syncStat_->getItemsCurrent(ProcessCallback::PHASE_SCANNING))); //status text may be "paused"! //progress indicators if (trayIcon.get()) trayIcon->setProgress(1); //100% = regular FFS logo @@ -1551,11 +1621,11 @@ void SyncProgressDialogImpl<TopLevelDialog>::updateGuiInt(bool allowYield) //ignore graphs: should already have been cleared in initNewPhase() //remaining objects and data - setText(*pnl.m_staticTextRemainingObj , L"-", &layoutChanged); - setText(*pnl.m_staticTextDataRemaining, L"", &layoutChanged); + setText(*pnl.m_staticTextItemsRemaining, L"-", &layoutChanged); + setText(*pnl.m_staticTextBytesRemaining, L"", &layoutChanged); //remaining time and speed - setText(*pnl.m_staticTextRemTime, L"-", &layoutChanged); + setText(*pnl.m_staticTextTimeRemaining, L"-", &layoutChanged); pnl.m_panelGraphBytes->setAttributes(pnl.m_panelGraphBytes->getAttributes().setCornerText(wxString(), Graph2D::CORNER_TOP_LEFT)); pnl.m_panelGraphItems->setAttributes(pnl.m_panelGraphItems->getAttributes().setCornerText(wxString(), Graph2D::CORNER_TOP_LEFT)); break; @@ -1563,39 +1633,39 @@ void SyncProgressDialogImpl<TopLevelDialog>::updateGuiInt(bool allowYield) case ProcessCallback::PHASE_COMPARING_CONTENT: case ProcessCallback::PHASE_SYNCHRONIZING: { - const std::int64_t dataCurrent = syncStat_->getDataCurrent (syncStat_->currentPhase()); - const std::int64_t dataTotal = syncStat_->getDataTotal (syncStat_->currentPhase()); - const int itemsCurrent = syncStat_->getObjectsCurrent(syncStat_->currentPhase()); - const int itemsTotal = syncStat_->getObjectsTotal (syncStat_->currentPhase()); + const std::int64_t bytesCurrent = syncStat_->getBytesCurrent(syncStat_->currentPhase()); + const std::int64_t bytesTotal = syncStat_->getBytesTotal (syncStat_->currentPhase()); + const int itemsCurrent = syncStat_->getItemsCurrent(syncStat_->currentPhase()); + const int itemsTotal = syncStat_->getItemsTotal (syncStat_->currentPhase()); //add both data + obj-count, to handle "deletion-only" cases - const double fraction = dataTotal + itemsTotal == 0 ? 1 : std::max(0.0, 1.0 * (dataCurrent + itemsCurrent) / (dataTotal + itemsTotal)); + const double fractionTotal = bytesTotal + itemsTotal == 0 ? 0 : 1.0 * (bytesCurrent + itemsCurrent) / (bytesTotal + itemsTotal); //---------------------------------------------------------------------------------------------------- //dialog caption, taskbar, systray tooltip - setExternalStatus(getDialogPhaseText(syncStat_, paused_, finalResult), fractionToString(fraction)); //status text may be "paused"! + setExternalStatus(getDialogPhaseText(syncStat_, paused_, finalResult), fractionToString(fractionTotal)); //status text may be "paused"! //progress indicators - if (trayIcon.get()) trayIcon->setProgress(fraction); - if (taskbar_.get()) taskbar_->setProgress(fraction); + if (trayIcon.get()) trayIcon->setProgress(fractionTotal); + if (taskbar_.get()) taskbar_->setProgress(fractionTotal); //constant line graph - curveDataBytesCurrent->setValue(timeNowMs / 1000.0, dataCurrent); + curveDataBytesCurrent->setValue(timeNowMs / 1000.0, bytesCurrent); curveDataItemsCurrent->setValue(timeNowMs / 1000.0, itemsCurrent); //tentatively update total time, may be improved on below: - const double timeTotalSecTentative = dataTotal == dataCurrent ? timeNowMs / 1000.0 : std::max(curveDataBytesTotal->getValueX(), timeNowMs / 1000.0); - curveDataBytesTotal->setValue(timeTotalSecTentative, dataTotal); + const double timeTotalSecTentative = bytesTotal == bytesCurrent ? timeNowMs / 1000.0 : std::max(curveDataBytesTotal->getValueX(), timeNowMs / 1000.0); + curveDataBytesTotal->setValue(timeTotalSecTentative, bytesTotal); curveDataItemsTotal->setValue(timeTotalSecTentative, itemsTotal); //even though notifyProgressChange() already set the latest data, let's add another sample to have all curves consider "timeNowMs" //no problem with adding too many records: CurveDataStatistics will remove duplicate entries! - curveDataBytes->addRecord(timeNowMs, dataCurrent); + curveDataBytes->addRecord(timeNowMs, bytesCurrent); curveDataItems->addRecord(timeNowMs, itemsCurrent); - //remaining objects and data - setText(*pnl.m_staticTextRemainingObj, toGuiString(itemsTotal - itemsCurrent), &layoutChanged); - setText(*pnl.m_staticTextDataRemaining, L"(" + filesizeToShortString(dataTotal - dataCurrent) + L")", &layoutChanged); + //remaining item and byte count + setText(*pnl.m_staticTextItemsRemaining, toGuiString(itemsTotal - itemsCurrent), &layoutChanged); + setText(*pnl.m_staticTextBytesRemaining, L"(" + filesizeToShortString(bytesTotal - bytesCurrent) + L")", &layoutChanged); //it's possible data remaining becomes shortly negative if last file synced has ADS data and the dataTotal was not yet corrected! //remaining time and speed @@ -1606,7 +1676,7 @@ void SyncProgressDialogImpl<TopLevelDialog>::updateGuiInt(bool allowYield) timeLastSpeedEstimateMs = timeNowMs; if (numeric::dist(phaseStartMs, timeNowMs) >= 1000) //discard stats for first second: probably messy - perf->addSample(itemsCurrent, dataCurrent, timeNowMs); + perf->addSample(itemsCurrent, bytesCurrent, timeNowMs); //current speed -> Win 7 copy uses 1 sec update interval instead Opt<std::wstring> bps = perf->getBytesPerSecond(); @@ -1616,8 +1686,8 @@ void SyncProgressDialogImpl<TopLevelDialog>::updateGuiInt(bool allowYield) //remaining time: display with relative error of 10% - based on samples taken every 0.5 sec only //-> call more often than once per second to correctly show last few seconds countdown, but don't call too often to avoid occasional jitter - Opt<double> remTimeSec = perf->getRemainingTimeSec(dataTotal - dataCurrent); - setText(*pnl.m_staticTextRemTime, remTimeSec ? remainingTimeToString(*remTimeSec) : L"-", &layoutChanged); + Opt<double> remTimeSec = perf->getRemainingTimeSec(bytesTotal - bytesCurrent); + setText(*pnl.m_staticTextTimeRemaining, remTimeSec ? remainingTimeToString(*remTimeSec) : L"-", &layoutChanged); //update estimated total time marker with precision of "10% remaining time" only to avoid needless jumping around: const double timeRemainingSec = remTimeSec ? *remTimeSec : 0; @@ -1864,16 +1934,16 @@ void SyncProgressDialogImpl<TopLevelDialog>::processHasFinished(SyncResult resul case ProcessCallback::PHASE_COMPARING_CONTENT: case ProcessCallback::PHASE_SYNCHRONIZING: { - const int itemsCurrent = syncStat_->getObjectsCurrent(syncStat_->currentPhase()); - const int itemsTotal = syncStat_->getObjectsTotal (syncStat_->currentPhase()); - const std::int64_t dataCurrent = syncStat_->getDataCurrent (syncStat_->currentPhase()); - const std::int64_t dataTotal = syncStat_->getDataTotal (syncStat_->currentPhase()); - assert(dataCurrent <= dataTotal); + const int itemsCurrent = syncStat_->getItemsCurrent(syncStat_->currentPhase()); + const int itemsTotal = syncStat_->getItemsTotal (syncStat_->currentPhase()); + const std::int64_t bytesCurrent = syncStat_->getBytesCurrent(syncStat_->currentPhase()); + const std::int64_t bytesTotal = syncStat_->getBytesTotal (syncStat_->currentPhase()); + assert(bytesCurrent <= bytesTotal); //set overall speed (instead of current speed) const int64_t timeDelta = timeElapsed.timeMs() - phaseStartMs; //we need to consider "time within current phase" not total "timeElapsed"! - const wxString overallBytesPerSecond = timeDelta == 0 ? std::wstring() : filesizeToShortString(dataCurrent * 1000 / timeDelta) + _("/sec"); + const wxString overallBytesPerSecond = timeDelta == 0 ? std::wstring() : filesizeToShortString(bytesCurrent * 1000 / timeDelta) + _("/sec"); const wxString overallItemsPerSecond = timeDelta == 0 ? std::wstring() : replaceCpy(_("%x items/sec"), L"%x", formatThreeDigitPrecision(itemsCurrent * 1000.0 / timeDelta)); pnl.m_panelGraphBytes->setAttributes(pnl.m_panelGraphBytes->getAttributes().setCornerText(overallBytesPerSecond, Graph2D::CORNER_TOP_LEFT)); @@ -1881,12 +1951,12 @@ void SyncProgressDialogImpl<TopLevelDialog>::processHasFinished(SyncResult resul //show new element "items processed" pnl.m_panelItemsProcessed->Show(); - pnl.m_staticTextProcessedObj ->SetLabel(toGuiString(itemsCurrent)); - pnl.m_staticTextDataProcessed->SetLabel(L"(" + filesizeToShortString(dataCurrent) + L")"); + pnl.m_staticTextItemsProcessed->SetLabel(toGuiString(itemsCurrent)); + pnl.m_staticTextBytesProcessed->SetLabel(L"(" + filesizeToShortString(bytesCurrent) + L")"); //hide remaining elements... if (itemsCurrent == itemsTotal && //...if everything was processed successfully - dataCurrent == dataTotal) + bytesCurrent == bytesTotal) pnl.m_panelItemsRemaining->Hide(); } break; diff --git a/FreeFileSync/Source/ui/progress_indicator.h b/FreeFileSync/Source/ui/progress_indicator.h index b02c6ad9..b8566826 100644 --- a/FreeFileSync/Source/ui/progress_indicator.h +++ b/FreeFileSync/Source/ui/progress_indicator.h @@ -24,7 +24,8 @@ public: void init(const zen::Statistics& syncStat); //begin of sync: make visible, set pointer to "syncStat", initialize all status values void teardown(); //end of sync: hide again, clear pointer to "syncStat" - void switchToCompareBytewise(); + void initNewPhase(); //call after "StatusHandler::initNewPhase" + void updateStatusPanelNow(); private: diff --git a/FreeFileSync/Source/ui/search.cpp b/FreeFileSync/Source/ui/search.cpp index d7adb70e..62b4ed2a 100644 --- a/FreeFileSync/Source/ui/search.cpp +++ b/FreeFileSync/Source/ui/search.cpp @@ -40,7 +40,7 @@ private: template <bool respectCase> ptrdiff_t findRow(const Grid& grid, //return -1 if no matching row found - const wxString& searchString, + const std::wstring& searchString, size_t rowFirst, //specify area to search: size_t rowLast) // [rowFirst, rowLast) { @@ -50,7 +50,7 @@ ptrdiff_t findRow(const Grid& grid, //return -1 if no matching row found erase_if(colAttr, [](const Grid::ColumnAttribute& ca) { return !ca.visible_; }); if (!colAttr.empty()) { - const MatchFound<respectCase> matchFound(copyStringTo<std::wstring>(searchString)); + const MatchFound<respectCase> matchFound(searchString); for (size_t row = rowFirst; row < rowLast; ++row) for (auto iterCol = colAttr.begin(); iterCol != colAttr.end(); ++iterCol) @@ -63,7 +63,7 @@ ptrdiff_t findRow(const Grid& grid, //return -1 if no matching row found } -std::pair<const Grid*, ptrdiff_t> zen::findGridMatch(const Grid& grid1, const Grid& grid2, const wxString& searchString, bool respectCase) +std::pair<const Grid*, ptrdiff_t> zen::findGridMatch(const Grid& grid1, const Grid& grid2, const std::wstring& searchString, bool respectCase) { //PERF_START diff --git a/FreeFileSync/Source/ui/search.h b/FreeFileSync/Source/ui/search.h index 5cd94edc..b353539b 100644 --- a/FreeFileSync/Source/ui/search.h +++ b/FreeFileSync/Source/ui/search.h @@ -11,7 +11,7 @@ namespace zen { -std::pair<const Grid*, ptrdiff_t> findGridMatch(const Grid& grid1, const Grid& grid2, const wxString& searchString, bool respectCase); +std::pair<const Grid*, ptrdiff_t> findGridMatch(const Grid& grid1, const Grid& grid2, const std::wstring& searchString, bool respectCase); //returns (grid/row) where the value was found, (nullptr, -1) if not found } diff --git a/FreeFileSync/Source/ui/sync_cfg.cpp b/FreeFileSync/Source/ui/sync_cfg.cpp index 2b3fa496..2f9d8f53 100644 --- a/FreeFileSync/Source/ui/sync_cfg.cpp +++ b/FreeFileSync/Source/ui/sync_cfg.cpp @@ -24,6 +24,9 @@ #ifdef ZEN_WIN #include <wx+/mouse_move_dlg.h> + +#elif defined ZEN_MAC + #include <zen/osx_string.h> #endif using namespace zen; @@ -69,9 +72,9 @@ private: void OnHelpTimeShift (wxHyperlinkEvent& event) override { displayHelpEntry(L"daylight-saving-time", this); } void OnToggleLocalCompSettings(wxCommandEvent& event) override { updateCompGui(); updateSyncGui(); /*affects sync settings, too!*/ } - void OnCompByTimeSize (wxCommandEvent& event) override { localCmpVar = CMP_BY_TIME_SIZE; updateCompGui(); updateSyncGui(); } // - void OnCompByContent (wxCommandEvent& event) override { localCmpVar = CMP_BY_CONTENT; updateCompGui(); updateSyncGui(); } //affects sync settings, too! - void OnCompBySize (wxCommandEvent& event) override { localCmpVar = CMP_BY_SIZE; updateCompGui(); updateSyncGui(); } // + void OnCompByTimeSize (wxCommandEvent& event) override { localCmpVar = CompareVariant::TIME_SIZE; updateCompGui(); updateSyncGui(); } // + void OnCompByContent (wxCommandEvent& event) override { localCmpVar = CompareVariant::CONTENT; updateCompGui(); updateSyncGui(); } //affects sync settings, too! + void OnCompBySize (wxCommandEvent& event) override { localCmpVar = CompareVariant::SIZE; updateCompGui(); updateSyncGui(); } // void OnCompByTimeSizeDouble (wxMouseEvent& event) override; void OnCompBySizeDouble (wxMouseEvent& event) override; void OnCompByContentDouble (wxMouseEvent& event) override; @@ -83,7 +86,7 @@ private: void updateCompGui(); - CompareVariant localCmpVar = CMP_BY_TIME_SIZE; + CompareVariant localCmpVar = CompareVariant::TIME_SIZE; //------------- filter panel -------------------------- void OnHelpShowExamples(wxHyperlinkEvent& event) override { displayHelpEntry(L"exclude-items", this); } @@ -101,10 +104,10 @@ private: EnumDescrList<UnitSize> enumSizeDescr; //------------- synchronization panel ----------------- - void OnSyncTwoWay(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::TWOWAY; updateSyncGui(); } - void OnSyncMirror(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::MIRROR; updateSyncGui(); } - void OnSyncUpdate(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::UPDATE; updateSyncGui(); } - void OnSyncCustom(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::CUSTOM; updateSyncGui(); } + void OnSyncTwoWay(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::TWO_WAY; updateSyncGui(); } + void OnSyncMirror(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::MIRROR; updateSyncGui(); } + void OnSyncUpdate(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::UPDATE; updateSyncGui(); } + void OnSyncCustom(wxCommandEvent& event) override { directionCfg.var = DirectionConfig::CUSTOM; updateSyncGui(); } void OnToggleLocalSyncSettings(wxCommandEvent& event) override { updateSyncGui(); } void OnToggleDetectMovedFiles (wxCommandEvent& event) override { directionCfg.detectMovedFiles = !directionCfg.detectMovedFiles; updateSyncGui(); } //parameter NOT owned by checkbox! @@ -122,9 +125,9 @@ private: void OnDifferent (wxCommandEvent& event) override; void OnConflict (wxCommandEvent& event) override; - void OnDeletionPermanent (wxCommandEvent& event) override { handleDeletion = DELETE_PERMANENTLY; updateSyncGui(); } - void OnDeletionRecycler (wxCommandEvent& event) override { handleDeletion = DELETE_TO_RECYCLER; updateSyncGui(); } - void OnDeletionVersioning (wxCommandEvent& event) override { handleDeletion = DELETE_TO_VERSIONING; updateSyncGui(); } + void OnDeletionPermanent (wxCommandEvent& event) override { handleDeletion = DeletionPolicy::PERMANENT; updateSyncGui(); } + void OnDeletionRecycler (wxCommandEvent& event) override { handleDeletion = DeletionPolicy::RECYCLER; updateSyncGui(); } + void OnDeletionVersioning (wxCommandEvent& event) override { handleDeletion = DeletionPolicy::VERSIONING; updateSyncGui(); } void OnToggleDeletionType(wxCommandEvent& event) override { toggleDeletionPolicy(handleDeletion); updateSyncGui(); } @@ -148,7 +151,7 @@ private: //parameters with ownership NOT within GUI controls! DirectionConfig directionCfg; - DeletionPolicy handleDeletion = DELETE_TO_RECYCLER; //use Recycler, delete permanently or move to user-defined location + DeletionPolicy handleDeletion = DeletionPolicy::RECYCLER; //use Recycler, delete permanently or move to user-defined location OnGuiError onGuiError = ON_GUIERROR_POPUP; EnumDescrList<VersioningStyle> enumVersioningStyle; @@ -179,11 +182,11 @@ std::wstring getCompVariantDescription(CompareVariant var) { switch (var) { - case CMP_BY_TIME_SIZE: + case CompareVariant::TIME_SIZE: return _("Identify equal files by comparing modification time and size."); - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: return _("Identify equal files by comparing the file content."); - case CMP_BY_SIZE: + case CompareVariant::SIZE: return _("Identify equal files by comparing their file size."); } assert(false); @@ -195,7 +198,7 @@ std::wstring getSyncVariantDescription(DirectionConfig::Variant var) { switch (var) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: return _("Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database."); case DirectionConfig::MIRROR: return _("Create a mirror backup of the left folder by adapting the right folder to match."); @@ -261,13 +264,13 @@ ConfigDialog::ConfigDialog(wxWindow* parent, setRelativeFontSize(*m_toggleBtnBySize, 1.25); setRelativeFontSize(*m_toggleBtnByContent, 1.25); - m_toggleBtnByTimeSize->SetToolTip(getCompVariantDescription(CMP_BY_TIME_SIZE)); - m_toggleBtnByContent ->SetToolTip(getCompVariantDescription(CMP_BY_CONTENT)); - m_toggleBtnBySize ->SetToolTip(getCompVariantDescription(CMP_BY_SIZE)); + m_toggleBtnByTimeSize->SetToolTip(getCompVariantDescription(CompareVariant::TIME_SIZE)); + m_toggleBtnByContent ->SetToolTip(getCompVariantDescription(CompareVariant::CONTENT)); + m_toggleBtnBySize ->SetToolTip(getCompVariantDescription(CompareVariant::SIZE)); - m_bitmapByTimeSize->SetToolTip(getCompVariantDescription(CMP_BY_TIME_SIZE)); - m_bitmapByContent ->SetToolTip(getCompVariantDescription(CMP_BY_CONTENT)); - m_bitmapBySize ->SetToolTip(getCompVariantDescription(CMP_BY_SIZE)); + m_bitmapByTimeSize->SetToolTip(getCompVariantDescription(CompareVariant::TIME_SIZE)); + m_bitmapByContent ->SetToolTip(getCompVariantDescription(CompareVariant::CONTENT)); + m_bitmapBySize ->SetToolTip(getCompVariantDescription(CompareVariant::SIZE)); //------------- filter panel -------------------------- #ifndef __WXGTK__ //wxWidgets breaks portability promise once again @@ -280,26 +283,26 @@ ConfigDialog::ConfigDialog(wxWindow* parent, m_textCtrlExclude->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(ConfigDialog::onFilterKeyEvent), nullptr, this); enumTimeDescr. - add(UTIME_NONE, L"(" + _("None") + L")"). //meta options should be enclosed in parentheses - add(UTIME_TODAY, _("Today")). - // add(UTIME_THIS_WEEK, _("This week")). - add(UTIME_THIS_MONTH, _("This month")). - add(UTIME_THIS_YEAR, _("This year")). - add(UTIME_LAST_X_DAYS, _("Last x days")); + add(UnitTime::NONE, L"(" + _("None") + L")"). //meta options should be enclosed in parentheses + add(UnitTime::TODAY, _("Today")). + //add(UnitTime::THIS_WEEK, _("This week")). + add(UnitTime::THIS_MONTH, _("This month")). + add(UnitTime::THIS_YEAR, _("This year")). + add(UnitTime::LAST_X_DAYS, _("Last x days")); enumSizeDescr. - add(USIZE_NONE, L"(" + _("None") + L")"). //meta options should be enclosed in parentheses - add(USIZE_BYTE, _("Byte")). - add(USIZE_KB, _("KB")). - add(USIZE_MB, _("MB")); + add(UnitSize::NONE, L"(" + _("None") + L")"). //meta options should be enclosed in parentheses + add(UnitSize::BYTE, _("Byte")). + add(UnitSize::KB, _("KB")). + add(UnitSize::MB, _("MB")); //------------- synchronization panel ----------------- - m_toggleBtnTwoWay->SetLabel(getVariantName(DirectionConfig::TWOWAY)); + m_toggleBtnTwoWay->SetLabel(getVariantName(DirectionConfig::TWO_WAY)); m_toggleBtnMirror->SetLabel(getVariantName(DirectionConfig::MIRROR)); m_toggleBtnUpdate->SetLabel(getVariantName(DirectionConfig::UPDATE)); m_toggleBtnCustom->SetLabel(getVariantName(DirectionConfig::CUSTOM)); - m_toggleBtnTwoWay->SetToolTip(getSyncVariantDescription(DirectionConfig::TWOWAY)); + m_toggleBtnTwoWay->SetToolTip(getSyncVariantDescription(DirectionConfig::TWO_WAY)); m_toggleBtnMirror->SetToolTip(getSyncVariantDescription(DirectionConfig::MIRROR)); m_toggleBtnUpdate->SetToolTip(getSyncVariantDescription(DirectionConfig::UPDATE)); m_toggleBtnCustom->SetToolTip(getSyncVariantDescription(DirectionConfig::CUSTOM)); @@ -317,8 +320,8 @@ ConfigDialog::ConfigDialog(wxWindow* parent, setRelativeFontSize(*m_toggleBtnCustom, 1.25); enumVersioningStyle. - add(VER_STYLE_REPLACE, _("Replace"), _("Move files and replace if existing")). - add(VER_STYLE_ADD_TIMESTAMP, _("Time stamp"), _("Append a time stamp to each file name")); + add(VersioningStyle::REPLACE, _("Replace"), _("Move files and replace if existing")). + add(VersioningStyle::ADD_TIMESTAMP, _("Time stamp"), _("Append a time stamp to each file name")); //use spacer to keep dialog height stable, no matter if versioning options are visible bSizerDelHandling->Add(0, m_panelVersioning->GetSize().GetHeight()); @@ -490,7 +493,7 @@ std::shared_ptr<const CompConfig> ConfigDialog::getCompConfig() const CompConfig compCfg; compCfg.compareVar = localCmpVar; - compCfg.handleSymlinks = !m_checkBoxSymlinksInclude->GetValue() ? SYMLINK_EXCLUDE : m_radioBtnSymlinksDirect->GetValue() ? SYMLINK_DIRECT : SYMLINK_FOLLOW; + compCfg.handleSymlinks = !m_checkBoxSymlinksInclude->GetValue() ? SymLinkHandling::EXCLUDE : m_radioBtnSymlinksDirect->GetValue() ? SymLinkHandling::DIRECT : SymLinkHandling::FOLLOW; compCfg.ignoreTimeShiftMinutes = fromTimeShiftPhrase(copyStringTo<std::wstring>(m_textCtrlTimeShift->GetValue())); return std::make_shared<const CompConfig>(compCfg); @@ -508,15 +511,15 @@ void ConfigDialog::setCompConfig(std::shared_ptr<const CompConfig> compCfg) switch (compCfg->handleSymlinks) { - case SYMLINK_EXCLUDE: + case SymLinkHandling::EXCLUDE: m_checkBoxSymlinksInclude->SetValue(false); m_radioBtnSymlinksFollow ->SetValue(true); break; - case SYMLINK_FOLLOW: + case SymLinkHandling::FOLLOW: m_checkBoxSymlinksInclude->SetValue(true); m_radioBtnSymlinksFollow->SetValue(true); break; - case SYMLINK_DIRECT: + case SymLinkHandling::DIRECT: m_checkBoxSymlinksInclude->SetValue(true); m_radioBtnSymlinksDirect->SetValue(true); break; @@ -543,13 +546,13 @@ void ConfigDialog::updateCompGui() if (m_checkBoxUseLocalCmpOptions->GetValue()) //help wxWidgets a little to render inactive config state (need on Windows, NOT on Linux!) switch (localCmpVar) { - case CMP_BY_TIME_SIZE: + case CompareVariant::TIME_SIZE: m_toggleBtnByTimeSize->SetValue(true); break; - case CMP_BY_CONTENT: + case CompareVariant::CONTENT: m_toggleBtnByContent->SetValue(true); break; - case CMP_BY_SIZE: + case CompareVariant::SIZE: m_toggleBtnBySize->SetValue(true); break; } @@ -562,9 +565,9 @@ void ConfigDialog::updateCompGui() else bmpCtrl.SetBitmap(greyScale(bmp)); }; - setBitmap(*m_bitmapByTimeSize, localCmpVar == CMP_BY_TIME_SIZE, getResourceImage(L"file-time")); - setBitmap(*m_bitmapByContent, localCmpVar == CMP_BY_CONTENT, getResourceImage(L"file-content")); - setBitmap(*m_bitmapBySize, localCmpVar == CMP_BY_SIZE, getResourceImage(L"file-size")); + setBitmap(*m_bitmapByTimeSize, localCmpVar == CompareVariant::TIME_SIZE, getResourceImage(L"file-time")); + setBitmap(*m_bitmapByContent, localCmpVar == CompareVariant::CONTENT, getResourceImage(L"file-content")); + setBitmap(*m_bitmapBySize, localCmpVar == CompareVariant::SIZE, getResourceImage(L"file-size")); //active variant description: setText(*m_textCtrlCompVarDescription, L"\n" + getCompVariantDescription(localCmpVar)); @@ -593,8 +596,19 @@ void ConfigDialog::onFilterKeyEvent(wxKeyEvent& event) FilterConfig ConfigDialog::getFilterConfig() const { - return FilterConfig(utfCvrtTo<Zstring>(m_textCtrlInclude->GetValue()), - utfCvrtTo<Zstring>(m_textCtrlExclude->GetValue()), + Zstring includeFilter = utfCvrtTo<Zstring>(m_textCtrlInclude->GetValue()); + Zstring exludeFilter = utfCvrtTo<Zstring>(m_textCtrlExclude->GetValue()); + +#ifdef ZEN_MAC //normalize all text input (see see native_traverser_impl.h) + try + { + includeFilter = osx::normalizeUtfForPosix(includeFilter.c_str()); //throw SysError + exludeFilter = osx::normalizeUtfForPosix( exludeFilter.c_str()); // + } + catch (SysError&) { assert(false); } +#endif + + return FilterConfig(includeFilter, exludeFilter, m_spinCtrlTimespan->GetValue(), getEnumVal(enumTimeDescr, *m_choiceUnitTimespan), m_spinCtrlMinSize->GetValue(), @@ -637,12 +651,12 @@ void ConfigDialog::updateFilterGui() }; setStatusBitmap(*m_bitmapInclude, L"filter_include", !NameFilter::isNull(activeCfg.includeFilter, FilterConfig().excludeFilter)); setStatusBitmap(*m_bitmapExclude, L"filter_exclude", !NameFilter::isNull(FilterConfig().includeFilter, activeCfg.excludeFilter)); - setStatusBitmap(*m_bitmapFilterDate, L"file-time", activeCfg.unitTimeSpan != UTIME_NONE); - setStatusBitmap(*m_bitmapFilterSize, L"file-size", activeCfg.unitSizeMin != USIZE_NONE || activeCfg.unitSizeMax != USIZE_NONE); + setStatusBitmap(*m_bitmapFilterDate, L"file-time", activeCfg.unitTimeSpan != UnitTime::NONE); + setStatusBitmap(*m_bitmapFilterSize, L"file-size", activeCfg.unitSizeMin != UnitSize::NONE || activeCfg.unitSizeMax != UnitSize::NONE); - m_spinCtrlTimespan->Enable(activeCfg.unitTimeSpan == UTIME_LAST_X_DAYS); - m_spinCtrlMinSize ->Enable(activeCfg.unitSizeMin != USIZE_NONE); - m_spinCtrlMaxSize ->Enable(activeCfg.unitSizeMax != USIZE_NONE); + m_spinCtrlTimespan->Enable(activeCfg.unitTimeSpan == UnitTime::LAST_X_DAYS); + m_spinCtrlMinSize ->Enable(activeCfg.unitSizeMin != UnitSize::NONE); + m_spinCtrlMaxSize ->Enable(activeCfg.unitSizeMax != UnitSize::NONE); m_buttonClear->Enable(!(activeCfg == FilterConfig())); } @@ -701,7 +715,7 @@ void toggleCustomSyncConfig(DirectionConfig& directionCfg, SyncDirection& custSy { switch (directionCfg.var) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: assert(false); break; case DirectionConfig::MIRROR: @@ -787,7 +801,7 @@ void updateSyncDirectionIcons(const DirectionConfig& directionCfg, wxBitmapButton& buttonDifferent, wxBitmapButton& buttonConflict) { - if (directionCfg.var != DirectionConfig::TWOWAY) //automatic mode needs no sync-directions + if (directionCfg.var != DirectionConfig::TWO_WAY) //automatic mode needs no sync-directions { auto updateButton = [](wxBitmapButton& button, SyncDirection dir, const wchar_t* imgNameLeft, const wchar_t* imgNameNone, const wchar_t* imgNameRight, @@ -844,14 +858,14 @@ void toggleDeletionPolicy(DeletionPolicy& deletionPolicy) { switch (deletionPolicy) { - case DELETE_PERMANENTLY: - deletionPolicy = DELETE_TO_VERSIONING; + case DeletionPolicy::PERMANENT: + deletionPolicy = DeletionPolicy::VERSIONING; break; - case DELETE_TO_RECYCLER: - deletionPolicy = DELETE_PERMANENTLY; + case DeletionPolicy::RECYCLER: + deletionPolicy = DeletionPolicy::PERMANENT; break; - case DELETE_TO_VERSIONING: - deletionPolicy = DELETE_TO_RECYCLER; + case DeletionPolicy::VERSIONING: + deletionPolicy = DeletionPolicy::RECYCLER; break; } } @@ -928,22 +942,22 @@ void ConfigDialog::updateSyncGui() }; //display only relevant sync options - m_bitmapDatabase ->Show(directionCfg.var == DirectionConfig::TWOWAY); - fgSizerSyncDirections->Show(directionCfg.var != DirectionConfig::TWOWAY); + m_bitmapDatabase ->Show(directionCfg.var == DirectionConfig::TWO_WAY); + fgSizerSyncDirections->Show(directionCfg.var != DirectionConfig::TWO_WAY); - if (directionCfg.var == DirectionConfig::TWOWAY) + if (directionCfg.var == DirectionConfig::TWO_WAY) setBitmap(*m_bitmapDatabase, true, getResourceImage(L"database")); else { const CompareVariant activeCmpVar = m_checkBoxUseLocalCmpOptions->GetValue() ? localCmpVar : globalCfg_.cmpConfig.compareVar; - m_bitmapLeftNewer ->Show(activeCmpVar == CMP_BY_TIME_SIZE); - m_bpButtonLeftNewer ->Show(activeCmpVar == CMP_BY_TIME_SIZE); - m_bitmapRightNewer ->Show(activeCmpVar == CMP_BY_TIME_SIZE); - m_bpButtonRightNewer->Show(activeCmpVar == CMP_BY_TIME_SIZE); + m_bitmapLeftNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); + m_bpButtonLeftNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); + m_bitmapRightNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); + m_bpButtonRightNewer->Show(activeCmpVar == CompareVariant::TIME_SIZE); - m_bitmapDifferent ->Show(activeCmpVar == CMP_BY_CONTENT || activeCmpVar == CMP_BY_SIZE); - m_bpButtonDifferent->Show(activeCmpVar == CMP_BY_CONTENT || activeCmpVar == CMP_BY_SIZE); + m_bitmapDifferent ->Show(activeCmpVar == CompareVariant::CONTENT || activeCmpVar == CompareVariant::SIZE); + m_bpButtonDifferent->Show(activeCmpVar == CompareVariant::CONTENT || activeCmpVar == CompareVariant::SIZE); } //active variant description: @@ -958,7 +972,7 @@ void ConfigDialog::updateSyncGui() if (m_checkBoxUseLocalSyncOptions->GetValue()) //help wxWidgets a little to render inactive config state (need on Windows, NOT on Linux!) switch (directionCfg.var) { - case DirectionConfig::TWOWAY: + case DirectionConfig::TWO_WAY: m_toggleBtnTwoWay->SetValue(true); break; case DirectionConfig::MIRROR: @@ -974,19 +988,19 @@ void ConfigDialog::updateSyncGui() switch (handleDeletion) { - case DELETE_PERMANENTLY: + case DeletionPolicy::PERMANENT: m_radioBtnPermanent->SetValue(true); m_bpButtonDeletionType->SetBitmapLabel(getResourceImage(L"delete_permanently")); m_bpButtonDeletionType->SetToolTip(_("Delete or overwrite files permanently")); break; - case DELETE_TO_RECYCLER: + case DeletionPolicy::RECYCLER: m_radioBtnRecycler->SetValue(true); m_bpButtonDeletionType->SetBitmapLabel(getResourceImage(L"delete_recycler")); m_bpButtonDeletionType->SetToolTip(_("Back up deleted and overwritten files in the recycle bin")); break; - case DELETE_TO_VERSIONING: + case DeletionPolicy::VERSIONING: m_radioBtnVersioning->SetValue(true); m_bpButtonDeletionType->SetBitmapLabel(getResourceImage(L"delete_versioning")); @@ -996,7 +1010,7 @@ void ConfigDialog::updateSyncGui() m_bpButtonDeletionType->SetBitmapDisabled(greyScale(m_bpButtonDeletionType->GetBitmap())); //fix wxWidgets' all-too-clever multi-state! - const bool versioningSelected = handleDeletion == DELETE_TO_VERSIONING; + const bool versioningSelected = handleDeletion == DeletionPolicy::VERSIONING; m_panelVersioning->Show(versioningSelected); if (versioningSelected) @@ -1006,13 +1020,13 @@ void ConfigDialog::updateSyncGui() const std::wstring pathSep = utfCvrtTo<std::wstring>(FILE_NAME_SEPARATOR); switch (getEnumVal(enumVersioningStyle, *m_choiceVersioningStyle)) { - case VER_STYLE_REPLACE: + case VersioningStyle::REPLACE: setText(*m_staticTextNamingCvtPart1, pathSep + _("Folder") + pathSep + _("File") + L".doc"); setText(*m_staticTextNamingCvtPart2Bold, L""); setText(*m_staticTextNamingCvtPart3, L""); break; - case VER_STYLE_ADD_TIMESTAMP: + case VersioningStyle::ADD_TIMESTAMP: setText(*m_staticTextNamingCvtPart1, pathSep + _("Folder") + pathSep + _("File") + L".doc "); setText(*m_staticTextNamingCvtPart2Bold, _("YYYY-MM-DD hhmmss")); setText(*m_staticTextNamingCvtPart3, L".doc"); @@ -1119,7 +1133,7 @@ bool ConfigDialog::unselectFolderPairConfig() //------- parameter validation (BEFORE writing output!) ------- //check if user-defined directory for deletion was specified: - if (syncCfg && syncCfg->handleDeletion == zen::DELETE_TO_VERSIONING) + if (syncCfg && syncCfg->handleDeletion == DeletionPolicy::VERSIONING) if (trimCpy(syncCfg->versioningFolderPhrase).empty()) { m_notebook->ChangeSelection(static_cast<size_t>(SyncConfigPanel::SYNC)); diff --git a/FreeFileSync/Source/ui/taskbar.h b/FreeFileSync/Source/ui/taskbar.h index 19d99a12..d1c3411f 100644 --- a/FreeFileSync/Source/ui/taskbar.h +++ b/FreeFileSync/Source/ui/taskbar.h @@ -11,7 +11,7 @@ #include <wx/frame.h> /* -Windows 7; show progress in windows superbar via ITaskbarList3 Interface: http://msdn.microsoft.com/en-us/library/dd391692(VS.85).aspx +Windows 7; show progress in windows superbar via ITaskbarList3 Interface: https://msdn.microsoft.com/en-us/library/dd391692 Ubuntu: use Unity interface (optional) diff --git a/FreeFileSync/Source/ui/tray_icon.cpp b/FreeFileSync/Source/ui/tray_icon.cpp index 4833fbcb..d6b2b7e5 100644 --- a/FreeFileSync/Source/ui/tray_icon.cpp +++ b/FreeFileSync/Source/ui/tray_icon.cpp @@ -125,7 +125,7 @@ public: //Windows User Experience Guidelines: show the context menu rather than doing *nothing* on single left clicks; however: //MSDN: "Double-clicking the left mouse button actually generates a sequence of four messages: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK, and WM_LBUTTONUP." - //Reference: http://msdn.microsoft.com/en-us/library/windows/desktop/ms645606%28v=vs.85%29.aspx + //Reference: https://msdn.microsoft.com/en-us/library/windows/desktop/ms645606 //=> the only way to distinguish single left click and double-click is to wait wxSystemSettings::GetMetric(wxSYS_DCLICK_MSEC) (480ms) which is way too long! } diff --git a/FreeFileSync/Source/ui/tree_view.cpp b/FreeFileSync/Source/ui/tree_view.cpp index a1420ff1..2a462aa9 100644 --- a/FreeFileSync/Source/ui/tree_view.cpp +++ b/FreeFileSync/Source/ui/tree_view.cpp @@ -739,8 +739,8 @@ namespace inline wxColor getColorPercentBorder () { return { 198, 198, 198 }; } inline wxColor getColorPercentBackground() { return { 0xf8, 0xf8, 0xf8 }; } -inline wxColor getColorTreeSelectionGradientFrom() { return getColorSelectionGradientFrom(); } -inline wxColor getColorTreeSelectionGradientTo () { return getColorSelectionGradientTo (); } +inline wxColor getColorTreeSelectionGradientFrom() { return Grid::getColorSelectionGradientFrom(); } +inline wxColor getColorTreeSelectionGradientTo () { return Grid::getColorSelectionGradientTo (); } const int iconSizeSmall = IconBuffer::getSize(IconBuffer::SIZE_SMALL); @@ -1157,7 +1157,7 @@ private: { case WXK_LEFT: case WXK_NUMPAD_LEFT: - case WXK_NUMPAD_SUBTRACT: //http://msdn.microsoft.com/en-us/library/ms971323.aspx#atg_keyboardshortcuts_windows_shortcut_keys + case WXK_NUMPAD_SUBTRACT: //https://msdn.microsoft.com/en-us/library/ms971323#atg_keyboardshortcuts_windows_shortcut_keys if (treeDataView_) switch (treeDataView_->getStatus(row)) { @@ -1223,7 +1223,7 @@ private: auto setDefaultColumns = [&] { - setShowPercentage(defaultValueShowPercentage); + setShowPercentage(naviGridShowPercentageDefault); grid_.setColumnConfig(treeview::convertConfig(getDefaultColumnAttributesNavi())); }; menu.addItem(_("&Default"), setDefaultColumns); //'&' -> reuse text from "default" buttons elsewhere diff --git a/FreeFileSync/Source/ui/tree_view.h b/FreeFileSync/Source/ui/tree_view.h index 1b74a661..be6b8973 100644 --- a/FreeFileSync/Source/ui/tree_view.h +++ b/FreeFileSync/Source/ui/tree_view.h @@ -168,8 +168,8 @@ private: | */ std::vector<std::shared_ptr<BaseFolderPair>> folderCmp; //full raw data - ColumnTypeNavi sortColumn = defaultValueLastSortColumn; - bool sortAscending = defaultValueLastSortAscending; + ColumnTypeNavi sortColumn = naviGridLastSortColumnDefault; + bool sortAscending = naviGridLastSortAscendingDefault; }; diff --git a/FreeFileSync/Source/ui/version_check.cpp b/FreeFileSync/Source/ui/version_check.cpp index 056e57ac..dcb7db8b 100644 --- a/FreeFileSync/Source/ui/version_check.cpp +++ b/FreeFileSync/Source/ui/version_check.cpp @@ -20,7 +20,7 @@ #ifdef ZEN_WIN #include <zen/win_ver.h> -// #include <zen/com_tools.h> + // #include <zen/com_tools.h> #elif defined ZEN_MAC #include <CoreServices/CoreServices.h> //Gestalt() @@ -89,7 +89,6 @@ std::wstring getIso3166Country() } - //coordinate with get_latest_version_number.php std::vector<std::pair<std::string, std::string>> geHttpPostParameters() { @@ -174,10 +173,10 @@ GetVerResult getOnlineVersion(const std::vector<std::pair<std::string, std::stri std::vector<size_t> parseVersion(const std::wstring& version) { - std::vector<size_t> output; - for (const std::wstring& digit : split(version, FFS_VERSION_SEPARATOR)) - output.push_back(stringTo<size_t>(digit)); - return output; + std::vector<size_t> output; + for (const std::wstring& digit : split(version, FFS_VERSION_SEPARATOR)) + output.push_back(stringTo<size_t>(digit)); + return output; } } @@ -297,9 +296,9 @@ struct zen::UpdateCheckResultAsync std::shared_ptr<UpdateCheckResultAsync> zen::periodicUpdateCheckRunAsync(const UpdateCheckResultPrep* resultPrep) { #ifdef ZEN_WIN - auto result = std::make_shared<UpdateCheckResultAsync>(); - result->versionStatus = getOnlineVersion(resultPrep->postParameters, result->onlineVersion); //access is thread-safe on Windows only! - return result; + auto result = std::make_shared<UpdateCheckResultAsync>(); + result->versionStatus = getOnlineVersion(resultPrep->postParameters, result->onlineVersion); //access is thread-safe on Windows only! + return result; #else return nullptr; #endif diff --git a/FreeFileSync/Source/version/version.h b/FreeFileSync/Source/version/version.h index 2a835304..636de274 100644 --- a/FreeFileSync/Source/version/version.h +++ b/FreeFileSync/Source/version/version.h @@ -3,7 +3,7 @@ namespace zen { -const wchar_t ffsVersion[] = L"8.1"; //internal linkage! +const wchar_t ffsVersion[] = L"8.2"; //internal linkage! const wchar_t FFS_VERSION_SEPARATOR = L'.'; } diff --git a/wx+/async_task.h b/wx+/async_task.h index dc699829..8525fe43 100644 --- a/wx+/async_task.h +++ b/wx+/async_task.h @@ -82,7 +82,7 @@ public: void evalResults() //call from gui thread repreatedly { - if (!inRecursion) //prevent implicit recursion, e.g. if we're called from an idle event and spawn another one via the callback below + if (!inRecursion) //prevent implicit recursion, e.g. if we're called from an idle event and spawn another one within the callback below { inRecursion = true; ZEN_ON_SCOPE_EXIT(inRecursion = false); diff --git a/wx+/context_menu.h b/wx+/context_menu.h index 9c30cb98..02fa44dc 100644 --- a/wx+/context_menu.h +++ b/wx+/context_menu.h @@ -47,10 +47,10 @@ public: commandList[newItem->GetId()] = command; } - void addRadio(const wxString& label, const std::function<void()>& command, bool checked, bool enabled = true) + void addRadio(const wxString& label, const std::function<void()>& command, bool selected, bool enabled = true) { wxMenuItem* newItem = menu->AppendRadioItem(wxID_ANY, label); - newItem->Check(checked); + newItem->Check(selected); if (!enabled) newItem->Enable(false); commandList[newItem->GetId()] = command; } diff --git a/wx+/graph.cpp b/wx+/graph.cpp index 95a6955b..0a49f764 100644 --- a/wx+/graph.cpp +++ b/wx+/graph.cpp @@ -233,12 +233,13 @@ void drawCornerText(wxDC& dc, const wxRect& graphArea, const wxString& txt, Grap //calculate intersection of polygon with half-plane template <class Function, class Function2> -void cutPoints(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, Function isInside, Function2 getIntersection) +void cutPoints(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, Function isInside, Function2 getIntersection, bool doPolygonCut) { assert(curvePoints.size() == oobMarker.size()); + if (curvePoints.size() != oobMarker.size() || curvePoints.empty()) return; - auto isMarkedOob = [&](size_t index) { return oobMarker[index] != 0; }; //test if point is start of a OOB line + auto isMarkedOob = [&](size_t index) { return oobMarker[index] != 0; }; //test if point is start of an OOB line std::vector<CurvePoint> curvePointsTmp; std::vector<char> oobMarkerTmp; @@ -256,14 +257,25 @@ void cutPoints(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarke if (isInside(curvePoints[index]) != pointInside) { pointInside = !pointInside; - const CurvePoint is = getIntersection(curvePoints[index - 1], - curvePoints[index]); //getIntersection returns *it when delta is zero + const CurvePoint is = getIntersection(curvePoints[index - 1], curvePoints[index]); //getIntersection returns "to" when delta is zero savePoint(is, !pointInside || isMarkedOob(index - 1)); } if (pointInside) savePoint(curvePoints[index], isMarkedOob(index)); } + //make sure the output polygon area is correctly shaped if either begin or end points are cut + if (doPolygonCut) //note: impacts min/max height-calculations! + if (curvePoints.size() >= 3) + if (isInside(curvePoints.front()) != pointInside) + { + assert(!oobMarkerTmp.empty()); + oobMarkerTmp.back() = true; + + const CurvePoint is = getIntersection(curvePoints.back(), curvePoints.front()); + savePoint(is, true); + } + curvePointsTmp.swap(curvePoints); oobMarkerTmp .swap(oobMarker); } @@ -297,24 +309,25 @@ private: const double y_; }; -void cutPointsOutsideX(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, double minX, double maxX) +void cutPointsOutsideX(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, double minX, double maxX, bool doPolygonCut) { - assert(std::find(oobMarker.begin(), oobMarker.end(), true) == oobMarker.end()); - cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.x >= minX; }, GetIntersectionX(minX)); - cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.x <= maxX; }, GetIntersectionX(maxX)); + cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.x >= minX; }, GetIntersectionX(minX), doPolygonCut); + cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.x <= maxX; }, GetIntersectionX(maxX), doPolygonCut); } -void cutPointsOutsideY(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, double minY, double maxY) +void cutPointsOutsideY(std::vector<CurvePoint>& curvePoints, std::vector<char>& oobMarker, double minY, double maxY, bool doPolygonCut) { - cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.y >= minY; }, GetIntersectionY(minY)); - cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.y <= maxY; }, GetIntersectionY(maxY)); + cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.y >= minY; }, GetIntersectionY(minY), doPolygonCut); + cutPoints(curvePoints, oobMarker, [&](const CurvePoint& pt) { return pt.y <= maxY; }, GetIntersectionY(maxY), doPolygonCut); } } -void ContinuousCurveData::getPoints(double minX, double maxX, int pixelWidth, std::vector<CurvePoint>& points) const +std::vector<CurvePoint> ContinuousCurveData::getPoints(double minX, double maxX, int pixelWidth) const { - if (pixelWidth <= 1) return; + std::vector<CurvePoint> points; + + if (pixelWidth <= 1) return points; const ConvertCoord cvrtX(minX, maxX, pixelWidth - 1); //map [minX, maxX] to [0, pixelWidth - 1] const std::pair<double, double> rangeX = getRangeX(); @@ -322,7 +335,7 @@ void ContinuousCurveData::getPoints(double minX, double maxX, int pixelWidth, st const double screenLow = cvrtX.realToScreen(std::max(rangeX.first, minX)); //=> xLow >= 0 const double screenHigh = cvrtX.realToScreen(std::min(rangeX.second, maxX)); //=> xHigh <= pixelWidth - 1 //if double is larger than what int can represent => undefined behavior! - //=> convert to int not before checking value range! + //=> convert to int *after* checking value range! if (screenLow <= screenHigh) { const int posFrom = std::ceil (screenLow ); //do not step outside [minX, maxX] in loop below! @@ -335,12 +348,14 @@ void ContinuousCurveData::getPoints(double minX, double maxX, int pixelWidth, st points.emplace_back(x, getValue(x)); } } + return points; } -void SparseCurveData::getPoints(double minX, double maxX, int pixelWidth, std::vector<CurvePoint>& points) const +std::vector<CurvePoint> SparseCurveData::getPoints(double minX, double maxX, int pixelWidth) const { - if (pixelWidth <= 1) return; + std::vector<CurvePoint> points; + if (pixelWidth <= 1) return points; const ConvertCoord cvrtX(minX, maxX, pixelWidth - 1); //map [minX, maxX] to [0, pixelWidth - 1] const std::pair<double, double> rangeX = getRangeX(); @@ -415,6 +430,7 @@ void SparseCurveData::getPoints(double minX, double maxX, int pixelWidth, std::v } } } + return points; } @@ -423,8 +439,7 @@ Graph2D::Graph2D(wxWindow* parent, const wxPoint& pos, const wxSize& size, long style, - const wxString& name) : wxPanel(parent, winid, pos, size, style, name), - labelFont(wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, L"Arial") + const wxString& name) : wxPanel(parent, winid, pos, size, style, name) { Connect(wxEVT_PAINT, wxPaintEventHandler(Graph2D::onPaintEvent), nullptr, this); Connect(wxEVT_SIZE, wxSizeEventHandler (Graph2D::onSizeEvent ), nullptr, this); @@ -544,34 +559,34 @@ void Graph2D::render(wxDC& dc) const switch (attr.labelposX) { - case X_LABEL_TOP: + case LABEL_X_TOP: graphArea.y += attr.xLabelHeight; graphArea.height -= attr.xLabelHeight; break; - case X_LABEL_BOTTOM: + case LABEL_X_BOTTOM: xLabelPosY += clientRect.height - attr.xLabelHeight; graphArea.height -= attr.xLabelHeight; break; - case X_LABEL_NONE: + case LABEL_X_NONE: break; } switch (attr.labelposY) { - case Y_LABEL_LEFT: + case LABEL_Y_LEFT: graphArea.x += attr.yLabelWidth; graphArea.width -= attr.yLabelWidth; break; - case Y_LABEL_RIGHT: + case LABEL_Y_RIGHT: yLabelPosX += clientRect.width - attr.yLabelWidth; graphArea.width -= attr.yLabelWidth; break; - case Y_LABEL_NONE: + case LABEL_Y_NONE: break; } { //paint graph background (excluding label area) - wxDCPenChanger dummy (dc, wxColor(130, 135, 144)); //medium grey, the same Win7 uses for other frame borders => not accessible! but no big deal... + wxDCPenChanger dummy (dc, getBorderColor()); wxDCBrushChanger dummy2(dc, attr.backgroundColor); //accessibility: consider system text and background colors; small drawback: color of graphs is NOT connected to the background! => responsibility of client to use correct colors @@ -606,7 +621,7 @@ void Graph2D::render(wxDC& dc) const { int blockCountX = 0; //enlarge minX, maxX to a multiple of a "useful" block size - if (attr.labelposX != X_LABEL_NONE && attr.labelFmtX.get()) + if (attr.labelposX != LABEL_X_NONE && attr.labelFmtX.get()) blockCountX = widenRange(minX, maxX, //in/out graphArea.width, minimalBlockSizePx.GetWidth() * 7, @@ -625,19 +640,22 @@ void Graph2D::render(wxDC& dc) const std::vector<CurvePoint>& points = curvePoints[index]; auto& marker = oobMarker [index]; - curve->getPoints(minX, maxX, graphArea.width, points); - - //cut points outside visible x-range now in order to calculate height of visible line fragments only! + points = curve->getPoints(minX, maxX, graphArea.width); marker.resize(points.size()); //default value: false - cutPointsOutsideX(points, marker, minX, maxX); - - if ((attr.minYauto || attr.maxYauto) && !points.empty()) + if (!points.empty()) { - auto itPair = std::minmax_element(points.begin(), points.end(), [](const CurvePoint& lhs, const CurvePoint& rhs) { return lhs.y < rhs.y; }); - if (attr.minYauto) - minY = std::min(minY, itPair.first->y); - if (attr.maxYauto) - maxY = std::max(maxY, itPair.second->y); + //cut points outside visible x-range now in order to calculate height of visible line fragments only! + const bool doPolygonCut = curves_[index].second.fillMode == CurveAttributes::FILL_POLYGON; //impacts auto minY/maxY!! + cutPointsOutsideX(points, marker, minX, maxX, doPolygonCut); + + if (attr.minYauto || attr.maxYauto) + { + auto itPair = std::minmax_element(points.begin(), points.end(), [](const CurvePoint& lhs, const CurvePoint& rhs) { return lhs.y < rhs.y; }); + if (attr.minYauto) + minY = std::min(minY, itPair.first->y); + if (attr.maxYauto) + maxY = std::max(maxY, itPair.second->y); + } } } @@ -645,7 +663,7 @@ void Graph2D::render(wxDC& dc) const { int blockCountY = 0; //enlarge minY, maxY to a multiple of a "useful" block size - if (attr.labelposY != Y_LABEL_NONE && attr.labelFmtY.get()) + if (attr.labelposY != LABEL_Y_NONE && attr.labelFmtY.get()) blockCountY = widenRange(minY, maxY, //in/out graphArea.height, minimalBlockSizePx.GetHeight() * 3, @@ -660,15 +678,29 @@ void Graph2D::render(wxDC& dc) const for (size_t index = 0; index < curves_.size(); ++index) { + auto& cp = curvePoints[index]; + + //add two artificial points to fill the curve area towards x-axis => do this before cutPointsOutsideY() to handle curve leaving upper bound + if (curves_[index].second.fillMode == CurveAttributes::FILL_CURVE) + if (!cp.empty()) + { + cp.emplace_back(CurvePoint(cp.back ().x, minY)); //add lower right and left corners + cp.emplace_back(CurvePoint(cp.front().x, minY)); //[!] aliasing parameter not yet supported via emplace_back: VS bug! => make copy + oobMarker[index].back() = true; + oobMarker[index].push_back(true); + oobMarker[index].push_back(true); + } + //cut points outside visible y-range before calculating pixels: //1. realToScreenRound() deforms out-of-range values! //2. pixels that are grossly out of range can be a severe performance problem when drawing on the DC (Windows) - cutPointsOutsideY(curvePoints[index], oobMarker[index], minY, maxY); + const bool doPolygonCut = curves_[index].second.fillMode != CurveAttributes::FILL_NONE; + cutPointsOutsideY(cp, oobMarker[index], minY, maxY, doPolygonCut); - auto& points = drawPoints[index]; - for (const CurvePoint& pt : curvePoints[index]) - points.push_back(wxPoint(cvrtX.realToScreenRound(pt.x), - cvrtY.realToScreenRound(pt.y)) + graphAreaOrigin); + auto& dp = drawPoints[index]; + for (const CurvePoint& pt : cp) + dp.push_back(wxPoint(cvrtX.realToScreenRound(pt.x), + cvrtY.realToScreenRound(pt.y)) + graphAreaOrigin); } //update active mouse selection @@ -704,14 +736,11 @@ void Graph2D::render(wxDC& dc) const //#################### begin drawing #################### //1. draw colored area under curves for (auto it = curves_.begin(); it != curves_.end(); ++it) - if (it->second.drawCurveArea) + if (it->second.fillMode != CurveAttributes::FILL_NONE) { - std::vector<wxPoint> points = drawPoints[it - curves_.begin()]; - if (!points.empty()) + const std::vector<wxPoint>& points = drawPoints[it - curves_.begin()]; + if (points.size() >= 3) { - points.emplace_back(wxPoint(points.back ().x, graphArea.GetBottom())); //add lower right and left corners - points.emplace_back(wxPoint(points.front().x, graphArea.GetBottom())); //[!] aliasing parameter not yet supported via emplace_back: VS bug! => make copy - wxDCBrushChanger dummy(dc, it->second.fillColor); wxDCPenChanger dummy2(dc, it->second.fillColor); dc.DrawPolygon(static_cast<int>(points.size()), &points[0]); @@ -725,7 +754,7 @@ void Graph2D::render(wxDC& dc) const { //alpha channel not supported on wxMSW, so draw selection before curves wxDCBrushChanger dummy(dc, wxColor(168, 202, 236)); //light blue - wxDCPenChanger dummy2(dc, wxColor(51, 153, 255)); //dark blue + wxDCPenChanger dummy2(dc, wxColor( 51, 153, 255)); //dark blue auto shrink = [](double* low, double* high) { @@ -787,8 +816,8 @@ void Graph2D::render(wxDC& dc) const wxDCPenChanger dummy(dc, wxPen(it->second.color, it->second.lineWidth)); const size_t index = it - curves_.begin(); - std::vector<wxPoint>& points = drawPoints[index]; //alas wxDC::DrawLines() is not const-correct!!! - auto& marker = oobMarker [index]; + const std::vector<wxPoint>& points = drawPoints[index]; + const auto& marker = oobMarker [index]; assert(points.size() == marker.size()); //draw all parts of the curve except for the out-of-bounds fragments @@ -796,7 +825,7 @@ void Graph2D::render(wxDC& dc) const while (drawIndexFirst < points.size()) { size_t drawIndexLast = std::find(marker.begin() + drawIndexFirst, marker.end(), true) - marker.begin(); - if (drawIndexLast < points.size()) ++ drawIndexLast; + if (drawIndexLast < points.size()) ++drawIndexLast; const int pointCount = static_cast<int>(drawIndexLast - drawIndexFirst); if (pointCount > 0) diff --git a/wx+/graph.h b/wx+/graph.h index b9873bd8..59b1a483 100644 --- a/wx+/graph.h +++ b/wx+/graph.h @@ -24,8 +24,8 @@ namespace zen Example: //init graph (optional) m_panelGraph->setAttributes(Graph2D::MainAttributes(). - setLabelX(Graph2D::X_LABEL_BOTTOM, 20, std::make_shared<LabelFormatterTimeElapsed>()). - setLabelY(Graph2D::Y_LABEL_RIGHT, 60, std::make_shared<LabelFormatterBytes>())); + setLabelX(Graph2D::LABEL_X_BOTTOM, 20, std::make_shared<LabelFormatterTimeElapsed>()). + setLabelY(Graph2D::LABEL_Y_RIGHT, 60, std::make_shared<LabelFormatterBytes>())); //set graph data std::shared_ptr<CurveData> curveDataBytes = ... m_panelGraph->setCurve(curveDataBytes, Graph2D::CurveAttributes().setLineWidth(2).setColor(wxColor(0, 192, 0))); @@ -47,8 +47,7 @@ struct CurveData virtual ~CurveData() {} virtual std::pair<double, double> getRangeX() const = 0; - virtual void getPoints(double minX, double maxX, int pixelWidth, - std::vector<CurvePoint>& points) const = 0; //points outside the draw area are automatically trimmed! + virtual std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const = 0; //points outside the draw area are automatically trimmed! }; //special curve types: @@ -57,7 +56,7 @@ struct ContinuousCurveData : public CurveData virtual double getValue(double x) const = 0; private: - void getPoints(double minX, double maxX, int pixelWidth, std::vector<CurvePoint>& points) const override; + std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const override; }; struct SparseCurveData : public CurveData @@ -68,7 +67,7 @@ struct SparseCurveData : public CurveData virtual Opt<CurvePoint> getGreaterEq(double x) const = 0; private: - void getPoints(double minX, double maxX, int pixelWidth, std::vector<CurvePoint>& points) const override; + std::vector<CurvePoint> getPoints(double minX, double maxX, int pixelWidth) const override; const bool addSteps_; }; @@ -158,7 +157,7 @@ private: SelectionBlock selBlock_; }; -typedef void (wxEvtHandler::*GraphSelectEventFunction)(GraphSelectEvent&); +using GraphSelectEventFunction = void (wxEvtHandler::*)(GraphSelectEvent&); #define GraphSelectEventHandler(func) \ (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(GraphSelectEventFunction, &func) @@ -180,7 +179,8 @@ public: public: CurveAttributes() {} //required by GCC CurveAttributes& setColor (const wxColor& col) { color = col; autoColor = false; return *this; } - CurveAttributes& fillCurveArea(const wxColor& col) { fillColor = col; drawCurveArea = true; return *this; } + CurveAttributes& fillCurveArea (const wxColor& col) { fillColor = col; fillMode = FILL_CURVE; return *this; } + CurveAttributes& fillPolygonArea(const wxColor& col) { fillColor = col; fillMode = FILL_POLYGON; return *this; } CurveAttributes& setLineWidth(size_t width) { lineWidth = static_cast<int>(width); return *this; } private: @@ -189,7 +189,14 @@ public: bool autoColor = true; wxColor color; - bool drawCurveArea = false; + enum FillMode + { + FILL_NONE, + FILL_CURVE, + FILL_POLYGON + }; + + FillMode fillMode = FILL_NONE; wxColor fillColor; int lineWidth = 2; @@ -198,18 +205,20 @@ public: void setCurve(const std::shared_ptr<CurveData>& data, const CurveAttributes& ca = CurveAttributes()); void addCurve(const std::shared_ptr<CurveData>& data, const CurveAttributes& ca = CurveAttributes()); + static wxColor getBorderColor() { return { 130, 135, 144 }; } //medium grey, the same Win7 uses for other frame borders => not accessible! but no big deal... + enum PosLabelY { - Y_LABEL_LEFT, - Y_LABEL_RIGHT, - Y_LABEL_NONE + LABEL_Y_LEFT, + LABEL_Y_RIGHT, + LABEL_Y_NONE }; enum PosLabelX { - X_LABEL_TOP, - X_LABEL_BOTTOM, - X_LABEL_NONE + LABEL_X_TOP, + LABEL_X_BOTTOM, + LABEL_X_NONE }; enum PosCorner @@ -273,11 +282,11 @@ public: double minY = 0; //y-range to visualize double maxY = 0; // - PosLabelX labelposX = X_LABEL_BOTTOM; + PosLabelX labelposX = LABEL_X_BOTTOM; int xLabelHeight = 25; std::shared_ptr<LabelFormatter> labelFmtX = std::make_shared<DecimalNumberFormatter>(); - PosLabelY labelposY = Y_LABEL_LEFT; + PosLabelY labelposY = LABEL_Y_LEFT; int yLabelWidth = 60; std::shared_ptr<LabelFormatter> labelFmtY = std::make_shared<DecimalNumberFormatter>(); @@ -334,9 +343,11 @@ private: Opt<wxBitmap> doubleBuffer; - typedef std::vector<std::pair<std::shared_ptr<CurveData>, CurveAttributes>> CurveList; + using CurveList = std::vector<std::pair<std::shared_ptr<CurveData>, CurveAttributes>>; CurveList curves_; - wxFont labelFont; //perf!!! generating the font is *very* expensive! don't do this repeatedly in Graph2D::render()! + + //perf!!! generating the font is *very* expensive! don't do this repeatedly in Graph2D::render()! + const wxFont labelFont { wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, L"Arial" }; }; } diff --git a/wx+/grid.cpp b/wx+/grid.cpp index 9d896dc2..d357b3c1 100644 --- a/wx+/grid.cpp +++ b/wx+/grid.cpp @@ -26,8 +26,8 @@ using namespace zen; -wxColor zen::getColorSelectionGradientFrom() { return { 137, 172, 255 }; } //blue: HSL: 158, 255, 196 HSV: 222, 0.46, 1 -wxColor zen::getColorSelectionGradientTo () { return { 225, 234, 255 }; } // HSL: 158, 255, 240 HSV: 222, 0.12, 1 +wxColor Grid::getColorSelectionGradientFrom() { return { 137, 172, 255 }; } //blue: HSL: 158, 255, 196 HSV: 222, 0.46, 1 +wxColor Grid::getColorSelectionGradientTo () { return { 225, 234, 255 }; } // HSL: 158, 255, 240 HSV: 222, 0.12, 1 const int GridData::COLUMN_GAP_LEFT = 4; @@ -51,7 +51,7 @@ inline wxColor getColorLabelGradientFrom() { return wxSystemSettings::GetColour( inline wxColor getColorLabelGradientTo () { return { 200, 200, 200 }; } //light grey inline wxColor getColorLabelGradientFocusFrom() { return getColorLabelGradientFrom(); } -inline wxColor getColorLabelGradientFocusTo () { return getColorSelectionGradientFrom(); } +inline wxColor getColorLabelGradientFocusTo () { return Grid::getColorSelectionGradientFrom(); } const double MOUSE_DRAG_ACCELERATION = 1.5; //unit: [rows / (pixel * sec)] -> same value like Explorer! const int DEFAULT_COL_LABEL_BORDER = 6; //top + bottom border in addition to label height @@ -113,7 +113,7 @@ void GridData::drawCellBackground(wxDC& dc, const wxRect& rect, bool enabled, bo if (enabled) { if (selected) - dc.GradientFillLinear(rect, getColorSelectionGradientFrom(), getColorSelectionGradientTo(), wxEAST); + dc.GradientFillLinear(rect, Grid::getColorSelectionGradientFrom(), Grid::getColorSelectionGradientTo(), wxEAST); else clearArea(dc, rect, backgroundColor); } @@ -122,7 +122,7 @@ void GridData::drawCellBackground(wxDC& dc, const wxRect& rect, bool enabled, bo } -void GridData::drawCellText(wxDC& dc, const wxRect& rect, const std::wstring& text, int alignment) +wxSize GridData::drawCellText(wxDC& dc, const wxRect& rect, const std::wstring& text, int alignment) { /* performance notes (Windows): @@ -187,6 +187,7 @@ void GridData::drawCellText(wxDC& dc, const wxRect& rect, const std::wstring& te RecursiveDcClipper clip(dc, rect); dc.DrawText(textTrunc, pt); + return extentTrunc; } @@ -90,8 +90,6 @@ using GridColumnResizeEventFunction = void (wxEvtHandler::*)(GridColumnResizeEve //------------------------------------------------------------------------------------------------------------ class Grid; -wxColor getColorSelectionGradientFrom(); -wxColor getColorSelectionGradientTo(); void clearArea(wxDC& dc, const wxRect& rect, const wxColor& col); @@ -118,7 +116,7 @@ public: static const int COLUMN_GAP_LEFT; //for left-aligned text //optional helper routines: - static void drawCellText (wxDC& dc, const wxRect& rect, const std::wstring& text, int alignment = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + static wxSize drawCellText (wxDC& dc, const wxRect& rect, const std::wstring& text, int alignment = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); //returns text extent static wxRect drawCellBorder (wxDC& dc, const wxRect& rect); //returns inner rectangle static void drawCellBackground(wxDC& dc, const wxRect& rect, bool enabled, bool selected, const wxColor& backgroundColor); @@ -217,6 +215,9 @@ public: //############################################################################################################ +static wxColor getColorSelectionGradientFrom(); +static wxColor getColorSelectionGradientTo(); + private: void onPaintEvent(wxPaintEvent& event); void onEraseBackGround(wxEraseEvent& event) {} //[!] diff --git a/wx+/http.cpp b/wx+/http.cpp index f73587b3..16dc4776 100644 --- a/wx+/http.cpp +++ b/wx+/http.cpp @@ -211,7 +211,7 @@ std::string urlencode(const std::string& str) out += c; else { - const char hexDigits[]= "0123456789ABCDEF"; + const char hexDigits[] = "0123456789ABCDEF"; out += '%'; out += hexDigits[static_cast<unsigned char>(c) / 16]; out += hexDigits[static_cast<unsigned char>(c) % 16]; diff --git a/wx+/std_button_layout.h b/wx+/std_button_layout.h index fd0db8ce..161d091d 100644 --- a/wx+/std_button_layout.h +++ b/wx+/std_button_layout.h @@ -69,7 +69,7 @@ void setStandardButtonLayout(wxBoxSizer& sizer, const StdButtons& buttons) detach(buttonsTmp.btnCancel); #if defined ZEN_WIN - //Windows User Experience Interaction Guidelines: http://msdn.microsoft.com/en-us/library/windows/desktop/aa511453.aspx#sizing + //Windows User Experience Interaction Guidelines: https://msdn.microsoft.com/en-us/library/windows/desktop/aa511453#sizing const int spaceH = 6; //OK const int spaceRimH = 10; //OK const int spaceRimV = 8; //compromise; consider additional top row from static line; exact values: top 8, bottom 9 diff --git a/zen/dir_watcher.cpp b/zen/dir_watcher.cpp index bb78939f..00b48b4f 100644 --- a/zen/dir_watcher.cpp +++ b/zen/dir_watcher.cpp @@ -223,7 +223,7 @@ public: //async I/O is a resource that needs to be guarded since it will write to local variable "buffer"! auto guardAio = zen::makeGuard<ScopeGuardRunMode::ON_EXIT>([&] { - //Canceling Pending I/O Operations: http://msdn.microsoft.com/en-us/library/aa363789(v=vs.85).aspx + //Canceling Pending I/O Operations: https://msdn.microsoft.com/en-us/library/aa363789 #ifdef ZEN_WIN_VISTA_AND_LATER if (::CancelIoEx(hDir, &overlapped) /*!= FALSE*/ || ::GetLastError() != ERROR_NOT_FOUND) #else diff --git a/zen/dir_watcher.h b/zen/dir_watcher.h index ddb3dbb9..eb0bd695 100644 --- a/zen/dir_watcher.h +++ b/zen/dir_watcher.h @@ -15,7 +15,7 @@ namespace zen { -//Windows: ReadDirectoryChangesW http://msdn.microsoft.com/en-us/library/aa365465(v=vs.85).aspx +//Windows: ReadDirectoryChangesW https://msdn.microsoft.com/en-us/library/aa365465 //Linux: inotify http://linux.die.net/man/7/inotify //OS X: kqueue http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/kqueue.2.html diff --git a/zen/file_access.cpp b/zen/file_access.cpp index 78da0220..11f61291 100644 --- a/zen/file_access.cpp +++ b/zen/file_access.cpp @@ -1199,7 +1199,7 @@ void copyItemPermissions(const Zstring& sourcePath, const Zstring& targetPath, P //Note: trying to copy SACL (SACL_SECURITY_INFORMATION) may return ERROR_PRIVILEGE_NOT_HELD (1314) on Samba shares. This is not due to missing privileges! //However, this is okay, since copying NTFS permissions doesn't make sense in this case anyway - //the following privilege may be required according to http://msdn.microsoft.com/en-us/library/aa364399(VS.85).aspx (although not needed nor active in my tests) + //the following privilege may be required according to https://msdn.microsoft.com/en-us/library/aa364399 (although not needed nor active in my tests) activatePrivilege(SE_BACKUP_NAME); //throw FileError //enable privilege: required to copy owner information @@ -1259,14 +1259,14 @@ void copyItemPermissions(const Zstring& sourcePath, const Zstring& targetPath, P PACL dacl = nullptr; PACL sacl = nullptr; - //File Security and Access Rights: http://msdn.microsoft.com/en-us/library/aa364399(v=VS.85).aspx - //SECURITY_INFORMATION Access Rights: http://msdn.microsoft.com/en-us/library/windows/desktop/aa379573(v=vs.85).aspx + //File Security and Access Rights: https://msdn.microsoft.com/en-us/library/aa364399 + //SECURITY_INFORMATION Access Rights: https://msdn.microsoft.com/en-us/library/windows/desktop/aa379573 const HANDLE hSource = ::CreateFile(applyLongPathPrefix(source).c_str(), READ_CONTROL | ACCESS_SYSTEM_SECURITY, //ACCESS_SYSTEM_SECURITY required for SACL access FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | (procSl == SYMLINK_DIRECT ? FILE_FLAG_OPEN_REPARSE_POINT : 0), //FILE_FLAG_BACKUP_SEMANTICS needed to open a directory + FILE_FLAG_BACKUP_SEMANTICS | (procSl == SymLinkHandling::DIRECT ? FILE_FLAG_OPEN_REPARSE_POINT : 0), //FILE_FLAG_BACKUP_SEMANTICS needed to open a directory nullptr); if (hSource == INVALID_HANDLE_VALUE) throw FileError @@ -1303,7 +1303,7 @@ void copyItemPermissions(const Zstring& sourcePath, const Zstring& targetPath, P FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, // dwShareMode nullptr, // lpSecurityAttributes OPEN_EXISTING, // dwCreationDisposition - FILE_FLAG_BACKUP_SEMANTICS | (procSl == SYMLINK_DIRECT ? FILE_FLAG_OPEN_REPARSE_POINT : 0), // dwFlagsAndAttributes + FILE_FLAG_BACKUP_SEMANTICS | (procSl == SymLinkHandling::DIRECT ? FILE_FLAG_OPEN_REPARSE_POINT : 0), // dwFlagsAndAttributes nullptr); // hTemplateFile }); @@ -2177,7 +2177,7 @@ InSyncAttributes copyFileWindowsDefault(const Zstring& sourceFile, //throw FileE //encrypted destination is not supported with Windows 2000! -> whatever copyFlags |= COPY_FILE_ALLOW_DECRYPTED_DESTINATION; //allow copying from encrypted to non-encrypted location - //if (vistaOrLater()) //see http://blogs.technet.com/b/askperf/archive/2007/05/08/slow-large-file-copy-issues.aspx + //if (vistaOrLater()) //see https://blogs.technet.microsoft.com/askperf/2007/05/08/slow-large-file-copy-issues/ // copyFlags |= COPY_FILE_NO_BUFFERING; //no perf difference at worst, improvement for large files (20% in test NTFS -> NTFS) // - this flag may cause file corruption! http://www.freefilesync.org/forum/viewtopic.php?t=1857 // - documentation on CopyFile2() even states: "It is not recommended to pause copies that are using this flag." diff --git a/zen/file_io.cpp b/zen/file_io.cpp index 3891abe6..d0a1bfa3 100644 --- a/zen/file_io.cpp +++ b/zen/file_io.cpp @@ -84,7 +84,7 @@ FileInput::FileInput(const Zstring& filepath) : //throw FileError, ErrorFileLock nullptr, //_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, OPEN_EXISTING, //_In_ DWORD dwCreationDisposition, FILE_FLAG_SEQUENTIAL_SCAN | //_In_ DWORD dwFlagsAndAttributes, - /* possible values: (Reference http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx#caching_behavior) + /* possible values: (Reference https://msdn.microsoft.com/en-us/library/aa363858#caching_behavior) FILE_FLAG_NO_BUFFERING FILE_FLAG_RANDOM_ACCESS FILE_FLAG_SEQUENTIAL_SCAN diff --git a/zen/file_io.h b/zen/file_io.h index 261829cd..23296c6c 100644 --- a/zen/file_io.h +++ b/zen/file_io.h @@ -55,7 +55,7 @@ public: FileInput(FileHandle handle, const Zstring& filepath); //takes ownership! ~FileInput(); - //Windows: better use 64kB ?? https://technet.microsoft.com/en-us/library/cc938632.aspx + //Windows: better use 64kB ?? https://technet.microsoft.com/en-us/library/cc938632 //Linux: use st_blksize? size_t getBlockSize() const { return 128 * 1024; } size_t tryRead(void* buffer, size_t bytesToRead); //throw FileError; may return short, only 0 means EOF! => CONTRACT: bytesToRead > 0! diff --git a/zen/file_traverser.cpp b/zen/file_traverser.cpp index 89eb6e48..bedc9154 100644 --- a/zen/file_traverser.cpp +++ b/zen/file_traverser.cpp @@ -113,7 +113,7 @@ void zen::traverseFolder(const Zstring& dirPath, struct ::dirent* dirEntry = nullptr; if (::readdir_r(folder, reinterpret_cast< ::dirent*>(&buffer[0]), &dirEntry) != 0) THROW_LAST_FILE_ERROR(replaceCpy(_("Cannot enumerate directory %x."), L"%x", fmtPath(dirPath)), L"readdir_r"); - //don't retry but restart dir traversal on error! http://blogs.msdn.com/b/oldnewthing/archive/2014/06/12/10533529.aspx + //don't retry but restart dir traversal on error! https://blogs.msdn.microsoft.com/oldnewthing/20140612-00/?p=753/ if (!dirEntry) //no more items return; @@ -124,22 +124,22 @@ void zen::traverseFolder(const Zstring& dirPath, if (itemNameRaw[0] == '.' && (itemNameRaw[1] == 0 || (itemNameRaw[1] == '.' && itemNameRaw[2] == 0))) continue; -#ifdef ZEN_MAC - //see native_traverser_impl.h: + +#ifdef ZEN_MAC //normalize all text input (see see native_traverser_impl.h) Zstring itemName; try { - itemName = osx::convertToPrecomposedUtf(itemNameRaw); //throw SysError + itemName = osx::normalizeUtfForPosix(itemNameRaw); //throw SysError } - catch (const SysError& e) //failure is not an item-level error since we don't have the proper decomposed name!!! + catch (const SysError& e) //failure is not an item-level error since we don't know the normalized name yet!!! { throw FileError(replaceCpy(_("Cannot enumerate directory %x."), L"%x", fmtPath(dirPath)), - L"Failed to generate precomposed file name: " + fmtPath(itemNameRaw) + L"\n" + e.toString()); //too obscure to warrant translation + L"Failed to generate normalized file name: " + fmtPath(itemNameRaw) + L"\n" + e.toString()); //too obscure to warrant translation } #else const Zstring& itemName = itemNameRaw; #endif - if (itemName.empty()) //checks result of osx::convertToPrecomposedUtf, too! + if (itemName.empty()) //checks result of osx::normalizeUtfForPosix, too! throw FileError(replaceCpy(_("Cannot enumerate directory %x."), L"%x", fmtPath(dirPath)), L"readdir_r: Data corruption; item with empty name."); const Zstring& itemPath = appendSeparator(dirPath) + itemName; diff --git a/zen/format_unit.cpp b/zen/format_unit.cpp index a880552e..6a0e1668 100644 --- a/zen/format_unit.cpp +++ b/zen/format_unit.cpp @@ -222,7 +222,7 @@ private: fmt.lpDecimalSep = &decimalSep[0]; //not used fmt.lpThousandSep = &thousandSep[0]; - //convert LOCALE_SGROUPING to Grouping: http://blogs.msdn.com/b/oldnewthing/archive/2006/04/18/578251.aspx + //convert LOCALE_SGROUPING to Grouping: https://blogs.msdn.microsoft.com/oldnewthing/20060418-11/?p=31493/ replace(grouping, L';', L""); if (endsWith(grouping, L'0')) grouping.pop_back(); @@ -382,7 +382,6 @@ Opt<std::int64_t> zen::mtpVariantTimetoUtc(double localVarTime) //returns empty return NoValue(); #endif - return filetimeToTimeT(utcFiletime); } @@ -45,7 +45,7 @@ private: }; void setTranslator(std::unique_ptr<const TranslationHandler>&& newHandler); //take ownership -const TranslationHandler* getTranslator(); +std::shared_ptr<const TranslationHandler> getTranslator(); @@ -65,7 +65,7 @@ namespace implementation inline std::wstring translate(const std::wstring& text) { - if (const TranslationHandler* t = getTranslator()) + if (std::shared_ptr<const TranslationHandler> t = getTranslator()) //std::shared_ptr => temporarily take (shared) ownership while using the interface! return t->translate(text); return text; @@ -79,7 +79,7 @@ std::wstring translate(const std::wstring& singular, const std::wstring& plural, { assert(contains(plural, L"%x")); - if (const TranslationHandler* t = getTranslator()) + if (std::shared_ptr<const TranslationHandler> t = getTranslator()) { std::wstring translation = t->translate(singular, plural, n); assert(!contains(translation, L"%x")); @@ -99,11 +99,12 @@ std::wstring translate(const std::wstring& singular, const std::wstring& plural, inline -const TranslationHandler*& getTranslationInstance() +std::shared_ptr<const TranslationHandler>*& getTranslationInstance() { - //avoid static destruction order fiasco: there may be accesses to "getTranslator()" during process shutdown e.g. show message in debug_minidump.cpp! - //=> use POD instead of a std::unique_ptr<>!!! - static const TranslationHandler* inst = nullptr; //external linkage even in header! + //avoid static destruction order fiasco: there may be accesses to "getTranslator()" during process shutdown + //e.g. show message in debug_minidump.cpp or some detached thread assembling an error message! + //=> use POD instead of a plain std::shared_ptr<>!!! + static std::shared_ptr<const TranslationHandler>* inst = nullptr; //external linkage even in header! return inst; } @@ -112,28 +113,41 @@ struct CleanUpTranslationHandler { ~CleanUpTranslationHandler() { - const TranslationHandler*& handler = getTranslationInstance(); - assert(!handler); //clean up at a better time rather than during static destruction! potential MT issues!? + std::shared_ptr<const TranslationHandler>*& handler = getTranslationInstance(); + assert(!handler); //clean up at a better time rather than during static destruction! MT issues! delete handler; handler = nullptr; //getTranslator() may be called even after static objects of this translation unit are destroyed! } }; } +//setTranslator/getTranslator() operating on a global are obviously racy for MT usage +//=> make them fast to cover the rare case of a language change and the not-so-rare case of language clean-up during shutdown +//=> can't synchronize with std::mutex which is non-POD and again leads to global destruction order fiasco +//=> return std::shared_ptr to let instance life time be handled by caller (MT!) inline void setTranslator(std::unique_ptr<const TranslationHandler>&& newHandler) { static implementation::CleanUpTranslationHandler cuth; //external linkage even in header! - const TranslationHandler*& handler = implementation::getTranslationInstance(); - delete handler; - handler = newHandler.release(); + std::shared_ptr<const TranslationHandler>*& handler = implementation::getTranslationInstance(); + auto tmp = handler; + handler = nullptr; + delete tmp; + if (newHandler) + handler = new std::shared_ptr<const TranslationHandler>(std::move(newHandler)); } inline -const TranslationHandler* getTranslator() { return implementation::getTranslationInstance(); } +std::shared_ptr<const TranslationHandler> getTranslator() +{ + std::shared_ptr<const TranslationHandler>*& handler = implementation::getTranslationInstance(); + if (handler) + return *handler; + return nullptr; +} } #endif //I18_N_H_3843489325044253425456 diff --git a/zen/recycler.cpp b/zen/recycler.cpp index 59d2729a..32ba7cb0 100644 --- a/zen/recycler.cpp +++ b/zen/recycler.cpp @@ -212,7 +212,7 @@ bool zen::recycleBinExists(const Zstring& dirPath, const std::function<void ()>& //4. check directory existence of "C:\$Recycle.Bin, C:\RECYCLER, C:\RECYCLED" // -> not upward-compatible, wrong result for subst-alias: recycler assumed existing, although it is not! - //5. alternative approach a'la Raymond Chen: http://blogs.msdn.com/b/oldnewthing/archive/2008/09/18/8956382.aspx + //5. alternative approach a'la Raymond Chen: https://blogs.msdn.microsoft.com/oldnewthing/20080918-00/?p=20843/ //caveat: might not be reliable, e.g. "subst"-alias of volume contains "$Recycle.Bin" although recycler is not available! /* diff --git a/zen/shell_execute.h b/zen/shell_execute.h index 060ba84d..ce34f067 100644 --- a/zen/shell_execute.h +++ b/zen/shell_execute.h @@ -42,7 +42,7 @@ bool shellExecuteImpl(Function fillExecInfo, ExecutionType type) execInfo.fMask = type == EXEC_TYPE_SYNC ? (SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC) : 0; //don't use SEE_MASK_ASYNCOK -> different async mode than the default which returns successful despite errors! execInfo.fMask |= SEE_MASK_FLAG_NO_UI; //::ShellExecuteEx() shows a non-blocking pop-up dialog on errors -> we want a blocking one - //for the record, SEE_MASK_UNICODE does nothing: http://blogs.msdn.com/b/oldnewthing/archive/2014/02/27/10503519.aspx + //for the record, SEE_MASK_UNICODE does nothing: https://blogs.msdn.microsoft.com/oldnewthing/20140227-00/?p=1643/ fillExecInfo(execInfo); diff --git a/zen/symlink_target.h b/zen/symlink_target.h index c4e166e8..a1f48884 100644 --- a/zen/symlink_target.h +++ b/zen/symlink_target.h @@ -84,7 +84,7 @@ Zstring getSymlinkRawTargetString_impl(const Zstring& linkPath) //throw FileErro { using namespace zen; #ifdef ZEN_WIN - //FSCTL_GET_REPARSE_POINT: http://msdn.microsoft.com/en-us/library/aa364571(VS.85).aspx + //FSCTL_GET_REPARSE_POINT: https://msdn.microsoft.com/en-us/library/aa364571 //reading certain symlinks/junctions requires admin rights! try @@ -213,9 +213,9 @@ Zstring getResolvedSymlinkPath(const Zstring& linkPath) { return getResolvedSyml #ifdef ZEN_WIN /* Reparse Point Tags - http://msdn.microsoft.com/en-us/library/windows/desktop/aa365511(v=vs.85).aspx + https://msdn.microsoft.com/en-us/library/windows/desktop/aa365511 WIN32_FIND_DATA structure - http://msdn.microsoft.com/en-us/library/windows/desktop/aa365740(v=vs.85).aspx + https://msdn.microsoft.com/en-us/library/windows/desktop/aa365740 The only surrogate reparse points are; IO_REPARSE_TAG_MOUNT_POINT diff --git a/zen/tick_count.h b/zen/tick_count.h index 647876fb..89910e14 100644 --- a/zen/tick_count.h +++ b/zen/tick_count.h @@ -122,7 +122,7 @@ TickVal getTicks() //return !isValid() on error LARGE_INTEGER now = {}; if (!::QueryPerformanceCounter(&now)) return TickVal(); - //detailed info about QPC: http://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx + //detailed info about QPC: https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408 //- MSDN: "No need to set the thread affinity" #elif defined ZEN_LINUX @@ -154,7 +154,7 @@ struct GetFormat<FormatIsoDateTimeTag> //%Y-%m-%d %H:%M:%S - e.g. 2001-08-23 14: //strftime() craziness on invalid input: -// VS 2010: CRASH unless "_invalid_parameter_handler" is set: http://msdn.microsoft.com/en-us/library/ksazx244.aspx +// VS 2010: CRASH unless "_invalid_parameter_handler" is set: https://msdn.microsoft.com/en-us/library/ksazx244.aspx // GCC: returns 0, apparently no crash. Still, considering some clib maintainer's comments, we should expect the worst! inline size_t strftimeWrap_impl(char* buffer, size_t bufferSize, const char* format, const std::tm* timeptr) |