45
50
const long ProcessingDlg::ID_BUTTON1 = wxNewId();
48
BEGIN_EVENT_TABLE(ProcessingDlg,wxDialog)
53
BEGIN_EVENT_TABLE(ProcessingDlg,wxScrollingDialog)
49
54
//(*EventTable(ProcessingDlg)
53
ProcessingDlg::ProcessingDlg(wxWindow* parent,LibraryConfigManager& Manager,TypedResults& KnownResults,ResultMap& FoundResults,wxWindowID id):
58
ProcessingDlg::ProcessingDlg(wxWindow* parent,LibraryDetectionManager& Manager,TypedResults& KnownResults,wxWindowID id):
55
60
m_Manager(Manager),
56
m_KnownResults(KnownResults),
57
m_FoundResults(FoundResults)
61
m_KnownResults(KnownResults)
59
63
//(*Initialize(ProcessingDlg)
60
64
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCAPTION, _T("id"));
144
148
bool ProcessingDlg::ProcessLibs()
146
Gauge1->SetRange(m_Manager.GetLibraryCount());
148
for ( int i=0; i<m_Manager.GetLibraryCount(); ++i )
151
for ( int i=0; i<m_Manager.GetLibraryCount(); ++i )
153
TotalCount += (int)m_Manager.GetLibrary(i)->Configurations.size();
156
Gauge1->SetRange( TotalCount );
159
for ( int i=0; i<m_Manager.GetLibraryCount(); ++i )
161
const LibraryDetectionConfigSet* Set = m_Manager.GetLibrary(i);
162
for ( size_t j=0; j<Set->Configurations.size(); ++j )
164
if ( StopFlag ) return false;
165
Gauge1->SetValue( progress++ );
167
ProcessLibrary( &Set->Configurations[j], Set );
174
bool ProcessingDlg::ProcessLibs( const wxArrayString& Shortcuts )
177
for ( int i=0; i<m_Manager.GetLibraryCount(); ++i )
179
if ( const LibraryDetectionConfigSet* Set = m_Manager.GetLibrary( Shortcuts[i] ) )
181
TotalCount += (int)Set->Configurations.size();
184
Gauge1->SetRange( TotalCount );
187
for ( size_t i=0; i<Shortcuts.Count(); ++i )
150
189
if ( StopFlag ) return false;
151
ProcessLibrary(m_Manager.GetLibrary(i));
190
Gauge1->SetValue( progress++ );
191
if ( const LibraryDetectionConfigSet* Set = m_Manager.GetLibrary( Shortcuts[i] ) )
193
for ( size_t j=0; j<Set->Configurations.size(); ++j )
195
if ( StopFlag ) return false;
196
Gauge1->SetValue( progress++ );
198
ProcessLibrary( &Set->Configurations[j], Set );
154
203
return !StopFlag;
157
void ProcessingDlg::ProcessLibrary(const LibraryConfig* Config)
206
void ProcessingDlg::ApplyResults(bool addOnly)
209
m_FoundResults.GetAllResults(Results);
210
if ( Results.Count() == 0 )
212
cbMessageBox(_("Didn't found any library"));
218
wxString PreviousVar;
219
for ( size_t i=0; i<Results.Count(); ++i )
222
Results[i]->Description.IsEmpty() ?
223
Results[i]->LibraryName :
224
Results[i]->Description;
227
wxString::Format(_T("%s : %s"),
228
Results[i]->ShortCode.c_str(),
230
if ( PreviousVar != Results[i]->ShortCode )
232
Selected.Add((int)i);
233
PreviousVar = Results[i]->ShortCode;
237
LibSelectDlg Dlg( this, Names, addOnly );
238
Dlg.SetSelections( Selected );
240
if ( Dlg.ShowModal() == wxID_OK )
242
// Fetch selected libraries
243
Selected = Dlg.GetSelections();
245
// Clear all results if requested
246
if ( Dlg.GetClearAllPrevious() )
248
m_KnownResults[rtDetected].Clear();
251
// Here we will store names of libraries set-up so far
252
// by checking entries we will be able to find out whether
253
// we have to clear previous settings
254
wxArrayString AddedLibraries;
256
for ( size_t i = 0; i<Selected.Count(); i++ )
258
wxString Library = Results[Selected[i]]->ShortCode;
262
// Here we set-up internal libraries configuration
263
if ( Dlg.GetClearSelectedPrevious() )
265
if ( AddedLibraries.Index(Library)==wxNOT_FOUND )
267
// Ok, have to delete previosu results since this is the first
268
// occurence of this library in new set
269
ResultArray& Previous = m_KnownResults[rtDetected].GetShortCode(Library);
270
for ( size_t j=0; j<Previous.Count(); j++ )
276
AddedLibraries.Add(Library);
278
else if ( Dlg.GetDontClearPrevious() )
280
// Find and remove duplicates
281
ResultArray& Previous = m_KnownResults[rtDetected].GetShortCode(Library);
282
for ( size_t j=0; j<Previous.Count(); j++ )
284
if ( *Previous[j] == *Results[Selected[i]] )
287
Previous.RemoveAt(j--);
293
m_KnownResults[rtDetected].GetShortCode(Library).Add(new LibraryResult(*Results[Selected[i]]));
296
if ( Dlg.GetSetupGlobalVars() )
298
// Here we set-up global variables
299
Results[Selected[i]]->SetGlobalVar();
306
void ProcessingDlg::ProcessLibrary(const LibraryDetectionConfig* Config,const LibraryDetectionConfigSet* Set)
159
308
Status->SetLabel(
160
309
wxString::Format(
161
310
_("Searching library \"%s\""),
162
Config->ShortCode.c_str()));
311
Set->ShortCode.c_str()));
164
CheckFilter(_T(""),wxStringStringMap(),wxArrayString(),Config,0);
313
CheckFilter(_T(""),wxStringStringMap(),wxArrayString(),Config,Set,0);
167
316
void ProcessingDlg::CheckFilter(
168
317
const wxString& OldBasePath,
169
318
const wxStringStringMap& OldVars,
170
319
const wxArrayString& OldCompilers,
171
const LibraryConfig* Config,
320
const LibraryDetectionConfig* Config,
321
const LibraryDetectionConfigSet* Set,
174
324
if ( (int)Config->Filters.size() <= WhichFilter )
176
FoundLibrary(OldBasePath,OldVars,OldCompilers,Config);
326
FoundLibrary(OldBasePath,OldVars,OldCompilers,Config,Set);
180
const LibraryFilter& Filter = Config->Filters[WhichFilter];
330
const LibraryDetectionFilter& Filter = Config->Filters[WhichFilter];
182
332
switch ( Filter.Type )
184
case LibraryFilter::File:
334
case LibraryDetectionFilter::File:
187
337
wxArrayString Pattern;
383
CheckFilter(OldBasePath,OldVars,OldCompilers,Config,WhichFilter+1);
533
CheckFilter(OldBasePath,OldVars,OldCompilers,Config,Set,WhichFilter+1);
388
case LibraryFilter::PkgConfig:
538
case LibraryDetectionFilter::PkgConfig:
390
540
if ( m_KnownResults[rtPkgConfig].IsShortCode(Filter.Value) )
392
CheckFilter(OldBasePath,OldVars,OldCompilers,Config,WhichFilter+1);
542
CheckFilter(OldBasePath,OldVars,OldCompilers,Config,Set,WhichFilter+1);
397
case LibraryFilter::Compiler:
547
case LibraryDetectionFilter::Compiler:
399
549
if ( OldCompilers.IsEmpty() )
401
551
// If this is the first compiler filter, let's build new list and continue
402
CheckFilter(OldBasePath,OldVars,wxStringTokenize(Filter.Value,_T("| \t")),Config,WhichFilter+1);
552
CheckFilter(OldBasePath,OldVars,wxStringTokenize(Filter.Value,_T("| \t")),Config,Set,WhichFilter+1);