source: filezilla/trunk/fuentes/src/interface/Mainfrm.h @ 130

Last change on this file since 130 was 130, checked in by jrpelegrina, 3 years ago

First release to xenial

File size: 5.7 KB
Line 
1#ifndef __MAINFRM_H__
2#define __MAINFRM_H__
3
4#include "statusbar.h"
5#include "engine_context.h"
6
7#include <wx/timer.h>
8
9#ifndef __WXMAC__
10#include <wx/taskbar.h>
11#endif
12
13#if FZ_MANUALUPDATECHECK
14#include "updater.h"
15#endif
16
17class CAsyncRequestQueue;
18class CContextControl;
19class CLed;
20class CMainFrameStateEventHandler;
21class CMenuBar;
22class CQueue;
23class CQueueView;
24class CQuickconnectBar;
25class CSiteManagerItemData_Site;
26class CSplitterWindowEx;
27class CStatusView;
28class CState;
29class CThemeProvider;
30class CToolBar;
31class CWindowStateManager;
32
33class CMainFrame final : public wxNavigationEnabled<wxFrame>, private COptionChangeEventHandler
34#if FZ_MANUALUPDATECHECK
35        , protected CUpdateHandler
36#endif
37{
38        friend class CMainFrameStateEventHandler;
39public:
40        CMainFrame();
41        virtual ~CMainFrame();
42
43        void UpdateActivityLed(int direction);
44
45        CStatusView* GetStatusView() { return m_pStatusView; }
46        CQueueView* GetQueue() { return m_pQueueView; }
47        CQuickconnectBar* GetQuickconnectBar() { return m_pQuickconnectBar; }
48
49        // Window size and position as well as pane sizes
50        void RememberSplitterPositions();
51        bool RestoreSplitterPositions();
52        void SetDefaultSplitterPositions();
53
54        void CheckChangedSettings();
55
56        void ConnectNavigationHandler(wxEvtHandler* handler);
57
58        wxStatusBar* GetStatusBar() const { return m_pStatusBar; }
59
60        void ProcessCommandLine();
61
62        void PostInitialize();
63
64        bool ConnectToServer(const CServer& server, const CServerPath& path = CServerPath(), bool isReconnect = false);
65
66        CContextControl* GetContextControl() { return m_pContextControl; }
67
68        bool ConnectToSite(CSiteManagerItemData_Site & data, bool newTab = false);
69
70        CFileZillaEngineContext& GetEngineContext() { return m_engineContext; }
71private:
72        void UpdateLayout();
73        void FixTabOrder();
74
75        bool CloseDialogsAndQuit(wxCloseEvent &event);
76        bool CreateMenus();
77        bool CreateQuickconnectBar();
78        bool CreateMainToolBar();
79        void OpenSiteManager(const CServer* pServer = 0);
80
81        void FocusNextEnabled(std::list<wxWindow*>& windowOrder, std::list<wxWindow*>::iterator iter, bool skipFirst, bool forward);
82
83        void SetBookmarksFromPath(const wxString& path);
84
85        CStatusBar* m_pStatusBar{};
86        CMenuBar* m_pMenuBar{};
87        CToolBar* m_pToolBar{};
88        CQuickconnectBar* m_pQuickconnectBar{};
89
90        CSplitterWindowEx* m_pTopSplitter{}; // If log position is 0, splits message log from rest of panes
91        CSplitterWindowEx* m_pBottomSplitter{}; // Top contains view splitter, bottom queue (or queuelog splitter if in position 1)
92        CSplitterWindowEx* m_pQueueLogSplitter{};
93
94        CFileZillaEngineContext m_engineContext;
95        CContextControl* m_pContextControl{};
96
97        CStatusView* m_pStatusView{};
98        CQueueView* m_pQueueView{};
99        CLed* m_pActivityLed[2];
100        CThemeProvider* m_pThemeProvider{};
101#if FZ_MANUALUPDATECHECK
102        CUpdater* m_pUpdater{};
103        virtual void UpdaterStateChanged( UpdaterState s, build const& v );
104        void TriggerUpdateDialog();
105        wxTimer update_dialog_timer_;
106#endif
107
108        void ShowDirectoryTree(bool local, bool show);
109
110        void ShowDropdownMenu(wxMenu* pMenu, wxToolBar* pToolBar, wxCommandEvent& event);
111
112#ifdef __WXMSW__
113        virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
114#endif
115
116        void HandleResize();
117
118        void SetupKeyboardAccelerators();
119
120        void OnOptionsChanged(changed_options_t const& options);
121
122        // Event handlers
123        DECLARE_EVENT_TABLE()
124        void OnSize(wxSizeEvent& event);
125        void OnMenuHandler(wxCommandEvent& event);
126        void OnEngineEvent(wxFzEvent& event);
127        void OnUpdateLedTooltip(wxCommandEvent&);
128        void OnDisconnect(wxCommandEvent&);
129        void OnCancel(wxCommandEvent&);
130        void OnClose(wxCloseEvent& event);
131        void OnReconnect(wxCommandEvent&);
132        void OnRefresh(wxCommandEvent&);
133        void OnTimer(wxTimerEvent& event);
134        void OnSiteManager(wxCommandEvent&);
135        void OnProcessQueue(wxCommandEvent& event);
136        void OnMenuEditSettings(wxCommandEvent&);
137        void OnToggleToolBar(wxCommandEvent& event);
138        void OnToggleLogView(wxCommandEvent&);
139        void OnToggleDirectoryTreeView(wxCommandEvent& event);
140        void OnToggleQueueView(wxCommandEvent& event);
141        void OnMenuHelpAbout(wxCommandEvent&);
142        void OnFilter(wxCommandEvent& event);
143        void OnFilterRightclicked(wxCommandEvent& event);
144#if FZ_MANUALUPDATECHECK
145        void OnCheckForUpdates(wxCommandEvent& event);
146#endif //FZ_MANUALUPDATECHECK
147        void OnSitemanagerDropdown(wxCommandEvent& event);
148        void OnNavigationKeyEvent(wxNavigationKeyEvent& event);
149        void OnChar(wxKeyEvent& event);
150        void OnActivate(wxActivateEvent& event);
151        void OnToolbarComparison(wxCommandEvent& event);
152        void OnToolbarComparisonDropdown(wxCommandEvent& event);
153        void OnDropdownComparisonMode(wxCommandEvent& event);
154        void OnDropdownComparisonHide(wxCommandEvent& event);
155        void OnSyncBrowse(wxCommandEvent& event);
156#ifdef __WXMAC__
157        void OnChildFocused(wxChildFocusEvent& event);
158#else
159        void OnIconize(wxIconizeEvent& event);
160        void OnTaskBarClick(wxTaskBarIconEvent&);
161#endif
162#ifdef __WXGTK__
163        void OnTaskBarClick_Delayed(wxCommandEvent& event);
164#endif
165        void OnSearch(wxCommandEvent& event);
166        void OnMenuNewTab(wxCommandEvent& event);
167        void OnMenuCloseTab(wxCommandEvent& event);
168
169        bool m_bInitDone{};
170        bool m_bQuit{};
171        wxEventType m_closeEvent{};
172        wxTimer m_closeEventTimer;
173
174        CAsyncRequestQueue* m_pAsyncRequestQueue{};
175        CMainFrameStateEventHandler* m_pStateEventHandler{};
176
177        CWindowStateManager* m_pWindowStateManager{};
178
179        CQueue* m_pQueuePane{};
180
181#ifndef __WXMAC__
182        wxTaskBarIcon* m_taskBarIcon{};
183#endif
184#ifdef __WXGTK__
185        // There is a bug in KDE, causing the window to toggle iconized state
186        // several times a second after uniconizing it from taskbar icon.
187        // Set m_taskbar_is_uniconizing in OnTaskBarClick and unset the
188        // next time the pending event processing runs and calls OnTaskBarClick_Delayed.
189        // While set, ignore iconize events.
190        bool m_taskbar_is_uniconizing{};
191#endif
192
193        int m_comparisonToggleAcceleratorId{};
194
195#ifdef __WXMAC__
196        int m_lastFocusedChild{-1};
197#endif
198};
199
200#endif
Note: See TracBrowser for help on using the repository browser.