1
2 #include "fortranfileext.h"
3
4 #ifndef CB_PRECOMP
5 #include <wx/tokenzr.h>
6 #include <configmanager.h>
7 #include <editormanager.h>
8 #include <logmanager.h>
9 #endif
10
FortranFileExt()11 FortranFileExt::FortranFileExt()
12 {
13 m_ExtDone = false;
14 }
15
~FortranFileExt()16 FortranFileExt::~FortranFileExt()
17 {
18 //dtor
19 }
20
IsFileFortran(const wxString & filename,FortranSourceForm & fsForm)21 bool FortranFileExt::IsFileFortran(const wxString& filename, FortranSourceForm& fsForm)
22 {
23 if (!m_ExtDone)
24 {
25 RereadFileExtensions();
26 m_ExtDone = true;
27 }
28
29 bool isf;
30 wxString ext = filename.AfterLast(_T('.')).Lower();
31
32 if (m_FortranExtFree.count(ext))
33 {
34 fsForm = fsfFree;
35 isf = true;
36 }
37 else if (m_FortranExtFixed.count(ext))
38 {
39 fsForm = fsfFixed;
40 isf = true;
41 }
42 else
43 isf = false;
44
45 return isf;
46 }
47
RereadFileExtensions()48 void FortranFileExt::RereadFileExtensions()
49 {
50 EditorColourSet* colSet = Manager::Get()->GetEditorManager()->GetColourSet();
51 if (colSet)
52 colSet = new EditorColourSet(*colSet);
53 else
54 colSet = new EditorColourSet();
55
56 RereadFileExtensionsLang(colSet, _T("fortran77"), m_FortranExtFixed);
57 RereadFileExtensionsLang(colSet, _T("fortran"), m_FortranExtFree);
58 }
59
RereadFileExtensionsLang(EditorColourSet * colSet,wxString langName,StringSet & extSet)60 void FortranFileExt::RereadFileExtensionsLang(EditorColourSet* colSet, wxString langName, StringSet& extSet)
61 {
62 extSet.clear();
63 HighlightLanguage lang = colSet->GetHighlightLanguage(langName);
64 const wxArrayString& fileMasks = colSet->GetFileMasks(lang);
65
66 wxString exts;
67 for (size_t i=0; i < fileMasks.GetCount(); i++)
68 {
69 exts << _T(" ") + fileMasks[i];
70 }
71
72 //Manager::Get()->GetLogManager()->DebugLog(_T("FortranProject ")+langName+_T("=")+exts);
73
74 wxStringTokenizer tkz(exts, _T(" ;,*.\t\r\n"), wxTOKEN_STRTOK);
75 while ( tkz.HasMoreTokens() )
76 {
77 wxString token = tkz.GetNextToken();
78 extSet.insert(token.Lower());
79 }
80 }
81
RereadOptions()82 void FortranFileExt::RereadOptions()
83 {
84 m_ExtDone = false;
85 }
86
87