You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
#ifndef JUCI_SOURCE_H_ |
|
#define JUCI_SOURCE_H_ |
|
|
|
#include <unordered_map> |
|
#include <vector> |
|
#include <string> |
|
#include "gtkmm.h" |
|
#include <TranslationUnit.h> |
|
|
|
using std::string; |
|
|
|
namespace Source { |
|
class Theme { |
|
public: |
|
const std::unordered_map<string, string>& tagtable() const; |
|
void SetTagTable(const std::unordered_map<string, string> &tagtable); |
|
void InsertTag(const string &key, const string &value); |
|
private: |
|
std::unordered_map<string, string> tagtable_; |
|
string background_; |
|
}; // class Theme |
|
|
|
class View : public Gtk::TextView { |
|
public: |
|
View(); |
|
string UpdateLine(); |
|
void ApplyTheme(const Theme &theme); |
|
void OnOpenFile(std::vector<Clang::SourceLocation> &locations, |
|
const Theme &theme); |
|
private: |
|
string GetLine(const Gtk::TextIter &begin); |
|
}; // class View |
|
|
|
class Model{ |
|
public: |
|
Model(); |
|
Theme& theme(); |
|
const string filepath(); |
|
void SetFilePath(const string &filepath); |
|
void SetSourceLocations(const std::vector<Clang::SourceLocation> &locations); |
|
std::vector<Clang::SourceLocation>& getSourceLocations() { |
|
return locations_; |
|
} |
|
|
|
private: |
|
Theme theme_; |
|
string filepath_; |
|
std::vector<Clang::SourceLocation> locations_; |
|
}; |
|
|
|
class Controller { |
|
public: |
|
Controller(); |
|
View& view(); |
|
Model& model(); |
|
void OnNewEmptyFile(); |
|
void OnOpenFile(const string &filename); |
|
|
|
private: |
|
void OnLineEdit(); |
|
void OnSaveFile(); |
|
|
|
protected: |
|
View view_; |
|
Model model_; |
|
}; // class Controller |
|
} // namespace Source |
|
#endif // JUCI_SOURCE_H_
|
|
|