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

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

First release to xenial

File size: 2.4 KB
Line 
1#ifndef __CONTEXT_CONTROL_H__
2#define __CONTEXT_CONTROL_H__
3
4#include <wx/aui/auibook.h>
5#include "state.h"
6
7#include <memory>
8
9class wxAuiNotebookEx;
10class CLocalListView;
11class CLocalTreeView;
12class CMainFrame;
13class CRemoteListView;
14class CRemoteTreeView;
15class CView;
16class CViewHeader;
17class CSplitterWindowEx;
18class CState;
19
20class CContextControl final : public wxSplitterWindow, public CStateEventHandler
21{
22public:
23        struct _context_controls
24        {
25                // List of all windows and controls assorted with a context
26                CView* pLocalTreeViewPanel;
27                CView* pLocalListViewPanel;
28                CLocalTreeView* pLocalTreeView;
29                CLocalListView* pLocalListView;
30                CView* pRemoteTreeViewPanel;
31                CView* pRemoteListViewPanel;
32                CRemoteTreeView* pRemoteTreeView;
33                CRemoteListView* pRemoteListView;
34                CViewHeader* pLocalViewHeader;
35                CViewHeader* pRemoteViewHeader;
36
37                CSplitterWindowEx* pViewSplitter; // Contains local and remote splitters
38                CSplitterWindowEx* pLocalSplitter;
39                CSplitterWindowEx* pRemoteSplitter;
40
41                CState* pState;
42
43                int tab_index;
44
45                struct _site_bookmarks
46                {
47                        wxString path;
48                        std::list<wxString> bookmarks;
49                };
50                std::shared_ptr<_site_bookmarks> site_bookmarks;
51        };
52
53        CContextControl(CMainFrame& mainFrame);
54        virtual ~CContextControl();
55
56        void Create(wxWindow* parent);
57
58        void CreateTab();
59        bool CloseTab(int tab);
60
61        struct _context_controls* GetCurrentControls();
62        struct _context_controls* GetControlsFromState(CState* pState);
63
64        int GetCurrentTab() const;
65        int GetTabCount() const;
66        struct _context_controls* GetControlsFromTabIndex(int i);
67
68        bool SelectTab(int i);
69        void AdvanceTab(bool forward);
70
71protected:
72
73        void CreateContextControls(CState* pState);
74
75        std::vector<struct _context_controls> m_context_controls;
76        int m_current_context_controls{-1};
77
78        wxAuiNotebookEx* m_tabs{};
79        int m_right_clicked_tab{-1};
80        CMainFrame& m_mainFrame;
81
82protected:
83        DECLARE_EVENT_TABLE()
84        void OnTabRefresh(wxCommandEvent&);
85        void OnTabChanged(wxAuiNotebookEvent& event);
86        void OnTabClosing(wxAuiNotebookEvent& event);
87        void OnTabClosing_Deferred(wxCommandEvent& event);
88        void OnTabBgDoubleclick(wxAuiNotebookEvent&);
89        void OnTabRightclick(wxAuiNotebookEvent& event);
90        void OnTabContextClose(wxCommandEvent& event);
91        void OnTabContextCloseOthers(wxCommandEvent& event);
92        void OnTabContextNew(wxCommandEvent&);
93
94        virtual void OnStateChange(CState* pState, enum t_statechange_notifications notification, const wxString&, const void*);
95};
96
97#endif //__CONTEX_CONTROL_H__
Note: See TracBrowser for help on using the repository browser.