49
52
const long ProjectConfigurationPanel::ID_STATICTEXT1 = wxNewId();
50
53
const long ProjectConfigurationPanel::ID_TEXTCTRL2 = wxNewId();
51
54
const long ProjectConfigurationPanel::ID_CHECKBOX1 = wxNewId();
55
const long ProjectConfigurationPanel::ID_BUTTON5 = wxNewId();
52
56
const long ProjectConfigurationPanel::ID_TEXTCTRL1 = wxNewId();
53
57
const long ProjectConfigurationPanel::ID_BUTTON3 = wxNewId();
54
58
const long ProjectConfigurationPanel::ID_STATICTEXT2 = wxNewId();
95
99
wxStaticBoxSizer* StaticBoxSizer2;
96
100
wxBoxSizer* BoxSizer6;
97
101
wxBoxSizer* BoxSizer5;
102
wxBoxSizer* BoxSizer7;
98
103
wxBoxSizer* BoxSizer2;
99
104
wxStaticBoxSizer* StaticBoxSizer3;
100
105
wxBoxSizer* BoxSizer1;
101
106
wxStaticBoxSizer* StaticBoxSizer1;
102
107
wxBoxSizer* BoxSizer3;
103
108
wxStaticBoxSizer* m_DisableAuto;
105
110
Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("wxID_ANY"));
106
111
BoxSizer1 = new wxBoxSizer(wxVERTICAL);
107
112
BoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
109
114
StaticBoxSizer1 = new wxStaticBoxSizer(wxVERTICAL, this, _("Libraries used in project"));
110
115
m_UsedLibraries = new wxListBox(this, ID_LISTBOX1, wxDefaultPosition, wxSize(147,123), 0, 0, 0, wxDefaultValidator, _T("ID_LISTBOX1"));
111
116
StaticBoxSizer1->Add(m_UsedLibraries, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
117
Button2 = new wxButton(this, ID_BUTTON6, _("Try to detect missing ones"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON6"));
118
StaticBoxSizer1->Add(Button2, 0, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
112
119
BoxSizer5->Add(StaticBoxSizer1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
113
120
m_DisableAuto = new wxStaticBoxSizer(wxVERTICAL, this, _("Extra settings"));
114
121
m_NoAuto = new wxCheckBox(this, ID_CHECKBOX2, _("Don\'t setup automatically"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX2"));
140
147
m_Filter = new wxTextCtrl(this, ID_TEXTCTRL2, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
141
148
BoxSizer4->Add(m_Filter, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
142
149
StaticBoxSizer2->Add(BoxSizer4, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
150
BoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
143
151
m_Tree = new wxCheckBox(this, ID_CHECKBOX1, _("Show as tree"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
144
152
m_Tree->SetValue(true);
145
StaticBoxSizer2->Add(m_Tree, 0, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
153
BoxSizer7->Add(m_Tree, 1, wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
154
Button1 = new wxButton(this, ID_BUTTON5, _("Edit"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_BUTTON5"));
156
BoxSizer7->Add(Button1, 0, wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
157
StaticBoxSizer2->Add(BoxSizer7, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
146
158
BoxSizer3->Add(StaticBoxSizer2, 1, wxBOTTOM|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
147
159
StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Unknown library"));
148
160
m_UnknownLibrary = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
160
172
Timer1.SetOwner(this, ID_TIMER1);
161
173
BoxSizer1->Fit(this);
162
174
BoxSizer1->SetSizeHints(this);
164
176
Connect(ID_LISTBOX1,wxEVT_COMMAND_LISTBOX_SELECTED,(wxObjectEventFunction)&ProjectConfigurationPanel::Onm_UsedLibrariesSelect);
177
Connect(ID_BUTTON6,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ProjectConfigurationPanel::OnButton2Click);
165
178
Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ProjectConfigurationPanel::Onm_AddScriptClick);
166
179
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ProjectConfigurationPanel::Onm_AddClick);
167
180
Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ProjectConfigurationPanel::Onm_RemoveClick);
570
583
wxMessageBox(_("Script \"lib_finder.script\" successfully added."),_("lib_finder.script Success"),wxOK|wxICON_INFORMATION,this);
586
void ProjectConfigurationPanel::OnButton2Click(wxCommandEvent& event)
588
wxArrayString HeadersBase;
589
if ( HeadersDetectorDlg(this,m_Project,HeadersBase).ShowModal() != wxID_OK )
591
cbMessageBox( _("Cancelled the search"), _("Cancelled"), wxOK | wxICON_WARNING, this );
595
if ( HeadersBase.IsEmpty() )
597
cbMessageBox( _("Didn't found any #include directive."), _("Error"), wxOK | wxICON_ERROR, this );
601
// Getting array of all known libraries
602
ResultArray AllArray;
603
for ( int i=0; i<rtCount; i++ )
605
m_KnownLibs[i].GetAllResults(AllArray);
607
wxArrayString NewLibs;
609
// Sorting and removing duplicates and processing results
612
for ( size_t i=0; i<HeadersBase.Count(); i++ )
614
if ( Previous != HeadersBase[i] )
616
Previous = HeadersBase[i];
617
DetectNewLibs( Previous, AllArray, NewLibs );
621
// Filtering detected results
622
wxArrayString NewLibsFiltered;
625
for ( size_t i=0; i<NewLibs.Count(); i++ )
627
if ( Previous != NewLibs[i] )
629
Previous = NewLibs[i];
630
if ( m_ConfCopy.m_GlobalUsedLibs.Index(Previous) == wxNOT_FOUND )
632
NewLibsFiltered.Add( Previous );
637
if ( NewLibsFiltered.IsEmpty() )
640
_("Didn't found any missing library for your project.\n"
642
"This may mean that you project is fully configured\n"
643
"or that missing libraries are not yet recognized\n"
644
"or fully supported in lib_finder plugin"),
645
_("No libraries found"),
646
wxOK | wxICON_ASTERISK,
652
wxGetMultipleChoices(
654
_("Select libraries to include in your project"),
655
_("Adding new libraries"),
659
if ( Choices.IsEmpty() )
664
for ( size_t i=0; i<Choices.Count(); i++ )
666
wxString Library = NewLibsFiltered[ Choices[i] ];
667
m_ConfCopy.m_GlobalUsedLibs.Add(Library);
668
m_UsedLibraries->Append(GetUserListName(Library),new ListItemData(Library));
671
// Make sure that after the scan, used won't be able to manually
672
// add currently selected "known" library (through '<' button)
673
// which has just been added automatically
675
Onm_KnownLibrariesTreeSelectionChanged(ev);
678
void ProjectConfigurationPanel::DetectNewLibs( const wxString& IncludeName, ResultArray& known, wxArrayString& LibsList )
680
wxString FixedInclude = IncludeName;
681
FixedInclude.MakeLower();
682
FixedInclude.Replace(_T("\\"),_T("/"),true);
683
for ( size_t i=0; i<known.Count(); i++ )
685
for ( size_t j=0; j<known[i]->Headers.Count(); j++ )
687
if ( FixedInclude.Matches( known[i]->Headers[j].Lower() ) )
689
LibsList.Add( known[i]->ShortCode );