summaryrefslogtreecommitdiff
path: root/ui/settingsDialog.h
blob: 5a36b1c4b3c1cfe2c9384fb6507444554d292169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
// **************************************************************************
// * 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) 2008-2010 ZenJu (zhnmju123 AT gmx.de)                    *
// **************************************************************************
//
#ifndef SYNCDIALOG_H_INCLUDED
#define SYNCDIALOG_H_INCLUDED

#include "guiGenerated.h"
#include "../library/processXml.h"
#include <memory>

class BatchFileDropEvent;
class BatchFolderPairPanel;
class FirstBatchFolderPairCfg;
class wxHelpController;

namespace FreeFileSync
{
class DragDropOnDlg;
}


class SyncCfgDialog : public SyncCfgDlgGenerated
{
public:
    SyncCfgDialog(wxWindow* window,
                  const FreeFileSync::CompareVariant compareVar,
                  FreeFileSync::SyncConfiguration& syncConfiguration,
                  FreeFileSync::DeletionPolicy& handleDeletion,
                  wxString& customDeletionDirectory,
                  bool* ignoreErrors); //optional input parameter

    ~SyncCfgDialog();

    enum
    {
        BUTTON_APPLY = 10
    };

    static void updateConfigIcons(const FreeFileSync::CompareVariant compareVar,
                                  const FreeFileSync::SyncConfiguration& syncConfig,
                                  wxBitmapButton* buttonLeftOnly,
                                  wxBitmapButton* buttonRightOnly,
                                  wxBitmapButton* buttonLeftNewer,
                                  wxBitmapButton* buttonRightNewer,
                                  wxBitmapButton* buttonDifferent,
                                  wxBitmapButton* buttonConflict,
                                  wxStaticBitmap* bitmapLeftOnly,
                                  wxStaticBitmap* bitmapRightOnly,
                                  wxStaticBitmap* bitmapLeftNewer,
                                  wxStaticBitmap* bitmapRightNewer,
                                  wxStaticBitmap* bitmapDifferent,
                                  wxStaticBitmap* bitmapConflict,
                                  wxSizer*        syncDirections);
    //some syntax relaxation
    void updateConfigIcons(const FreeFileSync::CompareVariant cmpVar, const FreeFileSync::SyncConfiguration& syncConfig);

private:
    virtual void OnSyncAutomatic(   wxCommandEvent& event);
    virtual void OnSyncLeftToRight( wxCommandEvent& event);
    virtual void OnSyncUpdate(      wxCommandEvent& event);

    virtual void OnExLeftSideOnly(  wxCommandEvent& event);
    virtual void OnExRightSideOnly( wxCommandEvent& event);
    virtual void OnLeftNewer(       wxCommandEvent& event);
    virtual void OnRightNewer(      wxCommandEvent& event);
    virtual void OnDifferent(       wxCommandEvent& event);
    virtual void OnConflict(        wxCommandEvent& event);

    virtual void OnClose(           wxCloseEvent&   event);
    virtual void OnCancel(          wxCommandEvent& event);
    virtual void OnApply(           wxCommandEvent& event);

    //set tooltip
    void updateToolTipErrorHandling(bool ignoreErrors);

    //error handling
    bool getErrorHandling();
    void setErrorHandling(bool ignoreErrors);
    void OnChangeErrorHandling(wxCommandEvent& event);

    //deletion handling
    FreeFileSync::DeletionPolicy getDeletionHandling();
    void setDeletionHandling(FreeFileSync::DeletionPolicy newValue);
    void OnChangeDeletionHandling(wxCommandEvent& event);

    const FreeFileSync::CompareVariant cmpVariant;

    //temporal copy of maindialog.cfg.syncConfiguration
    FreeFileSync::SyncConfiguration currentSyncConfig;

    //changing data
    FreeFileSync::SyncConfiguration& refSyncConfiguration;
    FreeFileSync::DeletionPolicy& refHandleDeletion;
    wxString& refCustomDeletionDirectory;
    bool* refIgnoreErrors;

