10 #include <Wt/WApplication> 11 #include <Wt/WContainerWidget> 12 #include <Wt/WEnvironment> 13 #include <Wt/WLineEdit> 14 #include <Wt/WGridLayout> 15 #include <Wt/WHBoxLayout> 16 #include <Wt/WPushButton> 19 #include <Wt/WTreeView> 20 #include <Wt/WVBoxLayout> 21 #include <Wt/WViewWidget> 24 #include "../wt-homepage/SourceView.h" 47 useStyleSheet(
"gitview.css");
48 setTitle(
"Git model example");
50 const char *gitRepo = getenv(
"GITVIEW_REPOSITORY_PATH");
52 WGridLayout *grid =
new WGridLayout();
53 grid->addWidget(
new WText(
"Git repository path:"), 0, 0);
54 grid->addWidget(repositoryEdit_ =
new WLineEdit(gitRepo ? gitRepo :
"")
56 grid->addWidget(repositoryError_ =
new WText(), 0, 2);
57 grid->addWidget(
new WText(
"Revision:"), 1, 0);
58 grid->addWidget(revisionEdit_ =
new WLineEdit(
"master"), 1, 1, AlignLeft);
59 grid->addWidget(revisionError_ =
new WText(), 1, 2);
61 repositoryEdit_->setTextSize(30);
62 revisionEdit_->setTextSize(20);
63 repositoryError_->setStyleClass(
"error-msg");
64 revisionError_->setStyleClass(
"error-msg");
66 repositoryEdit_->enterPressed()
68 revisionEdit_->enterPressed()
71 WPushButton *b =
new WPushButton(
"Load");
73 grid->addWidget(b, 2, 0, AlignLeft);
75 gitView_ =
new WTreeView();
76 gitView_->resize(300, WLength::Auto);
77 gitView_->setSortingEnabled(
false);
78 gitView_->setModel(gitModel_ =
new GitModel(
this));
79 gitView_->setSelectionMode(SingleSelection);
85 sourceView_->setStyleClass(
"source-view");
87 if (environment().javaScript()) {
92 WVBoxLayout *topLayout =
new WVBoxLayout();
93 topLayout->addLayout(grid, 0);
95 WHBoxLayout *gitLayout =
new WHBoxLayout();
96 gitLayout->addWidget(gitView_, 0);
97 gitLayout->addWidget(sourceView_, 1);
98 topLayout->addLayout(gitLayout, 1);
100 root()->setLayout(topLayout);
101 root()->setStyleClass(
"maindiv");
107 root()->setStyleClass(
"maindiv");
108 WContainerWidget *top =
new WContainerWidget();
109 top->setLayout(grid);
110 root()->addWidget(top);
111 root()->addWidget(gitView_);
112 gitView_->setFloatSide(Left);
113 gitView_->setMargin(6);
114 root()->addWidget(sourceView_);
115 sourceView_->setMargin(6);
129 sourceView_->
setIndex(WModelIndex());
130 repositoryError_->setText(
"");
131 revisionError_->setText(
"");
135 gitModel_->
loadRevision(revisionEdit_->text().toUTF8());
137 revisionError_->setText(e.what());
140 repositoryError_->setText(e.what());
147 if (gitView_->selectedIndexes().empty())
150 WModelIndex selected = *gitView_->selectedIndexes().begin();
160 int main(
int argc,
char **argv)
void setRepositoryPath(const std::string &repositoryPath)
Set the repository and load its 'master' revision.
int main(int argc, char **argv)
void loadGitModel()
Change repository and/or revision.
WApplication * createApplication(const WEnvironment &env)
static const int ContentsRole
The role which may be used on a file to retrieve its contents.
A simple application to navigate a git repository.
void showFile()
Displayed the currently selected file.
GitViewApplication(const WEnvironment &env)
Constructor.
WLineEdit * revisionEdit_
View class for source code.
bool setIndex(const Wt::WModelIndex &index)
Sets the model index.
static const int FilePathRole
A model that retrieves revision trees from a git repository.
void loadRevision(const std::string &revName)
Load a particular revision.