diff options
Diffstat (limited to 'freefilesync')
-rw-r--r-- | freefilesync/debian/freefilesync.sharedmimeinfo | 154 | ||||
-rw-r--r-- | freefilesync/ffs_desktop_notifications.patch | 53 | ||||
-rw-r--r-- | freefilesync/ffs_no_check_updates.patch | 284 | ||||
-rw-r--r-- | freefilesync/freefilesync.spec | 10 | ||||
-rw-r--r-- | freefilesync/freefilesync.xml | 154 | ||||
-rw-r--r-- | freefilesync/revert_zenju_aggressive_upstreamisms.patch | 95 |
6 files changed, 657 insertions, 93 deletions
diff --git a/freefilesync/debian/freefilesync.sharedmimeinfo b/freefilesync/debian/freefilesync.sharedmimeinfo index d54523f..99f459d 100644 --- a/freefilesync/debian/freefilesync.sharedmimeinfo +++ b/freefilesync/debian/freefilesync.sharedmimeinfo @@ -1,18 +1,150 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> - <mime-type type="application/x-freefilesync-ffs"> - <comment>FreeFileSync configuration file</comment> - <comment xml:lang="fr">Fichier de configuration FreeFileSync</comment> + <mime-type type="application/x-freefilesync-gui"> <glob pattern="*.ffs_gui"/> + <comment>FreeFileSync Configuration</comment> + <comment xml:lang="ar">إعداد FreeFileSync</comment> + <comment xml:lang="bg">Конфигурация на FreeFileSync</comment> + <comment xml:lang="cs">Nastavení FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync indstillinger</comment> + <comment xml:lang="de">FreeFileSync Konfiguration</comment> + <comment xml:lang="el">Ρυθμίσεις του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Configuration</comment> + <comment xml:lang="es">Configuración de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync määrittelyt</comment> + <comment xml:lang="fr">Configuration de FreeFileSync</comment> + <comment xml:lang="he">תצורת FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync कॉन्फ़िगरेशन</comment> + <comment xml:lang="hr">FreeFileSync Postavke</comment> + <comment xml:lang="hu">FreeFileSync konfigurálása</comment> + <comment xml:lang="it">Configurazione FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 構成設定</comment> + <comment xml:lang="ko">FreeFileSync 환경설정</comment> + <comment xml:lang="lt">FreeFileSync Konfigūracijos</comment> + <comment xml:lang="nl">FreeFileSync configuratie</comment> + <comment xml:lang="no">FreeFileSync konfigurering</comment> + <comment xml:lang="pl">Konfiguracja FreeFileSync</comment> + <comment xml:lang="pt">Configuração do FreeFileSync</comment> + <comment xml:lang="pt_BR">Configuração do FreeFileSync</comment> + <comment xml:lang="ro">Configurație FreeFileSync</comment> + <comment xml:lang="ru">Конфигурация FreeFileSync</comment> + <comment xml:lang="sk">FreeFileSync konfigurácia</comment> + <comment xml:lang="sl">Nastavitve FreeFileSync</comment> + <comment xml:lang="sv">FreeFileSync Konfiguration</comment> + <comment xml:lang="tr">FreeFileSync Yapılandırması</comment> + <comment xml:lang="vi">Cấu hình FreeFileSync</comment> + <comment xml:lang="zh">FreeFileSync 配置</comment> + <comment xml:lang="zh_TW">FreeFileSync配置</comment> </mime-type> - <mime-type type="application/x-freefilesync-real"> - <comment>RealTimeSync configuration file</comment> - <comment xml:lang="fr">Fichier de configuration RealTimeSync</comment> - <glob pattern="*.ffs_real"/> - </mime-type> + <mime-type type="application/x-freefilesync-batch"> - <comment>FreeFileSync batch file</comment> - <comment xml:lang="fr">Fichier de batch FreeFileSync</comment> <glob pattern="*.ffs_batch"/> + <comment>FreeFileSync Batch File</comment> + <comment xml:lang="ar">الملف الدفعي الخاص بـ FreeFileSync</comment> + <comment xml:lang="bg">Пакетен Файл на FreeFileSync</comment> + <comment xml:lang="cs">Dávka FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync batchfil</comment> + <comment xml:lang="de">FreeFileSync Batchdatei</comment> + <comment xml:lang="el">Δέσμη Ενεργειών του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Batch File</comment> + <comment xml:lang="es">Archivo por lotes de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync eräajo</comment> + <comment xml:lang="fr">Fichiers batch de FreeFileSync</comment> + <comment xml:lang="he">קובץ אצווה של FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync बॅच फ़ाइल</comment> + <comment xml:lang="hr">FreeFileSync slijedna datoteka</comment> + <comment xml:lang="hu">FreeFileSync kötegelt állomány</comment> + <comment xml:lang="it">File Batch FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 一括ファイル</comment> + <comment xml:lang="ko">FreeFileSync 배치(일괄) 파일</comment> + <comment xml:lang="lt">FreeFileSync Failų Paketas</comment> + <comment xml:lang="nl">FreeFileSync batch bestand</comment> + <comment xml:lang="no">FreeFileSync batchfil</comment> + <comment xml:lang="pl">Plik wsadowy FreeFileSync</comment> + <comment xml:lang="pt">Ficheiro Batch FreeFileSync</comment> + <comment xml:lang="pt_BR">Arquivo em Lotes do FreeFileSync</comment> + <comment xml:lang="ro">Fișier Set [Batch] FreeFileSync</comment> + <comment xml:lang="ru">Файл пакетного задания FreeFileSync</comment> + <comment xml:lang="sk">Dávkový súbor FreeFileSync</comment> + <comment xml:lang="sl">FreeFileSync paketna datoteka</comment> + <comment xml:lang="sv">FreeFileSync Batch-fil</comment> + <comment xml:lang="tr">FreeFileSync Toplu İşlem Dosyası</comment> + <comment xml:lang="vi">Tập tin thực thi FreeFileSync</comment> + <comment xml:lang="zh">FreeFileSync 批处理文件</comment> + <comment xml:lang="zh_TW">FreeFileSync批次檔</comment> + </mime-type> + + <mime-type type="application/x-freefilesync-db"> + <glob pattern="*.ffs_db"/> + <comment>FreeFileSync Synchronization Database</comment> + <comment xml:lang="ar">قاعدة بيانات مزامنة FreeFileSync</comment> + <comment xml:lang="bg">Синхронизираща База Данни на FreeFileSync</comment> + <comment xml:lang="cs">Synchronizační databáze FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync synkroniseringsdatabase</comment> + <comment xml:lang="de">FreeFileSync Synchronisationsdatenbank</comment> + <comment xml:lang="el">Βάση Δεδομένων Συγχρονισμού του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Synchronisation Database</comment> + <comment xml:lang="es">Base de datos de sincronización de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync Synkronoinnin tietokanta</comment> + <comment xml:lang="fr">Base de données de synchronisation de FreeFileSync</comment> + <comment xml:lang="he">בסיס נתוני סנכרון של FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync सिंक्रनाइज़ेशन डेटाबेस</comment> + <comment xml:lang="hr">FreeFileSync sinkronizacijska baza podataka</comment> + <comment xml:lang="hu">FreeFileSync szinkronizációs adatbázis</comment> + <comment xml:lang="it">Database sincronizzazione FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 同期データベース</comment> + <comment xml:lang="ko">FreeFileSync 동기화 데이터베이스</comment> + <comment xml:lang="lt">FreeFileSync Suvienodinimo duomenų bazė</comment> + <comment xml:lang="nl">FreeFileSync synchronisatie database</comment> + <comment xml:lang="no">FreeFileSync synkronisering database</comment> + <comment xml:lang="pl">Baza danych FreeFileSync</comment> + <comment xml:lang="pt">Base de Dados de Sincronização FreeFileSync</comment> + <comment xml:lang="pt_BR">Banco de Dados de Sincronização do FreeFileSync</comment> + <comment xml:lang="ro">Bază de Date pentru Sincronizare FreeFileSync</comment> + <comment xml:lang="ru">База данных синхронизации FreeFileSync</comment> + <comment xml:lang="sk">Synchronizačná databáza FreeFileSync</comment> + <comment xml:lang="sl">FreeFileSync sinhronizacijska baza podatkov</comment> + <comment xml:lang="sv">FreeFileSync Synkroniseringsdatabas</comment> + <comment xml:lang="tr">FreeFileSync Eşitleme Veritabanı</comment> + <comment xml:lang="vi">FreeFileSync đồng bộ cơ sở dữ liệu</comment> + <comment xml:lang="zh">FreeFileSync 同步数据库</comment> + <comment xml:lang="zh_TW">FreeFileSync同步資料庫</comment> + </mime-type> + + <mime-type type="application/x-freefilesync-real"> + <glob pattern="*.ffs_real"/> + <comment>RealTimeSync Configuration</comment> + <comment xml:lang="ar">إعداد RealTimeSync</comment> + <comment xml:lang="bg">Конфигурация на RealTimeSync</comment> + <comment xml:lang="cs">Nastavení RealTimeSync</comment> + <comment xml:lang="da">RealTimeSync indstillinger</comment> + <comment xml:lang="de">RealTimeSync Konfiguration</comment> + <comment xml:lang="el">Ρυθμίσεις του RealTimeSync</comment> + <comment xml:lang="en_GB">RealTimeSync Configuration</comment> + <comment xml:lang="es">Configuración de RealTimeSync</comment> + <comment xml:lang="fi">RealTimeSync määrittelyt</comment> + <comment xml:lang="fr">Configuration de RealTimeSync</comment> + <comment xml:lang="he">תצורת RealTimeSync</comment> + <comment xml:lang="hi">RealTimeSync कॉन्फ़िगरेशन</comment> + <comment xml:lang="hr">RealTimeSync postavke</comment> + <comment xml:lang="hu">RealTimeSync konfigurálása</comment> + <comment xml:lang="it">Configurazione RealTimeSync</comment> + <comment xml:lang="ja">RealTimeSync 構成設定</comment> + <comment xml:lang="ko">RealTimeSync 환경설정</comment> + <comment xml:lang="lt">RealTimeSync Nustatymai</comment> + <comment xml:lang="nl">RealTimeSync configuratie</comment> + <comment xml:lang="no">RealTimeSync konfigurering</comment> + <comment xml:lang="pl">Konfiguracja RealTimeSync</comment> + <comment xml:lang="pt">Configuração do RealTimeSync</comment> + <comment xml:lang="pt_BR">Configuração do RealTimeSync</comment> + <comment xml:lang="ro">Configurație RealTimeSync</comment> + <comment xml:lang="ru">Конфигурация RealTimeSync</comment> + <comment xml:lang="sk">Konfigurácia RealTimeSync</comment> + <comment xml:lang="sl">RealTimeSync nastavitve</comment> + <comment xml:lang="sv">RealTimeSync Konfiguration</comment> + <comment xml:lang="tr">RealTimeSync Yapılandırması</comment> + <comment xml:lang="vi">RealTimeSync Cấu hình đồng bộ thời gian thực</comment> + <comment xml:lang="zh">RealTimeSync 配置</comment> + <comment xml:lang="zh_TW">RealTimeSync配置</comment> </mime-type> </mime-info> diff --git a/freefilesync/ffs_desktop_notifications.patch b/freefilesync/ffs_desktop_notifications.patch new file mode 100644 index 0000000..5610fd1 --- /dev/null +++ b/freefilesync/ffs_desktop_notifications.patch @@ -0,0 +1,53 @@ +diff -aur 11.9-1/FreeFileSync/Source/Makefile 11.9-2/FreeFileSync/Source/Makefile +--- 11.9-1/FreeFileSync/Source/Makefile 2021-05-06 16:24:53.987902373 -0400 ++++ 11.9-2/FreeFileSync/Source/Makefile 2021-05-06 17:09:31.512474440 -0400 +@@ -21,6 +22,13 @@ + #treat as system headers so that warnings are hidden: + cxxFlags += -isystem/usr/include/gtk-3.0 + ++with_notifications ?= NO ++ifeq ($(with_notifications),YES) ++# package libglibmm-2.4-dev or glibmm24-devel ++cxxFlags += `pkg-config --cflags giomm-2.4` -Dwith_notifications ++linkFlags += `pkg-config --libs giomm-2.4` ++endif ++ + #support for SELinux (optional) + SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES) + ifeq ($(SELINUX_EXISTING),YES) +diff -aur 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp +--- 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 15:20:34.286831934 -0400 ++++ 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 17:11:45.486004158 -0400 +@@ -32,6 +32,9 @@ + #include "../perf_check.h" + #include "../icon_buffer.h" + ++#ifdef with_notifications ++#include<giomm-2.4/giomm.h> ++#endif + + using namespace zen; + using namespace fff; +@@ -1359,6 +1362,22 @@ + pnl_.m_staticTextPhase->SetLabel(getSyncResultLabel(syncResult)); + //pnl_.m_bitmapStatus->SetToolTip(); -> redundant + ++#ifdef with_notifications ++ // Desktop notification for Linux ++ char title[] = "FreeFileSync"; ++ // from https://stackoverflow.com/a/12097772 ++ std::wstring ssR {getSyncResultLabel(syncResult)}; ++ std::string body; ++ std::transform(ssR.begin(), ssR.end(), std::back_inserter(body), [] (wchar_t c){ return (char)c;}); ++ char icon[] = "freefilesync"; ++ auto Application = Gio::Application::create("org.zenju.freefilesync", Gio::APPLICATION_FLAGS_NONE); ++ Application->register_application(); ++ auto Notification = Gio::Notification::create(title); ++ Notification->set_body(body); ++ auto Icon = Gio::ThemedIcon::create(icon); ++ Notification->set_icon (Icon); ++ Application->send_notification(Notification); ++#endif + //show status on Windows 7 taskbar + if (taskbar_.get()) + switch (syncResult) diff --git a/freefilesync/ffs_no_check_updates.patch b/freefilesync/ffs_no_check_updates.patch index d90bf7d..c0c4fc2 100644 --- a/freefilesync/ffs_no_check_updates.patch +++ b/freefilesync/ffs_no_check_updates.patch @@ -1,44 +1,177 @@ -diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/main_dlg.cpp 11.4-1/FreeFileSync/Source/ui/main_dlg.cpp ---- 11.4-0/FreeFileSync/Source/ui/main_dlg.cpp 2020-12-08 08:15:29.432156507 -0500 -+++ 11.4-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-12-08 18:29:47.210277596 -0500 -@@ -5552,7 +5552,7 @@ - globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! +Version: 11.10 +Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program. +Date: 2021-05-10 +Author: bgstack15 +diff -aur 11.10-1/FreeFileSync/Source/ui/gui_generated.cpp 11.10-2/FreeFileSync/Source/ui/gui_generated.cpp +--- 11.10-1/FreeFileSync/Source/ui/gui_generated.cpp 2021-05-10 08:10:14.747776591 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/gui_generated.cpp 2021-05-10 10:41:28.446374196 -0400 +@@ -109,17 +109,6 @@ + m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( _("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL ); + m_menuHelp->Append( m_menuItemHelp ); - m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck)); +- m_menuHelp->AppendSeparator(); - -+ /* - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) +- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL ); +- m_menuHelp->Append( m_menuItemCheckVersionNow ); +- +- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ), wxEmptyString, wxITEM_CHECK ); +- m_menuHelp->Append( m_menuItemCheckVersionAuto ); +- m_menuItemCheckVersionAuto->Check( true ); +- +- 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 ); + +@@ -1140,8 +1129,6 @@ + m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId()); + m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItem51->GetId()); + m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId()); +- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId()); +- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId()); + m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId()); + m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this ); + m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this ); +diff -aur 11.10-1/FreeFileSync/Source/ui/gui_generated.h 11.10-2/FreeFileSync/Source/ui/gui_generated.h +--- 11.10-1/FreeFileSync/Source/ui/gui_generated.h 2021-05-10 08:10:14.747776591 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/gui_generated.h 2021-05-10 10:52:32.132708289 -0400 +@@ -92,8 +92,6 @@ + wxMenuItem* m_menuItemShowOverview; + wxMenu* m_menuHelp; + wxMenuItem* m_menuItemHelp; +- wxMenuItem* m_menuItemCheckVersionNow; +- wxMenuItem* m_menuItemCheckVersionAuto; + wxMenuItem* m_menuItemAbout; + wxBoxSizer* bSizerPanelHolder; + wxPanel* m_panelTopButtons; +@@ -228,8 +226,6 @@ + virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } + virtual void onMenuResetLayout( 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 onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); } + virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); } +diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp +--- 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-05-10 10:43:26.103497095 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp 2021-05-10 10:52:37.904763378 -0400 +@@ -706,7 +706,6 @@ + + m_menuItemHelp ->SetBitmap(loadImage("help_sicon")); + m_menuItemAbout->SetBitmap(loadImage("about_sicon")); +- m_menuItemCheckVersionNow->SetBitmap(loadImage("update_check_sicon")); + + auto fixMenuIcons = [](wxMenu& menu) //GTK: image must be set *before* adding wxMenuItem to menu or it won't show { - flashStatusInformation(_("Searching for program updates...")); -@@ -5560,6 +5560,7 @@ - automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, - automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get()); - } -+ */ - } +@@ -825,9 +824,6 @@ + //mainly to update row label sizes... + updateGui(); +- //register regular check for update on next idle event +- Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this); +- + //asynchronous call to wxWindow::Layout(): fix superfluous frame on right and bottom when FFS is started in fullscreen mode + Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this); + wxCommandEvent evtDummy; //call once before onLayoutWindowAsync() +@@ -1078,8 +1074,6 @@ + auiMgr_.GetPane(m_panelSearch).Hide(); //no need to show it on startup + auiMgr_.GetPane(m_panelLog ).Hide(); // -@@ -5583,7 +5584,7 @@ - m_menubar->Append(menu, blackStar + L' ' + replaceCpy(_("FreeFileSync %x is available!"), L"%x", utfTo<std::wstring>(globalCfg_.lastOnlineVersion)) + L' ' + blackStar); - } - }; +- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck)); - -+ /* - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { - flashStatusInformation(_("Searching for program updates...")); -@@ -5600,6 +5601,7 @@ + auiMgr_.Update(); + } + +@@ -5601,72 +5595,6 @@ } - else - showNewVersionReminder(); -+ */ } - -diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/Source/ui/version_check.cpp ---- 11.7-0/FreeFileSync/Source/ui/version_check.cpp 2021-03-02 17:21:26.820360086 -0500 -+++ 11.7-1/FreeFileSync/Source/ui/version_check.cpp 2021-03-02 17:49:29.535590111 -0500 -@@ -70,6 +70,8 @@ +- +-void MainDialog::onMenuCheckVersion(wxCommandEvent& event) +-{ +- checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); +-} +- +- +-void MainDialog::onMenuCheckVersionAutomatically(wxCommandEvent& event) +-{ +- if (updateCheckActive(globalCfg_.lastUpdateCheck)) +- disableUpdateCheck(globalCfg_.lastUpdateCheck); +- else +- globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! +- +- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck)); +- +- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) +- { +- flashStatusInformation(_("Searching for program updates...")); +- //synchronous update check is sufficient here: +- automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, +- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get()); +- } +-} +- +- +-void MainDialog::onStartupUpdateCheck(wxIdleEvent& event) +-{ +- //execute just once per startup! +- [[maybe_unused]] bool ubOk = Unbind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this); +- assert(ubOk); +- +- auto showNewVersionReminder = [this] +- { +- if (!globalCfg_.lastOnlineVersion.empty() && haveNewerVersionOnline(globalCfg_.lastOnlineVersion)) +- { +- auto menu = new wxMenu(); +- wxMenuItem* newItem = new wxMenuItem(menu, wxID_ANY, _("&Show details")); +- Bind(wxEVT_COMMAND_MENU_SELECTED, [this](wxCommandEvent&) { checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); }, newItem->GetId()); +- //show changelog + handle Donation Edition auto-updater (including expiration) +- menu->Append(newItem); //pass ownership +- +- const std::wstring& blackStar = utfTo<std::wstring>("★"); +- m_menubar->Append(menu, blackStar + L' ' + replaceCpy(_("FreeFileSync %x is available!"), L"%x", utfTo<std::wstring>(globalCfg_.lastOnlineVersion)) + L' ' + blackStar); +- } +- }; +- +- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) +- { +- flashStatusInformation(_("Searching for program updates...")); +- +- std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread: +- +- guiQueue_.processAsync([resultPrep] { return automaticUpdateCheckRunAsync(resultPrep.get()); }, //run on worker thread: (long-running part of the check) +- [this, showNewVersionReminder] (std::shared_ptr<const UpdateCheckResult>&& resultAsync) +- { +- automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, +- resultAsync.get()); //run on main thread: +- showNewVersionReminder(); +- }); +- } +- else +- showNewVersionReminder(); +-} +- +- + void MainDialog::onLayoutWindowAsync(wxIdleEvent& event) + { + //execute just once per startup! +diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.h 11.10-2/FreeFileSync/Source/ui/main_dlg.h +--- 11.10-1/FreeFileSync/Source/ui/main_dlg.h 2021-05-10 08:02:46.059494398 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/main_dlg.h 2021-05-10 10:52:28.108669884 -0400 +@@ -266,8 +266,6 @@ + void onMenuExportFileList (wxCommandEvent& event) override; + void onMenuResetLayout (wxCommandEvent& event) override { resetLayout(); } + void onMenuFindItem (wxCommandEvent& event) override { showFindPanel(true /*show*/); } //CTRL + F +- void onMenuCheckVersion (wxCommandEvent& event) override; +- void onMenuCheckVersionAutomatically(wxCommandEvent& event) override; + void onMenuAbout (wxCommandEvent& event) override; + void onShowHelp (wxCommandEvent& event) override { wxLaunchDefaultBrowser(L"https://freefilesync.org/manual.php?topic=freefilesync"); } + void onMenuQuit (wxCommandEvent& event) override { Close(); } +diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.cpp 11.10-2/FreeFileSync/Source/ui/version_check.cpp +--- 11.10-1/FreeFileSync/Source/ui/version_check.cpp 2021-05-10 08:10:14.751776629 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/version_check.cpp 2021-05-10 10:50:08.595338399 -0400 +@@ -73,6 +73,8 @@ bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck) { @@ -47,7 +180,7 @@ diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/So if (lastUpdateCheck == getVersionCheckInactiveId()) return false; -@@ -159,8 +161,7 @@ +@@ -158,8 +160,7 @@ std::wstring updateDetailsMsg; try { @@ -57,31 +190,86 @@ diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/So } catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); } -@@ -178,8 +179,7 @@ +@@ -182,8 +183,8 @@ std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError { - const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams, - ffsUpdateCheckUserAgent, nullptr /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll(); //throw SysError + const std::string response = ""; - return trimCpy(response); ++ return trimCpy(response); + + if (response.empty() || + !std::all_of(response.begin(), response.end(), [](char c) { return isDigit(c) || c == FFS_VERSION_SEPARATOR; }) || +@@ -226,58 +227,6 @@ } -@@ -226,13 +226,13 @@ - const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError - lastOnlineVersion = onlineVersion; +-void fff::checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion) +-{ +- try +- { +- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError +- lastOnlineVersion = onlineVersion; +- - if (haveNewerVersionOnline(onlineVersion)) - showUpdateAvailableDialog(&parent, onlineVersion); - else -+ //if (haveNewerVersionOnline(onlineVersion)) -+ // showUpdateAvailableDialog(&parent, onlineVersion); -+ //else - showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg(). - setIcon(loadImage("update_check")). - setTitle(_("Check for Program Updates")). +- showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg(). +- setIcon(loadImage("update_check")). +- setTitle(_("Check for Program Updates")). - setMainInstructions(_("FreeFileSync is up to date."))); -+ setMainInstructions(_("Use your package manager for any updates to FreeFileSync."))); - } - catch (const SysError& e) - { +- } +- catch (const SysError& e) +- { +- if (internetIsAlive()) +- { +- lastOnlineVersion = "Unknown"; +- +- switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg(). +- setTitle(_("Check for Program Updates")). +- setMainInstructions(_("Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?")). +- setDetailInstructions(e.toString()), _("&Check"), _("&Retry"))) +- { +- case ConfirmationButton2::accept: +- wxLaunchDefaultBrowser(L"https://freefilesync.org/get_latest.php"); +- break; +- case ConfirmationButton2::accept2: //retry +- checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!! +- break; +- case ConfirmationButton2::cancel: +- break; +- } +- } +- else +- switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg(). +- setTitle(_("Check for Program Updates")). +- setMainInstructions(replaceCpy(_("Unable to connect to %x."), L"%x", L"freefilesync.org")). +- setDetailInstructions(e.toString()), _("&Retry"))) +- { +- case ConfirmationButton::accept: //retry +- checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!! +- break; +- case ConfirmationButton::cancel: +- break; +- } +- } +-} +- +- + struct fff::UpdateCheckResultPrep + { + std::vector<std::pair<std::string, std::string>> postParameters; +diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.h 11.10-2/FreeFileSync/Source/ui/version_check.h +--- 11.10-1/FreeFileSync/Source/ui/version_check.h 2021-05-10 08:02:46.067494474 -0400 ++++ 11.10-2/FreeFileSync/Source/ui/version_check.h 2021-05-10 10:50:22.035466671 -0400 +@@ -32,9 +32,6 @@ + void automaticUpdateCheckEval(wxWindow* parent, time_t& lastUpdateCheck, std::string& lastOnlineVersion, + const UpdateCheckResult* asyncResult); + //---------------------------------------------------------------------------- +-//call from main thread: +-void checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion); +-//---------------------------------------------------------------------------- + } + + #endif //VERSION_CHECK_H_324872374893274983275 diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec index 7b8dbec..6ef2bb3 100644 --- a/freefilesync/freefilesync.spec +++ b/freefilesync/freefilesync.spec @@ -19,7 +19,7 @@ %define libssh2_name libssh2-%{name} %endif Name: freefilesync -Version: 11.9 +Version: 11.10 Release: 1%{?dist} Summary: A file synchronization utility @@ -44,8 +44,9 @@ Patch8: ffs_bit.patch Patch9: ffs_no_eraseif.patch Patch10: revert_zenju_aggressive_upstreamisms.patch Patch11: ffs_traditional_view.patch +Patch12: ffs_desktop_notifications.patch -Packager: B Stack <bgstack15@gmail.com> +Packager: B. Stack <bgstack15@gmail.com> BuildRequires: brotli-devel BuildRequires: wxGTK3-devel BuildRequires: desktop-file-utils @@ -54,6 +55,7 @@ BuildRequires: ImageMagick BuildRequires: libcurl-devel %{min_libcurl} BuildRequires: %{libssh2_name}-devel %{min_libssh2} BuildRequires: patch +BuildRequires: pkgconfig(giomm-2.4) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(zlib) @@ -104,6 +106,7 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \ %endif %patch10 -p1 %patch11 -p1 +%patch12 -p1 # custom build parameters for packaging application in rpm # fedora provides build_cxxflags, which is really just optflags @@ -207,6 +210,9 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & : %ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml %changelog +* Mon May 10 2021 B. Stack <bgstack15@gmail.com> - 11.10-1 +- version bump + * Mon Apr 05 2021 B. Stack <bgstack15@gmail.com> - 11.9-1 - version bump diff --git a/freefilesync/freefilesync.xml b/freefilesync/freefilesync.xml index d54523f..99f459d 100644 --- a/freefilesync/freefilesync.xml +++ b/freefilesync/freefilesync.xml @@ -1,18 +1,150 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> - <mime-type type="application/x-freefilesync-ffs"> - <comment>FreeFileSync configuration file</comment> - <comment xml:lang="fr">Fichier de configuration FreeFileSync</comment> + <mime-type type="application/x-freefilesync-gui"> <glob pattern="*.ffs_gui"/> + <comment>FreeFileSync Configuration</comment> + <comment xml:lang="ar">إعداد FreeFileSync</comment> + <comment xml:lang="bg">Конфигурация на FreeFileSync</comment> + <comment xml:lang="cs">Nastavení FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync indstillinger</comment> + <comment xml:lang="de">FreeFileSync Konfiguration</comment> + <comment xml:lang="el">Ρυθμίσεις του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Configuration</comment> + <comment xml:lang="es">Configuración de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync määrittelyt</comment> + <comment xml:lang="fr">Configuration de FreeFileSync</comment> + <comment xml:lang="he">תצורת FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync कॉन्फ़िगरेशन</comment> + <comment xml:lang="hr">FreeFileSync Postavke</comment> + <comment xml:lang="hu">FreeFileSync konfigurálása</comment> + <comment xml:lang="it">Configurazione FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 構成設定</comment> + <comment xml:lang="ko">FreeFileSync 환경설정</comment> + <comment xml:lang="lt">FreeFileSync Konfigūracijos</comment> + <comment xml:lang="nl">FreeFileSync configuratie</comment> + <comment xml:lang="no">FreeFileSync konfigurering</comment> + <comment xml:lang="pl">Konfiguracja FreeFileSync</comment> + <comment xml:lang="pt">Configuração do FreeFileSync</comment> + <comment xml:lang="pt_BR">Configuração do FreeFileSync</comment> + <comment xml:lang="ro">Configurație FreeFileSync</comment> + <comment xml:lang="ru">Конфигурация FreeFileSync</comment> + <comment xml:lang="sk">FreeFileSync konfigurácia</comment> + <comment xml:lang="sl">Nastavitve FreeFileSync</comment> + <comment xml:lang="sv">FreeFileSync Konfiguration</comment> + <comment xml:lang="tr">FreeFileSync Yapılandırması</comment> + <comment xml:lang="vi">Cấu hình FreeFileSync</comment> + <comment xml:lang="zh">FreeFileSync 配置</comment> + <comment xml:lang="zh_TW">FreeFileSync配置</comment> </mime-type> - <mime-type type="application/x-freefilesync-real"> - <comment>RealTimeSync configuration file</comment> - <comment xml:lang="fr">Fichier de configuration RealTimeSync</comment> - <glob pattern="*.ffs_real"/> - </mime-type> + <mime-type type="application/x-freefilesync-batch"> - <comment>FreeFileSync batch file</comment> - <comment xml:lang="fr">Fichier de batch FreeFileSync</comment> <glob pattern="*.ffs_batch"/> + <comment>FreeFileSync Batch File</comment> + <comment xml:lang="ar">الملف الدفعي الخاص بـ FreeFileSync</comment> + <comment xml:lang="bg">Пакетен Файл на FreeFileSync</comment> + <comment xml:lang="cs">Dávka FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync batchfil</comment> + <comment xml:lang="de">FreeFileSync Batchdatei</comment> + <comment xml:lang="el">Δέσμη Ενεργειών του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Batch File</comment> + <comment xml:lang="es">Archivo por lotes de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync eräajo</comment> + <comment xml:lang="fr">Fichiers batch de FreeFileSync</comment> + <comment xml:lang="he">קובץ אצווה של FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync बॅच फ़ाइल</comment> + <comment xml:lang="hr">FreeFileSync slijedna datoteka</comment> + <comment xml:lang="hu">FreeFileSync kötegelt állomány</comment> + <comment xml:lang="it">File Batch FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 一括ファイル</comment> + <comment xml:lang="ko">FreeFileSync 배치(일괄) 파일</comment> + <comment xml:lang="lt">FreeFileSync Failų Paketas</comment> + <comment xml:lang="nl">FreeFileSync batch bestand</comment> + <comment xml:lang="no">FreeFileSync batchfil</comment> + <comment xml:lang="pl">Plik wsadowy FreeFileSync</comment> + <comment xml:lang="pt">Ficheiro Batch FreeFileSync</comment> + <comment xml:lang="pt_BR">Arquivo em Lotes do FreeFileSync</comment> + <comment xml:lang="ro">Fișier Set [Batch] FreeFileSync</comment> + <comment xml:lang="ru">Файл пакетного задания FreeFileSync</comment> + <comment xml:lang="sk">Dávkový súbor FreeFileSync</comment> + <comment xml:lang="sl">FreeFileSync paketna datoteka</comment> + <comment xml:lang="sv">FreeFileSync Batch-fil</comment> + <comment xml:lang="tr">FreeFileSync Toplu İşlem Dosyası</comment> + <comment xml:lang="vi">Tập tin thực thi FreeFileSync</comment> + <comment xml:lang="zh">FreeFileSync 批处理文件</comment> + <comment xml:lang="zh_TW">FreeFileSync批次檔</comment> + </mime-type> + + <mime-type type="application/x-freefilesync-db"> + <glob pattern="*.ffs_db"/> + <comment>FreeFileSync Synchronization Database</comment> + <comment xml:lang="ar">قاعدة بيانات مزامنة FreeFileSync</comment> + <comment xml:lang="bg">Синхронизираща База Данни на FreeFileSync</comment> + <comment xml:lang="cs">Synchronizační databáze FreeFileSync</comment> + <comment xml:lang="da">FreeFileSync synkroniseringsdatabase</comment> + <comment xml:lang="de">FreeFileSync Synchronisationsdatenbank</comment> + <comment xml:lang="el">Βάση Δεδομένων Συγχρονισμού του FreeFileSync</comment> + <comment xml:lang="en_GB">FreeFileSync Synchronisation Database</comment> + <comment xml:lang="es">Base de datos de sincronización de FreeFileSync</comment> + <comment xml:lang="fi">FreeFileSync Synkronoinnin tietokanta</comment> + <comment xml:lang="fr">Base de données de synchronisation de FreeFileSync</comment> + <comment xml:lang="he">בסיס נתוני סנכרון של FreeFileSync</comment> + <comment xml:lang="hi">FreeFileSync सिंक्रनाइज़ेशन डेटाबेस</comment> + <comment xml:lang="hr">FreeFileSync sinkronizacijska baza podataka</comment> + <comment xml:lang="hu">FreeFileSync szinkronizációs adatbázis</comment> + <comment xml:lang="it">Database sincronizzazione FreeFileSync</comment> + <comment xml:lang="ja">FreeFileSync 同期データベース</comment> + <comment xml:lang="ko">FreeFileSync 동기화 데이터베이스</comment> + <comment xml:lang="lt">FreeFileSync Suvienodinimo duomenų bazė</comment> + <comment xml:lang="nl">FreeFileSync synchronisatie database</comment> + <comment xml:lang="no">FreeFileSync synkronisering database</comment> + <comment xml:lang="pl">Baza danych FreeFileSync</comment> + <comment xml:lang="pt">Base de Dados de Sincronização FreeFileSync</comment> + <comment xml:lang="pt_BR">Banco de Dados de Sincronização do FreeFileSync</comment> + <comment xml:lang="ro">Bază de Date pentru Sincronizare FreeFileSync</comment> + <comment xml:lang="ru">База данных синхронизации FreeFileSync</comment> + <comment xml:lang="sk">Synchronizačná databáza FreeFileSync</comment> + <comment xml:lang="sl">FreeFileSync sinhronizacijska baza podatkov</comment> + <comment xml:lang="sv">FreeFileSync Synkroniseringsdatabas</comment> + <comment xml:lang="tr">FreeFileSync Eşitleme Veritabanı</comment> + <comment xml:lang="vi">FreeFileSync đồng bộ cơ sở dữ liệu</comment> + <comment xml:lang="zh">FreeFileSync 同步数据库</comment> + <comment xml:lang="zh_TW">FreeFileSync同步資料庫</comment> + </mime-type> + + <mime-type type="application/x-freefilesync-real"> + <glob pattern="*.ffs_real"/> + <comment>RealTimeSync Configuration</comment> + <comment xml:lang="ar">إعداد RealTimeSync</comment> + <comment xml:lang="bg">Конфигурация на RealTimeSync</comment> + <comment xml:lang="cs">Nastavení RealTimeSync</comment> + <comment xml:lang="da">RealTimeSync indstillinger</comment> + <comment xml:lang="de">RealTimeSync Konfiguration</comment> + <comment xml:lang="el">Ρυθμίσεις του RealTimeSync</comment> + <comment xml:lang="en_GB">RealTimeSync Configuration</comment> + <comment xml:lang="es">Configuración de RealTimeSync</comment> + <comment xml:lang="fi">RealTimeSync määrittelyt</comment> + <comment xml:lang="fr">Configuration de RealTimeSync</comment> + <comment xml:lang="he">תצורת RealTimeSync</comment> + <comment xml:lang="hi">RealTimeSync कॉन्फ़िगरेशन</comment> + <comment xml:lang="hr">RealTimeSync postavke</comment> + <comment xml:lang="hu">RealTimeSync konfigurálása</comment> + <comment xml:lang="it">Configurazione RealTimeSync</comment> + <comment xml:lang="ja">RealTimeSync 構成設定</comment> + <comment xml:lang="ko">RealTimeSync 환경설정</comment> + <comment xml:lang="lt">RealTimeSync Nustatymai</comment> + <comment xml:lang="nl">RealTimeSync configuratie</comment> + <comment xml:lang="no">RealTimeSync konfigurering</comment> + <comment xml:lang="pl">Konfiguracja RealTimeSync</comment> + <comment xml:lang="pt">Configuração do RealTimeSync</comment> + <comment xml:lang="pt_BR">Configuração do RealTimeSync</comment> + <comment xml:lang="ro">Configurație RealTimeSync</comment> + <comment xml:lang="ru">Конфигурация RealTimeSync</comment> + <comment xml:lang="sk">Konfigurácia RealTimeSync</comment> + <comment xml:lang="sl">RealTimeSync nastavitve</comment> + <comment xml:lang="sv">RealTimeSync Konfiguration</comment> + <comment xml:lang="tr">RealTimeSync Yapılandırması</comment> + <comment xml:lang="vi">RealTimeSync Cấu hình đồng bộ thời gian thực</comment> + <comment xml:lang="zh">RealTimeSync 配置</comment> + <comment xml:lang="zh_TW">RealTimeSync配置</comment> </mime-type> </mime-info> diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/revert_zenju_aggressive_upstreamisms.patch index 6cae409..de8d5e9 100644 --- a/freefilesync/revert_zenju_aggressive_upstreamisms.patch +++ b/freefilesync/revert_zenju_aggressive_upstreamisms.patch @@ -1,3 +1,6 @@ +Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map> +Date: 2021-05-10 +Version: 11.10 diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h --- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400 +++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400 @@ -9,37 +12,32 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/ #include <vector> #include <wx/choice.h> -@@ -44,11 +43,8 @@ - descrList.push_back({value, {text, tooltip}}); - return *this; - } -- +@@ -47,8 +46,6 @@ + using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>; DescrList descrList; - -- std::unordered_map<const wxChoice*, std::vector<wxString>> itemsSetLast; +- std::unordered_map<const wxChoice*, std::vector<wxString>> labelsSetLast; }; template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value); template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl); -@@ -69,34 +65,26 @@ - - //--------------- impelementation ------------------------------------------- +@@ -71,32 +68,24 @@ template <class Enum> --void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value) -+void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value) + void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value) { -- auto& itemsSetLast = mapping.itemsSetLast[&ctrl]; +- auto& labelsSetLast = mapping.labelsSetLast[&ctrl]; +- +- std::vector<wxString> labels; +- for (const auto& [val, texts] : mapping.descrList) +- labels.push_back(texts.first); + ctrl.Clear(); -- std::vector<wxString> items; +- if (labels != labelsSetLast) + int selectedPos = 0; - for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it) -- items.push_back(it->second.first); -- -- if (items != itemsSetLast) ++ for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it) { -- ctrl.Set(items); //expensive as fuck! => only call when absolutely needed! -- itemsSetLast = std::move(items); +- ctrl.Set(labels); //expensive as fuck! => only call when absolutely needed! +- labelsSetLast = std::move(labels); + ctrl.Append(it->second.first); + if (it->first == value) + { @@ -52,7 +50,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/ + } } - //----------------------------------------------------------------- -- + - const auto it = std::find_if(mapping.descrList.begin(), mapping.descrList.end(), [&](const auto& mapItem) { return mapItem.first == value; }); - if (it != mapping.descrList.end()) - { @@ -61,7 +59,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/ - ctrl.SetToolTip(tooltip); - else - ctrl.UnsetToolTip(); - +- - const int selectedPos = it - mapping.descrList.begin(); - ctrl.SetSelection(selectedPos); - } @@ -305,3 +303,58 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+ //get rid of margins and space between text blocks/"paragraphs" richCtrl.SetMargins({0, 0}); +Message: Revert __cpp_lib_atomic_wait which is not yet implemented in g++-10 or clang++-11 on Debian +How does Zenju compile this?! +Date: 2021-05-10 +--- 11.9-0/zen/globals.h 2021-05-10 08:10:14.755776667 -0400 ++++ 11.9-1/zen/globals.h 2021-05-10 09:17:25.122241641 -0400 +@@ -223,7 +223,11 @@ + void PodSpinMutex::lock() + { + while (!tryLock()) ++#ifdef __cpp_lib_atomic_wait + flag_.wait(true, std::memory_order_relaxed); ++#else ++ ; ++#endif + } + + +@@ -231,7 +235,9 @@ + void PodSpinMutex::unlock() + { + flag_.clear(std::memory_order_release); ++#ifdef __cpp_lib_atomic_wait + flag_.notify_one(); ++#endif + } + + +Message: This one should work; it's a c++17 specification, but it doesn't work. +Date: 2021-05-10 +diff -aur 11.10-0/zen/legacy_compiler.cpp 11.10-1/zen/legacy_compiler.cpp +--- 11.10-0/zen/legacy_compiler.cpp 2021-05-10 08:10:14.755776667 -0400 ++++ 11.10-1/zen/legacy_compiler.cpp 2021-05-10 10:06:01.998079701 -0400 +@@ -14,15 +14,17 @@ + + double zen::fromChars(const char* first, const char* last) + { +- double num = 0; +- [[maybe_unused]] const std::from_chars_result rv = std::from_chars(first, last, num); +- return num; ++ return std::strtod(std::string(first, last).c_str(), nullptr); + } + + + const char* zen::toChars(char* first, char* last, double num) + { +- const std::to_chars_result rv = std::to_chars(first, last, num); +- return rv.ec == std::errc{} ? rv.ptr : first; ++ const size_t bufSize = last - first; ++ const int charsWritten = std::snprintf(first, bufSize, "%g", num); ++ //C99: returns number of chars written if successful, < 0 or >= bufferSize on failure ++ ++ return 0 <= charsWritten && charsWritten < static_cast<int>(bufSize) ? ++ first + charsWritten : first; + } + |