    std::auto_ptr<FreeFileSync::DragDropOnDlg> dragDropCustomDelFolder;
};


class BatchDialog: public BatchDlgGenerated
{
    friend class BatchFileDropEvent;
    template <class GuiPanel>
    friend class FolderPairCallback;

public:
    BatchDialog(wxWindow* window, const xmlAccess::XmlBatchConfig& batchCfg);
    BatchDialog(wxWindow* window, const wxString& filename);
    ~BatchDialog();

    enum
    {
        BATCH_FILE_SAVED = 15
    };

private:
    void init();

    virtual void OnExLeftSideOnly(     wxCommandEvent& event);
    virtual void OnExRightSideOnly(    wxCommandEvent& event);
    virtual void OnLeftNewer(          wxCommandEvent& event);
    virtual void OnRightNewer(         wxCommandEvent& event);
    virtual void OnDifferent(          wxCommandEvent& event);
    virtual void OnConflict(           wxCommandEvent& event);
    virtual void OnHelp(               wxCommandEvent& event);

    virtual void OnCheckAutomatic(     wxCommandEvent& event);
    virtual void OnCheckFilter(        wxCommandEvent& event);
    virtual void OnCheckSilent(        wxCommandEvent& event);
    virtual void OnChangeCompareVar(   wxCommandEvent& event);
    virtual void OnClose(              wxCloseEvent&   event);
    virtual void OnCancel(             wxCommandEvent& event);
    virtual void OnSaveBatchJob(       wxCommandEvent& event);
    virtual void OnLoadBatchJob(       wxCommandEvent& event);
    virtual void OnAddFolderPair(      wxCommandEvent& event);
    virtual void OnRemoveFolderPair(   wxCommandEvent& event);
    virtual void OnRemoveTopFolderPair(wxCommandEvent& event);

    void addFolderPair(const std::vector<FreeFileSync::FolderPairEnh>& newPairs, bool addFront = false);
    void removeAddFolderPair(const int pos);
    void clearAddFolderPairs();

    void updateGuiForFolderPair();

    FreeFileSync::CompareVariant getCurrentCompareVar() const;

    void updateConfigIcons(const FreeFileSync::CompareVariant cmpVar, const FreeFileSync::SyncConfiguration& syncConfig);

    void updateVisibleTabs();
    void showNotebookpage(wxWindow* page, const wxString& pageName, bool show);

    //error handling
    xmlAccess::OnError getSelectionHandleError() const;
    void setSelectionHandleError(const xmlAccess::OnError value);
    void OnChangeErrorHandling(wxCommandEvent& event);

    //set tooltip
    void updateToolTipErrorHandling(const xmlAccess::OnError value);

    //deletion handling
    FreeFileSync::DeletionPolicy getDeletionHandling() const;
    void setDeletionHandling(FreeFileSync::DeletionPolicy newValue);
    void OnChangeDeletionHandling(wxCommandEvent& event);


    bool saveBatchFile(const wxString& filename);
    void loadBatchFile(const wxString& filename);
    void loadBatchCfg(const xmlAccess::XmlBatchConfig& batchCfg);

    xmlAccess::XmlBatchConfig getCurrentConfiguration() const;

    FreeFileSync::SyncConfiguration localSyncConfiguration;

    boost::shared_ptr<FirstBatchFolderPairCfg> firstFolderPair; //always bound!!!
    std::vector<BatchFolderPairPanel*> additionalFolderPairs;

    //used when saving batch file
    wxString proposedBatchFileName;

    //add drag & drop support when selecting logfile directory
    std::auto_ptr<FreeFileSync::DragDropOnDlg> dragDropOnLogfileDir;
    std::auto_ptr<FreeFileSync::DragDropOnDlg> dragDropCustomDelFolder;
};

#endif // SYNCDIALOG_H_INCLUDED
bgstack15