summaryrefslogtreecommitdiff
path: root/ui/folder_pair.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/folder_pair.h')
-rw-r--r--ui/folder_pair.h221
1 files changed, 0 insertions, 221 deletions
diff --git a/ui/folder_pair.h b/ui/folder_pair.h
deleted file mode 100644
index be01e79d..00000000
--- a/ui/folder_pair.h
+++ /dev/null
@@ -1,221 +0,0 @@
-// **************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
-// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *
-// **************************************************************************
-
-#ifndef FOLDERPAIR_H_89341750847252345
-#define FOLDERPAIR_H_89341750847252345
-
-#include <wx/event.h>
-#include <wx/menu.h>
-#include <wx+/context_menu.h>
-#include <wx+/bitmap_button.h>
-#include <wx+/image_tools.h>
-#include <wx+/image_resources.h>
-#include "dir_name.h"
-#include "small_dlgs.h"
-#include "sync_cfg.h"
-#include "../lib/norm_filter.h"
-#include "../structures.h"
-
-namespace zen
-{
-//basic functionality for handling alternate folder pair configuration: change sync-cfg/filter cfg, right-click context menu, button icons...
-
-template <class GuiPanel>
-class FolderPairPanelBasic : private wxEvtHandler
-{
-public:
- typedef std::shared_ptr<const CompConfig> AltCompCfgPtr;
- typedef std::shared_ptr<const SyncConfig> AltSyncCfgPtr;
-
- void setConfig(AltCompCfgPtr compConfig, AltSyncCfgPtr syncCfg, const FilterConfig& filter)
- {
- altCompConfig = compConfig;
- altSyncConfig = syncCfg;
- localFilter = filter;
- refreshButtons();
- }
-
- AltCompCfgPtr getAltCompConfig() const { return altCompConfig; }
- AltSyncCfgPtr getAltSyncConfig() const { return altSyncConfig; }
- FilterConfig getAltFilterConfig() const { return localFilter; }
-
-
- FolderPairPanelBasic(GuiPanel& basicPanel) : //takes reference on basic panel to be enhanced
- basicPanel_(basicPanel)
- {
- //register events for removal of alternate configuration
- basicPanel_.m_bpButtonAltCompCfg ->Connect(wxEVT_RIGHT_DOWN, wxCommandEventHandler(FolderPairPanelBasic::OnAltCompCfgContext ), nullptr, this);
- basicPanel_.m_bpButtonAltSyncCfg ->Connect(wxEVT_RIGHT_DOWN, wxCommandEventHandler(FolderPairPanelBasic::OnAltSyncCfgContext ), nullptr, this);
- basicPanel_.m_bpButtonLocalFilter->Connect(wxEVT_RIGHT_DOWN, wxCommandEventHandler(FolderPairPanelBasic::OnLocalFilterCfgContext), nullptr, this);
-
- basicPanel_.m_bpButtonAltCompCfg-> Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FolderPairPanelBasic::OnAltCompCfg ), nullptr, this);
- basicPanel_.m_bpButtonAltSyncCfg-> Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FolderPairPanelBasic::OnAltSyncCfg ), nullptr, this);
- basicPanel_.m_bpButtonLocalFilter->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FolderPairPanelBasic::OnLocalFilterCfg), nullptr, this);
-
- basicPanel_.m_bpButtonRemovePair->SetBitmapLabel(getResourceImage(L"item_remove"));
- }
-
-private:
- void refreshButtons()
- {
- if (altCompConfig.get())
- {
- setImage(*basicPanel_.m_bpButtonAltCompCfg, getResourceImage(L"cfg_compare_small"));
- basicPanel_.m_bpButtonAltCompCfg->SetToolTip(_("Alternate comparison settings") + L" (" + getVariantName(altCompConfig->compareVar) + L")");
- }
- else
- {
- setImage(*basicPanel_.m_bpButtonAltCompCfg, greyScale(getResourceImage(L"cfg_compare_small")));
- basicPanel_.m_bpButtonAltCompCfg->SetToolTip(_("Alternate comparison settings"));
- }
-
- if (altSyncConfig.get())
- {
- setImage(*basicPanel_.m_bpButtonAltSyncCfg, getResourceImage(L"cfg_sync_small"));
- basicPanel_.m_bpButtonAltSyncCfg->SetToolTip(_("Alternate synchronization settings") + L" (" + getVariantName(altSyncConfig->directionCfg.var) + L")");
- }
- else
- {
- setImage(*basicPanel_.m_bpButtonAltSyncCfg, greyScale(getResourceImage(L"cfg_sync_small")));
- basicPanel_.m_bpButtonAltSyncCfg->SetToolTip(_("Alternate synchronization settings"));
- }
-
- if (!isNullFilter(localFilter))
- {
- setImage(*basicPanel_.m_bpButtonLocalFilter, getResourceImage(L"filter_small"));
- basicPanel_.m_bpButtonLocalFilter->SetToolTip(_("Local filter") + L" (" + _("Active") + L")");
- }
- else
- {
- setImage(*basicPanel_.m_bpButtonLocalFilter, greyScale(getResourceImage(L"filter_small")));
- basicPanel_.m_bpButtonLocalFilter->SetToolTip(_("Local filter") + L" (" + _("None") + L")");
- }
- }
-
- void OnAltCompCfgContext(wxCommandEvent& event)
- {
- auto removeAltCompCfg = [&]
- {
- this->altCompConfig.reset(); //"this->" galore: workaround GCC compiler bugs
- this->refreshButtons();
- this->onAltCompCfgChange();
- };
-
- ContextMenu menu;
- menu.addItem(_("Remove alternate settings"), removeAltCompCfg, nullptr, altCompConfig.get() != nullptr);
- menu.popup(basicPanel_);
- }
-
- void OnAltSyncCfgContext(wxCommandEvent& event)
- {
- auto removeAltSyncCfg = [&]
- {
- this->altSyncConfig.reset();
- this->refreshButtons();
- this->onAltSyncCfgChange();
- };
-
- ContextMenu menu;
- menu.addItem(_("Remove alternate settings"), removeAltSyncCfg, nullptr, altSyncConfig.get() != nullptr);
- menu.popup(basicPanel_);
- }
-
- void OnLocalFilterCfgContext(wxCommandEvent& event)
- {
- auto removeLocalFilterCfg = [&]
- {
- this->localFilter = FilterConfig();
- this->refreshButtons();
- this->onLocalFilterCfgChange();
- };
-
- std::unique_ptr<FilterConfig>& filterCfgOnClipboard = getFilterCfgOnClipboardRef();
-
- auto copyFilter = [&] { filterCfgOnClipboard = make_unique<FilterConfig>(this->localFilter); };
- auto pasteFilter = [&]
- {
- if (filterCfgOnClipboard)
- {
- this->localFilter = *filterCfgOnClipboard;
- this->refreshButtons();
- this->onLocalFilterCfgChange();
- }
- };
-
- ContextMenu menu;
- menu.addItem(_("Clear filter settings"), removeLocalFilterCfg, nullptr, !isNullFilter(localFilter));
- menu.addSeparator();
- menu.addItem( _("Copy"), copyFilter, nullptr, !isNullFilter(localFilter));
- menu.addItem( _("Paste"), pasteFilter, nullptr, filterCfgOnClipboard.get() != nullptr);
- menu.popup(basicPanel_);
- }
-
-
- virtual MainConfiguration getMainConfig() const = 0;
- virtual wxWindow* getParentWindow() = 0;
- virtual std::unique_ptr<FilterConfig>& getFilterCfgOnClipboardRef() = 0;
-
- virtual void onAltCompCfgChange() = 0;
- virtual void onAltSyncCfgChange() = 0;
- virtual void onLocalFilterCfgChange() = 0;
-
- void OnAltCompCfg(wxCommandEvent& event)
- {
- const MainConfiguration mainCfg = getMainConfig();
-
- CompConfig cmpCfg = altCompConfig.get() ? *altCompConfig : mainCfg.cmpConfig;
-
- if (showCompareCfgDialog(getParentWindow(), cmpCfg, _("Alternate Comparison Settings")) == ReturnSmallDlg::BUTTON_OKAY)
- {
- altCompConfig = std::make_shared<CompConfig>(cmpCfg);
- refreshButtons();
- onAltCompCfgChange();
- }
- }
-
- void OnAltSyncCfg(wxCommandEvent& event)
- {
- const MainConfiguration mainCfg = getMainConfig();
-
- CompConfig cmpCfg = altCompConfig.get() ? *altCompConfig : mainCfg.cmpConfig;
- SyncConfig syncCfg = altSyncConfig.get() ? *altSyncConfig : mainCfg.syncCfg;
-
- if (showSyncConfigDlg(getParentWindow(),
- cmpCfg.compareVar,
- syncCfg,
- _("Alternate Synchronization Settings"),
- nullptr,
- nullptr) == ReturnSyncConfig::BUTTON_OKAY) //optional input parameter
- {
- altSyncConfig = std::make_shared<SyncConfig>(syncCfg);
- refreshButtons();
- onAltSyncCfgChange();
- }
- }
-
- void OnLocalFilterCfg(wxCommandEvent& event)
- {
- FilterConfig localFiltTmp = localFilter;
-
- if (showFilterDialog(getParentWindow(), localFiltTmp, _("Local Filter")) == ReturnSmallDlg::BUTTON_OKAY)
- {
- localFilter = localFiltTmp;
- refreshButtons();
- onLocalFilterCfgChange();
- }
- }
-
- GuiPanel& basicPanel_; //panel to be enhanced by this template
-
- //alternate configuration attached to it
- AltCompCfgPtr altCompConfig; //optional
- AltSyncCfgPtr altSyncConfig; //
- FilterConfig localFilter;
-};
-}
-
-
-#endif //FOLDERPAIR_H_89341750847252345
bgstack15