source: filezilla/trunk/fuentes/src/interface/view.cpp @ 130

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

First release to xenial

File size: 1.6 KB
Line 
1#include <filezilla.h>
2#include "view.h"
3#include "viewheader.h"
4
5BEGIN_EVENT_TABLE(CView, wxNavigationEnabled<wxWindow>)
6EVT_SIZE(CView::OnSize)
7END_EVENT_TABLE()
8
9CView::CView(wxWindow* pParent)
10{
11        Create(pParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER);
12}
13
14void CView::SetStatusBar(wxStatusBar* pStatusBar)
15{
16        m_pStatusBar = pStatusBar;
17}
18
19void CView::SetFooter(wxWindow* footer)
20{
21        m_pFooter = footer;
22}
23
24void CView::Arrange(wxWindow* child, wxRect& clientRect, bool top)
25{
26        if (child && child->IsShown()) {
27                int const childHeight = child->GetSize().GetHeight();
28
29                wxRect childRect = clientRect;
30                childRect.SetHeight(childHeight);
31
32                if (!top) {
33                        childRect.SetTop(clientRect.GetBottom() - childHeight + 1);
34                }
35                else {
36                        clientRect.SetTop(childHeight);
37                }
38                clientRect.SetHeight(clientRect.GetHeight() - childHeight);
39
40                child->SetSize(childRect);
41#ifdef __WXMSW__
42                child->Refresh();
43#endif
44        }
45}
46
47void CView::OnSize(wxSizeEvent&)
48{
49        wxSize size = GetClientSize();
50        wxRect rect(size);
51
52        Arrange(m_pHeader, rect, true);
53        Arrange(m_pFooter, rect, false);
54        Arrange(m_pStatusBar, rect, false);
55
56        if (m_pWnd) {
57                m_pWnd->SetSize(rect);
58        }
59}
60
61void CView::SetHeader(CViewHeader* pWnd)
62{
63        m_pHeader = pWnd;
64        if (m_pHeader && m_pHeader->GetParent() != this)
65                CViewHeader::Reparent(&m_pHeader, this);
66        FixTabOrder();
67}
68
69void CView::SetWindow(wxWindow* pWnd)
70{
71        m_pWnd = pWnd;
72        FixTabOrder();
73}
74
75void CView::FixTabOrder()
76{
77        if (m_pHeader && m_pWnd && m_pWnd->GetParent() == this) {
78                m_pWnd->MoveAfterInTabOrder(m_pHeader);
79        }
80}
81
82CViewHeader* CView::DetachHeader()
83{
84        CViewHeader* pHeader = m_pHeader;
85        m_pHeader = 0;
86        return pHeader;
87}
Note: See TracBrowser for help on using the repository browser.