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