summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FreeFileSync/Build/Changelog.txt16
-rw-r--r--FreeFileSync/Build/Help/html/base.css6
-rw-r--r--FreeFileSync/Build/Languages/arabic.lng114
-rw-r--r--FreeFileSync/Build/Languages/bulgarian.lng106
-rw-r--r--FreeFileSync/Build/Languages/chinese_simple.lng104
-rw-r--r--FreeFileSync/Build/Languages/chinese_traditional.lng104
-rw-r--r--FreeFileSync/Build/Languages/croatian.lng106
-rw-r--r--FreeFileSync/Build/Languages/czech.lng104
-rw-r--r--FreeFileSync/Build/Languages/danish.lng108
-rw-r--r--FreeFileSync/Build/Languages/dutch.lng104
-rw-r--r--FreeFileSync/Build/Languages/english_uk.lng104
-rw-r--r--FreeFileSync/Build/Languages/finnish.lng104
-rw-r--r--FreeFileSync/Build/Languages/french.lng110
-rw-r--r--FreeFileSync/Build/Languages/german.lng34
-rw-r--r--FreeFileSync/Build/Languages/greek.lng104
-rw-r--r--FreeFileSync/Build/Languages/hebrew.lng114
-rw-r--r--FreeFileSync/Build/Languages/hindi.lng104
-rw-r--r--FreeFileSync/Build/Languages/hungarian.lng104
-rw-r--r--FreeFileSync/Build/Languages/italian.lng104
-rw-r--r--FreeFileSync/Build/Languages/japanese.lng106
-rw-r--r--FreeFileSync/Build/Languages/korean.lng104
-rw-r--r--FreeFileSync/Build/Languages/lithuanian.lng104
-rw-r--r--FreeFileSync/Build/Languages/outdated/norwegian.lng661
-rw-r--r--FreeFileSync/Build/Languages/outdated/scottish_gaelic.lng1740
-rw-r--r--FreeFileSync/Build/Languages/polish.lng106
-rw-r--r--FreeFileSync/Build/Languages/portuguese.lng104
-rw-r--r--FreeFileSync/Build/Languages/portuguese_br.lng104
-rw-r--r--FreeFileSync/Build/Languages/romanian.lng108
-rw-r--r--FreeFileSync/Build/Languages/russian.lng120
-rw-r--r--FreeFileSync/Build/Languages/serbian.lng104
-rw-r--r--FreeFileSync/Build/Languages/slovak.lng104
-rw-r--r--FreeFileSync/Build/Languages/slovenian.lng104
-rw-r--r--FreeFileSync/Build/Languages/spanish.lng104
-rw-r--r--FreeFileSync/Build/Languages/swedish.lng104
-rw-r--r--FreeFileSync/Build/Languages/turkish.lng104
-rw-r--r--FreeFileSync/Build/Languages/ukrainian.lng104
-rw-r--r--FreeFileSync/Source/RealtimeSync/application.cpp12
-rw-r--r--FreeFileSync/Source/RealtimeSync/folder_selector2.cpp14
-rw-r--r--FreeFileSync/Source/algorithm.cpp30
-rw-r--r--FreeFileSync/Source/application.cpp25
-rw-r--r--FreeFileSync/Source/comparison.cpp12
-rw-r--r--FreeFileSync/Source/lib/db_file.cpp4
-rw-r--r--FreeFileSync/Source/lib/dir_lock.cpp2
-rw-r--r--FreeFileSync/Source/lib/hard_filter.h2
-rw-r--r--FreeFileSync/Source/lib/icon_buffer.cpp6
-rw-r--r--FreeFileSync/Source/lib/icon_loader.cpp6
-rw-r--r--FreeFileSync/Source/lib/localization.cpp3
-rw-r--r--FreeFileSync/Source/lib/parallel_scan.cpp6
-rw-r--r--FreeFileSync/Source/lib/parse_lng.h20
-rw-r--r--FreeFileSync/Source/lib/parse_plural.h40
-rw-r--r--FreeFileSync/Source/lib/process_xml.cpp214
-rw-r--r--FreeFileSync/Source/lib/process_xml.h79
-rw-r--r--FreeFileSync/Source/lib/resolve_path.cpp2
-rw-r--r--FreeFileSync/Source/lib/soft_filter.h15
-rw-r--r--FreeFileSync/Source/lib/status_handler.h18
-rw-r--r--FreeFileSync/Source/lib/versioning.cpp4
-rw-r--r--FreeFileSync/Source/structures.cpp34
-rw-r--r--FreeFileSync/Source/structures.h103
-rw-r--r--FreeFileSync/Source/synchronization.cpp52
-rw-r--r--FreeFileSync/Source/ui/batch_status_handler.cpp85
-rw-r--r--FreeFileSync/Source/ui/column_attr.h69
-rw-r--r--FreeFileSync/Source/ui/custom_grid.cpp336
-rw-r--r--FreeFileSync/Source/ui/custom_grid.h4
-rw-r--r--FreeFileSync/Source/ui/folder_selector.cpp14
-rw-r--r--FreeFileSync/Source/ui/grid_view.cpp57
-rw-r--r--FreeFileSync/Source/ui/grid_view.h2
-rw-r--r--FreeFileSync/Source/ui/gui_generated.cpp7796
-rw-r--r--FreeFileSync/Source/ui/gui_generated.h1705
-rw-r--r--FreeFileSync/Source/ui/gui_status_handler.cpp27
-rw-r--r--FreeFileSync/Source/ui/main_dlg.cpp113
-rw-r--r--FreeFileSync/Source/ui/main_dlg.h2
-rw-r--r--FreeFileSync/Source/ui/progress_indicator.cpp302
-rw-r--r--FreeFileSync/Source/ui/progress_indicator.h3
-rw-r--r--FreeFileSync/Source/ui/search.cpp6
-rw-r--r--FreeFileSync/Source/ui/search.h2
-rw-r--r--FreeFileSync/Source/ui/sync_cfg.cpp170
-rw-r--r--FreeFileSync/Source/ui/taskbar.h2
-rw-r--r--FreeFileSync/Source/ui/tray_icon.cpp2
-rw-r--r--FreeFileSync/Source/ui/tree_view.cpp8
-rw-r--r--FreeFileSync/Source/ui/tree_view.h4
-rw-r--r--FreeFileSync/Source/ui/version_check.cpp17
-rw-r--r--FreeFileSync/Source/version/version.h2
-rw-r--r--wx+/async_task.h2
-rw-r--r--wx+/context_menu.h4
-rw-r--r--wx+/graph.cpp135
-rw-r--r--wx+/graph.h49
-rw-r--r--wx+/grid.cpp11
-rw-r--r--wx+/grid.h7
-rw-r--r--wx+/http.cpp2
-rw-r--r--wx+/std_button_layout.h2
-rw-r--r--zen/dir_watcher.cpp2
-rw-r--r--zen/dir_watcher.h2
-rw-r--r--zen/file_access.cpp12
-rw-r--r--zen/file_io.cpp2
-rw-r--r--zen/file_io.h2
-rw-r--r--zen/file_traverser.cpp14
-rw-r--r--zen/format_unit.cpp3
-rw-r--r--zen/i18n.h40
-rw-r--r--zen/recycler.cpp2
-rw-r--r--zen/shell_execute.h2
-rw-r--r--zen/symlink_target.h6
-rw-r--r--zen/tick_count.h2
-rw-r--r--zen/time.h2
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;
}
diff --git a/wx+/grid.h b/wx+/grid.h
index aacd34bc..5fe337f4 100644
--- a/wx+/grid.h
+++ b/wx+/grid.h
@@ -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);
}
diff --git a/zen/i18n.h b/zen/i18n.h
index 340473f9..77b3b57a 100644
--- a/zen/i18n.h
+++ b/zen/i18n.h
@@ -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
diff --git a/zen/time.h b/zen/time.h
index 4f546e4e..f9a0fcb5 100644
--- a/zen/time.h
+++ b/zen/time.h
@@ -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)
bgstack15