1 /*
2 * This file is part of lib_finder plugin for Code::Blocks Studio
3 * Copyright (C) 2006-2007  Bartlomiej Swiecki
4 *
5 * wxSmith is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * wxSmith is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with wxSmith; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
18 *
19 * $Revision: 10299 $
20 * $Id: processingdlg.h 10299 2015-05-15 12:41:59Z jenslody $
21 * $HeadURL: svn://svn.code.sf.net/p/codeblocks/code/branches/release-20.xx/src/plugins/contrib/lib_finder/processingdlg.h $
22 */
23 
24 #ifndef PROCESSINGDLG_H
25 #define PROCESSINGDLG_H
26 
27 #include <wx/string.h>
28 #include <wx/hashmap.h>
29 #include <wx/arrstr.h>
30 #ifdef __WXMSW__
31     #include <wx/gauge.h>
32 #endif
33 
34 
35 
36 //(*Headers(ProcessingDlg)
37 #include "scrollingdialog.h"
38 class wxStaticBoxSizer;
39 class wxFlexGridSizer;
40 class wxGauge;
41 class wxButton;
42 class wxStaticText;
43 //*)
44 
45 #include "librarydetectionconfig.h"
46 #include "librarydetectionmanager.h"
47 #include "resultmap.h"
48 #include "pkgconfigmanager.h"
49 
50 WX_DECLARE_STRING_HASH_MAP(wxArrayString,FileNamesMap);
51 WX_DECLARE_STRING_HASH_MAP(wxString,wxStringStringMap);
52 
53 class ProcessingDlg: public wxScrollingDialog
54 {
55 	public:
56 
57 		ProcessingDlg(wxWindow* parent, LibraryDetectionManager& Manager, TypedResults& KnownResults, wxWindowID id = -1);
58 		virtual ~ProcessingDlg();
59 
60 		//(*Identifiers(ProcessingDlg)
61 		static const long ID_STATICTEXT1;
62 		static const long ID_GAUGE1;
63 		static const long ID_BUTTON1;
64 		//*)
65 
66 		bool ReadDirs(const wxArrayString& Dirs);
67 
68 		bool ProcessLibs();
69 
70 		bool ProcessLibs(const wxArrayString& Shortcuts);
71 
72 		void ApplyResults(bool addOnly);
73 
74 	protected:
75 
76 		//(*Handlers(ProcessingDlg)
77 		void OnButton1Click(wxCommandEvent& event);
78 		//*)
79 
80 		//(*Declarations(ProcessingDlg)
81 		wxFlexGridSizer* FlexGridSizer1;
82 		wxStaticText* Status;
83 		wxButton* StopBtn;
84 		wxGauge* Gauge1;
85 		wxStaticBoxSizer* StaticBoxSizer1;
86 		//*)
87 
88 	private:
89 
90         void ReadDir(const wxString& DirName);
91         void ProcessLibrary(const LibraryDetectionConfig* Config, const LibraryDetectionConfigSet* Set);
92         void SplitPath(const wxString& FileName,wxArrayString& Split);
93         bool IsVariable(const wxString& NamePart) const;
94         void CheckFilter(const wxString& BasePath,const wxStringStringMap& Vars,const wxArrayString& CompilerList,const LibraryDetectionConfig *Config,const LibraryDetectionConfigSet* Set,int WhichFilter);
95         void FoundLibrary(const wxString& BasePath,const wxStringStringMap& Vars,const wxArrayString& CompilerList,const LibraryDetectionConfig *Config,const LibraryDetectionConfigSet* Set);
96         wxString FixVars(wxString Original,const wxStringStringMap& Vars);
97         wxString FixPath(wxString Original);
98 
99         bool StopFlag;
100         FileNamesMap Map;
101         LibraryDetectionManager& m_Manager;
102         TypedResults& m_KnownResults;
103         ResultMap m_FoundResults;
104 
105 		DECLARE_EVENT_TABLE()
106 };
107 
108 #endif
109