Lexers can now be loaded
This commit is contained in:
parent
0561e531ef
commit
e0d8b1203d
2
Makefile
2
Makefile
@ -8,7 +8,7 @@ PROGRAM_SRC = $(wildcard src/*.cpp src/widgets/*.cpp)
|
|||||||
PROGRAM = build/Tyro
|
PROGRAM = build/Tyro
|
||||||
PROGRAM_OBJECTS = $(patsubst %.cpp,%.o, $(PROGRAM_SRC))
|
PROGRAM_OBJECTS = $(patsubst %.cpp,%.o, $(PROGRAM_SRC))
|
||||||
|
|
||||||
BASE_FLAGS = -DSCI_LEXER -std=gnu++11
|
BASE_FLAGS = -DSCI_LEXER -std=c++11
|
||||||
|
|
||||||
LDLIBS = $(TARGET) $(shell wx-config --libs base core aui stc adv) -lssh2
|
LDLIBS = $(TARGET) $(shell wx-config --libs base core aui stc adv) -lssh2
|
||||||
WX_CXXFLAGS = $(shell wx-config --cxxflags) $(BASE_FLAGS)
|
WX_CXXFLAGS = $(shell wx-config --cxxflags) $(BASE_FLAGS)
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
@ -5,6 +5,10 @@
|
|||||||
#ifndef DEFINITIONS_H
|
#ifndef DEFINITIONS_H
|
||||||
#define DEFINITIONS_H
|
#define DEFINITIONS_H
|
||||||
|
|
||||||
|
// EditPane file extension to lexer mapping
|
||||||
|
typedef pair<string, int> StringConstMapData;
|
||||||
|
typedef map<string, int> StringConstMap;
|
||||||
|
|
||||||
const wxString TYRO_FILE_OPEN_WILDCARDS =
|
const wxString TYRO_FILE_OPEN_WILDCARDS =
|
||||||
_T("Bash (*.sh, *.bsh) |*.sh;*.bsh|")
|
_T("Bash (*.sh, *.bsh) |*.sh;*.bsh|")
|
||||||
_T("Batch (*.bat, *.cmd, *.nt)|*.bat;*.cmd,*.nt|")
|
_T("Batch (*.bat, *.cmd, *.nt)|*.bat;*.cmd,*.nt|")
|
||||||
|
@ -5,7 +5,36 @@ EditPane::EditPane(
|
|||||||
const wxSize &size, long style
|
const wxSize &size, long style
|
||||||
) : wxStyledTextCtrl (parent, id, pos, size, style)
|
) : wxStyledTextCtrl (parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
|
StringConstMapData map_data[] = {
|
||||||
|
{"c", wxSTC_LEX_CPP},
|
||||||
|
{"h", wxSTC_LEX_CPP},
|
||||||
|
{"cpp", wxSTC_LEX_CPP},
|
||||||
|
{"cxx", wxSTC_LEX_CPP},
|
||||||
|
{"py", wxSTC_LEX_PYTHON},
|
||||||
|
{"php", wxSTC_LEX_PHPSCRIPT}
|
||||||
|
};
|
||||||
|
|
||||||
|
lexer_map = StringConstMap(
|
||||||
|
map_data,
|
||||||
|
map_data + sizeof map_data / sizeof map_data[0]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
EditPane::~EditPane() {}
|
EditPane::~EditPane() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulate lexer selection when opening a file
|
||||||
|
*
|
||||||
|
* @param wxString filePath
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
bool EditPane::LoadAndHighlight(wxString filePath)
|
||||||
|
{
|
||||||
|
wxFileName file(filePath);
|
||||||
|
wxString ext = file.GetExt();
|
||||||
|
|
||||||
|
//lexer_map_it = lexer_map.find((string) ext);
|
||||||
|
//this->SetLexer(lexer_map_it->second);
|
||||||
|
|
||||||
|
return this->LoadFile(filePath);
|
||||||
|
}
|
||||||
|
@ -2,8 +2,10 @@
|
|||||||
#define TYROEDIT_PANE_H
|
#define TYROEDIT_PANE_H
|
||||||
|
|
||||||
#include "../wx_common.h"
|
#include "../wx_common.h"
|
||||||
|
|
||||||
|
#include <wx/stc/stc.h>
|
||||||
|
|
||||||
#include "../../include/json/json.h"
|
#include "../../include/json/json.h"
|
||||||
#include "EditPaneDefinitions.h"
|
|
||||||
|
|
||||||
class EditPane: public wxStyledTextCtrl
|
class EditPane: public wxStyledTextCtrl
|
||||||
{
|
{
|
||||||
@ -20,7 +22,10 @@ public:
|
|||||||
wxVSCROLL
|
wxVSCROLL
|
||||||
);
|
);
|
||||||
~EditPane();
|
~EditPane();
|
||||||
|
bool LoadAndHighlight(wxString filePath);
|
||||||
private:
|
private:
|
||||||
|
StringConstMap lexer_map;
|
||||||
|
StringConstMap::iterator lexer_map_it;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TYRODOC_FRAME_H
|
#endif // TYRODOC_FRAME_H
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef EDITPANEDEFINITIONS_H
|
|
||||||
#define EDITPANEDEFINITIONS_H
|
|
||||||
|
|
||||||
#include <wx/stc/stc.h>
|
|
||||||
|
|
||||||
// EditPane file extension to lexer mapping
|
|
||||||
/*map<string,int> TYROLEXER_MAPPING = {
|
|
||||||
{"c", wxSTC_LEX_CPP},
|
|
||||||
{"h", wxSTC_LEX_CPP},
|
|
||||||
{"cpp", wxSTC_LEX_CPP},
|
|
||||||
{"cxx", wxSTC_LEX_CPP},
|
|
||||||
{"py", wxSTC_LEX_PYTHON},
|
|
||||||
{"php", wxSTC_LEX_PHPSCRIPT}
|
|
||||||
};*/
|
|
||||||
|
|
||||||
#endif /* EDITPANEDEFINITIONS_H */
|
|
||||||
|
|
@ -107,6 +107,7 @@ void MainFrame::SetupMenu()
|
|||||||
editMenu->Append(wxID_CUT, _T("Cu&t\tCtrl+X"), _T("Cut selected text"));
|
editMenu->Append(wxID_CUT, _T("Cu&t\tCtrl+X"), _T("Cut selected text"));
|
||||||
editMenu->Append(wxID_COPY, _T("&Copy\tCtrl+C"), _T("Copy selected text"));
|
editMenu->Append(wxID_COPY, _T("&Copy\tCtrl+C"), _T("Copy selected text"));
|
||||||
editMenu->Append(wxID_PASTE, _T("&Paste\tCtrl+V"), _T("Paste contents of clipboard"));
|
editMenu->Append(wxID_PASTE, _T("&Paste\tCtrl+V"), _T("Paste contents of clipboard"));
|
||||||
|
editMenu->Append(wxID_CLEAR, _T("&Delete\tDel"));
|
||||||
editMenu->AppendSeparator();
|
editMenu->AppendSeparator();
|
||||||
editMenu->Append(wxID_SELECTALL, _T("Select All\tCtrl+A"), _T("Select all the text in the current document"));
|
editMenu->Append(wxID_SELECTALL, _T("Select All\tCtrl+A"), _T("Select all the text in the current document"));
|
||||||
|
|
||||||
@ -228,5 +229,7 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event))
|
|||||||
info.SetDescription("Tyro, a text editor for all development");
|
info.SetDescription("Tyro, a text editor for all development");
|
||||||
info.SetCopyright(_T(" (C) 2015, Timothy J Warren"));
|
info.SetCopyright(_T(" (C) 2015, Timothy J Warren"));
|
||||||
|
|
||||||
wxAboutBox(info, this);
|
wxGenericAboutDialog dlg;
|
||||||
|
dlg.Create(info, this);
|
||||||
|
dlg.ShowModal();
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "../TyroApp.h"
|
#include "../TyroApp.h"
|
||||||
|
|
||||||
#include <wx/aboutdlg.h>
|
#include <wx/aboutdlg.h>
|
||||||
|
#include <wx/generic/aboutdlgg.h>
|
||||||
|
|
||||||
#include "TabContainer.h"
|
#include "TabContainer.h"
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ TabContainer::TabContainer(
|
|||||||
long style
|
long style
|
||||||
) : wxAuiNotebook(parent, id, pos, size, style)
|
) : wxAuiNotebook(parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
this->AddTab();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TabContainer::~TabContainer() {}
|
TabContainer::~TabContainer() {}
|
||||||
@ -23,22 +22,31 @@ void TabContainer::AddTab()
|
|||||||
{
|
{
|
||||||
untitled_document_count++;
|
untitled_document_count++;
|
||||||
wxString caption;
|
wxString caption;
|
||||||
|
|
||||||
caption.Printf("Untitled %lu", untitled_document_count);
|
caption.Printf("Untitled %lu", untitled_document_count);
|
||||||
|
|
||||||
EditPane *editor = new EditPane(this, wxID_ANY);
|
EditPane *editor = new EditPane(this, wxID_ANY);
|
||||||
|
|
||||||
this->AddPage(editor, caption);
|
this->AddPage(editor, caption);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabContainer::AddTab(wxString filePath)
|
void TabContainer::AddTab(wxString filePath)
|
||||||
{
|
{
|
||||||
wxString caption=filePath;
|
wxFileName fileName(filePath);
|
||||||
|
|
||||||
|
wxString caption= fileName.GetFullName();
|
||||||
EditPane *editor = new EditPane(this, wxID_ANY);
|
EditPane *editor = new EditPane(this, wxID_ANY);
|
||||||
|
|
||||||
editor->LoadFile(filePath);
|
bool loaded_file = editor->LoadAndHighlight(filePath);
|
||||||
|
|
||||||
this->AddPage(editor, caption);
|
if (loaded_file)
|
||||||
|
{
|
||||||
|
this->AddPage(editor, caption);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// @TODO Add Error dialog here
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EditPane *TabContainer::GetCurrentEditor()
|
EditPane *TabContainer::GetCurrentEditor()
|
||||||
|
@ -8,8 +8,10 @@
|
|||||||
#include "../wx_common.h"
|
#include "../wx_common.h"
|
||||||
|
|
||||||
#include <wx/aui/aui.h>
|
#include <wx/aui/aui.h>
|
||||||
|
#include <wx/filename.h>
|
||||||
#include "EditPane.h"
|
#include "EditPane.h"
|
||||||
|
|
||||||
|
|
||||||
static long tab_style = wxAUI_NB_TAB_MOVE | wxAUI_NB_SCROLL_BUTTONS
|
static long tab_style = wxAUI_NB_TAB_MOVE | wxAUI_NB_SCROLL_BUTTONS
|
||||||
| wxAUI_NB_WINDOWLIST_BUTTON | wxAUI_NB_CLOSE_ON_ALL_TABS
|
| wxAUI_NB_WINDOWLIST_BUTTON | wxAUI_NB_CLOSE_ON_ALL_TABS
|
||||||
| wxAUI_NB_MIDDLE_CLICK_CLOSE | wxAUI_NB_TOP;
|
| wxAUI_NB_MIDDLE_CLICK_CLOSE | wxAUI_NB_TOP;
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <wx/stdpaths.h>
|
||||||
|
#include <wx/filename.h>
|
||||||
|
|
||||||
#include "definitions.h"
|
#include "definitions.h"
|
||||||
|
|
||||||
#endif /* WX_COMMON_H */
|
#endif /* WX_COMMON_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user