File: SelectFileTypesDialog.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (75 lines) | stat: -rw-r--r-- 2,070 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "SelectFileTypesDialog.hpp"

#include "globals.h"
#include "windowattrmanager.h"

SelectFileTypesDialog::SelectFileTypesDialog(wxWindow* parent, const wxArrayString& initial_selection)
    : SelectFileTypesDialogBase(parent)
{
    m_all = FileExtManager::GetLanguageBundles();
    InitializeList(initial_selection);

    // set the initial size
    clSetSmallDialogBestSizeAndPosition(this);

    // load any old size from previous activation
    WindowAttrManager::Load(this);

    // but always center on parent
    CentreOnParent();

    m_searchCtrl->CallAfter(&wxSearchCtrl::SetFocus);
}

SelectFileTypesDialog::~SelectFileTypesDialog() {}

void SelectFileTypesDialog::InitializeList(const wxArrayString& selected_items)
{
    m_dvListCtrl->DeleteAllItems();
    wxVector<wxVariant> cols;
    for(const auto& vt : m_all) {
        // include this entry
        clDataViewCheckbox item(selected_items.Index(vt.first) != wxNOT_FOUND, wxNOT_FOUND, vt.first);
        wxVariant v;
        v << item;
        cols.push_back(v);
        m_dvListCtrl->AppendItem(cols);
        cols.clear();
    }
}

void SelectFileTypesDialog::Search(const wxString& filter)
{
    if(filter.empty()) {
        return;
    }
    for(size_t i = 0; i < m_dvListCtrl->GetItemCount(); ++i) {
        auto item = m_dvListCtrl->RowToItem(i);
        wxString text = m_dvListCtrl->GetItemText(item);
        if(text.Contains(filter)) {
            m_dvListCtrl->SelectRow(i);
            m_dvListCtrl->EnsureVisible(item);
            break;
        }
    }
}

wxArrayString SelectFileTypesDialog::GetValue() const
{
    // collect checked items
    wxArrayString result;
    for(size_t i = 0; i < m_dvListCtrl->GetItemCount(); ++i) {
        auto item = m_dvListCtrl->RowToItem(i);
        if(m_dvListCtrl->IsItemChecked(item)) {
            wxString text = m_dvListCtrl->GetItemText(item);
            result.Add(text);
        }
    }
    return result;
}

void SelectFileTypesDialog::OnSearch(wxCommandEvent& event)
{
    wxUnusedVar(event);
    Search(m_searchCtrl->GetValue());
}