/** * Run the discovery thread. */ void *WidgetDetectorThread::Run() { if (!m_widget_detectors.empty()) { OLA_WARN << "List of widget detectors isn't empty!"; } else { m_widget_detectors.push_back(new UsbProWidgetDetector( &m_ss, ola::NewCallback(this, &WidgetDetectorThread::UsbProWidgetReady), ola::NewCallback(this, &WidgetDetectorThread::DescriptorFailed), m_usb_pro_timeout)); m_widget_detectors.push_back(new RobeWidgetDetector( &m_ss, ola::NewCallback(this, &WidgetDetectorThread::RobeWidgetReady), ola::NewCallback(this, &WidgetDetectorThread::DescriptorFailed), m_robe_timeout)); } RunScan(); m_ss.RegisterRepeatingTimeout( SCAN_INTERVAL_MS, ola::NewCallback(this, &WidgetDetectorThread::RunScan)); m_ss.Execute( ola::NewSingleCallback(this, &WidgetDetectorThread::MarkAsRunning)); m_ss.Run(); vector<WidgetDetectorInterface*>::const_iterator iter = m_widget_detectors.begin(); for (; iter != m_widget_detectors.end(); ++iter) // this will trigger a call to InternalFreeWidget for any remaining widgets delete *iter; if (!m_active_descriptors.empty()) OLA_WARN << m_active_descriptors.size() << " are still active"; ActiveDescriptors::const_iterator iter2 = m_active_descriptors.begin(); for (; iter2 != m_active_descriptors.end(); ++iter2) { OLA_INFO << iter2->first; } m_widget_detectors.clear(); return NULL; }
void Execution::OnBtnRunClick(wxCommandEvent& /*event*/) { ToggleControls(false); ProjectsArray* Projects = Manager::Get()->GetProjectManager()->GetProjects(); if ( !Projects->GetCount() ) { cbMessageBox(_("No active project(s) to process."),_T("Header Fixup")); ToggleControls(true); return; } // Generating list of files to process wxArrayString FilesToProcess; if ( m_Scope->GetSelection()==0 ) // project scope { cbProject* Project = Manager::Get()->GetProjectManager()->GetActiveProject(); AddFilesFromProject(FilesToProcess,Project); } else // workspace scope { ProjectsArray* Projects2 = Manager::Get()->GetProjectManager()->GetProjects(); for ( size_t i = 0; i < Projects2->GetCount(); ++i ) AddFilesFromProject(FilesToProcess,(*Projects2)[i]); } if ( FilesToProcess.IsEmpty() ) { cbMessageBox(_("No files to process."),_T("Header Fixup")); ToggleControls(true); return; } // Generating list of header groups to use wxArrayString Groups; for ( size_t i = 0; i < m_Sets->GetCount(); i++ ) { if ( m_Sets->IsChecked(i) ) { Groups.Add(m_Sets->GetString(i)); } } if ( Groups.IsEmpty() ) { cbMessageBox(_("Please select at least one header group."),_T("Header Fixup")); ToggleControls(true); return; } // Running the scan int HeadersAdded = 0; if ( m_FileType->GetSelection()==0 ) { Manager::Get()->GetLogManager()->DebugLog(F(_T("[HeaderFixup]: Processing header files..."))); m_Log.Add( _T("[header files]\n")); m_Processor = ProcessHeaderFiles; HeadersAdded += RunScan(FilesToProcess,Groups); } else if ( m_FileType->GetSelection()==1 ) { Manager::Get()->GetLogManager()->DebugLog(F(_T("[HeaderFixup]: Processing source files..."))); m_Log.Add(_T("[source files]\n")); m_Processor = ProcessSourceFiles; HeadersAdded += RunScan(FilesToProcess,Groups); } else { Manager::Get()->GetLogManager()->DebugLog(F(_T("[HeaderFixup]: Processing header files..."))); m_Log.Add( _T("[header files]\n")); m_Processor = ProcessHeaderFiles; HeadersAdded += RunScan(FilesToProcess,Groups); Manager::Get()->GetLogManager()->DebugLog(F(_T("[HeaderFixup]: Processing source files..."))); m_Log.Add( _T("\n[source files]\n")); m_Processor = ProcessSourceFiles; HeadersAdded += RunScan(FilesToProcess,Groups); } if ( HeadersAdded ) { wxString log; log.Printf(_("Added %d extra includes.\n"),HeadersAdded); if ( !m_Protocol->IsChecked() ) cbMessageBox(log); m_Log.Add( _T("\n--> ") + log); } else { if ( !m_Protocol->IsChecked() ) cbMessageBox(_("All files were OK. Nothing to be done."),_T("Header Fixup")); m_Log.Add( _("\n--> All files were OK. Nothing to be done.\n")); } if ( m_Protocol->IsChecked() ) { this->Show(false); Protocol Prot(NULL); Prot.SetProtocol(m_Log); Prot.ShowModal(); } SaveSettings(); EndModal(wxID_OK); }// OnBtnRunClick
void Platform_DirectoryReader :: ReadFiles(void) { RunScan(TYPE_FILE); }
void Platform_DirectoryReader :: ReadDirectories(void) { RunScan(TYPE_DIR); }