File: SelectDropTargetDlg.cpp

package info (click to toggle)
codelite 12.0+dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, sid
  • size: 95,112 kB
  • sloc: cpp: 424,040; ansic: 18,284; php: 9,569; lex: 4,186; yacc: 2,820; python: 2,294; sh: 312; makefile: 51; xml: 13
file content (54 lines) | stat: -rw-r--r-- 1,509 bytes parent folder | download | duplicates (2)
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
#include "SelectDropTargetDlg.h"
#include "imanager.h"
#include "globals.h"
#include "clWorkspaceView.h"
#include <map>
#include "codelite_events.h"

SelectDropTargetDlg::SelectDropTargetDlg(wxWindow* parent, const wxArrayString& folders)
    : SelectDropTargetBaseDlg(parent)
    , m_folders(folders)
    , m_selectedView(NULL)
{
    Initialize();
}

SelectDropTargetDlg::~SelectDropTargetDlg() {}

void SelectDropTargetDlg::Initialize()
{
    m_views = clGetManager()->GetWorkspaceView()->GetAllPages();
    std::for_each(m_views.begin(), m_views.end(), [&](const std::pair<wxString, wxWindow*>& p) {
        wxVector<wxVariant> cols;
        cols.push_back(p.first);
        m_dvListCtrl->AppendItem(cols, (wxUIntPtr)p.second);
    });
}

void SelectDropTargetDlg::OnOKUI(wxUpdateUIEvent& event) { event.Enable(m_dvListCtrl->HasSelection()); }

void SelectDropTargetDlg::OnOK(wxCommandEvent& event)
{
    event.Skip();
    ActivateSelection();
    EndModal(wxID_OK);
}

void SelectDropTargetDlg::OnSelectionActivated(wxDataViewEvent& event)
{
    ActivateSelection();
    EndModal(wxID_OK);
}

void SelectDropTargetDlg::ActivateSelection()
{
    wxDataViewItem item = m_dvListCtrl->GetSelection();
    if(item.IsOk()) {
        wxWindow* page = reinterpret_cast<wxWindow*>(m_dvListCtrl->GetItemData(item));
        if(page) {
            clCommandEvent event(wxEVT_DND_FOLDER_DROPPED);
            event.SetStrings(m_folders);
            page->GetEventHandler()->AddPendingEvent(event);
        }
    }
}