Wt examples
3.2.2
|
A simple application to navigate a git repository. More...
Public Member Functions | |
GitViewApplication (const WEnvironment &env) | |
Constructor. | |
Private Member Functions | |
void | loadGitModel () |
Change repository and/or revision. | |
void | showFile () |
Displayed the currently selected file. | |
Private Attributes | |
WLineEdit * | repositoryEdit_ |
WLineEdit * | revisionEdit_ |
WText * | repositoryError_ |
WText * | revisionError_ |
GitModel * | gitModel_ |
WTreeView * | gitView_ |
SourceView * | sourceView_ |
A simple application to navigate a git repository.
This examples demonstrates how to use the custom model use GitModel with a WTreeView.
GitViewApplication::GitViewApplication | ( | const WEnvironment & | env | ) | [inline] |
Constructor.
Definition at line 44 of file GitView.C.
: WApplication(env) { useStyleSheet("gitview.css"); setTitle("Git model example"); const char *gitRepo = getenv("GITVIEW_REPOSITORY_PATH"); WGridLayout *grid = new WGridLayout(); grid->addWidget(new WText("Git repository path:"), 0, 0); grid->addWidget(repositoryEdit_ = new WLineEdit(gitRepo ? gitRepo : "") , 0, 1, AlignLeft); grid->addWidget(repositoryError_ = new WText(), 0, 2); grid->addWidget(new WText("Revision:"), 1, 0); grid->addWidget(revisionEdit_ = new WLineEdit("master"), 1, 1, AlignLeft); grid->addWidget(revisionError_ = new WText(), 1, 2); repositoryEdit_->setTextSize(30); revisionEdit_->setTextSize(20); repositoryError_->setStyleClass("error-msg"); revisionError_->setStyleClass("error-msg"); repositoryEdit_->enterPressed() .connect(this, &GitViewApplication::loadGitModel); revisionEdit_->enterPressed() .connect(this, &GitViewApplication::loadGitModel); WPushButton *b = new WPushButton("Load"); b->clicked().connect(this, &GitViewApplication::loadGitModel); grid->addWidget(b, 2, 0, AlignLeft); gitView_ = new WTreeView(); gitView_->resize(300, WLength::Auto); gitView_->setSortingEnabled(false); gitView_->setModel(gitModel_ = new GitModel(this)); gitView_->setSelectionMode(SingleSelection); gitView_->selectionChanged().connect(this, &GitViewApplication::showFile); sourceView_ = new SourceView(DisplayRole, GitModel::ContentsRole, GitModel::FilePathRole); sourceView_->setStyleClass("source-view"); if (environment().javaScript()) { /* * We have JavaScript: We can use layout managers so everything will * always fit nicely in the window. */ WVBoxLayout *topLayout = new WVBoxLayout(); topLayout->addLayout(grid, 0); WHBoxLayout *gitLayout = new WHBoxLayout(); gitLayout->addWidget(gitView_, 0); gitLayout->addWidget(sourceView_, 1); topLayout->addLayout(gitLayout, 1); root()->setLayout(topLayout); root()->setStyleClass("maindiv"); } else { /* * No JavaScript: let's make the best of the situation using regular * CSS-based layout */ root()->setStyleClass("maindiv"); WContainerWidget *top = new WContainerWidget(); top->setLayout(grid); root()->addWidget(top); root()->addWidget(gitView_); gitView_->setFloatSide(Left); gitView_->setMargin(6); root()->addWidget(sourceView_); sourceView_->setMargin(6); } }
void GitViewApplication::loadGitModel | ( | ) | [inline, private] |
Change repository and/or revision.
Definition at line 128 of file GitView.C.
{ sourceView_->setIndex(WModelIndex()); repositoryError_->setText(""); revisionError_->setText(""); try { gitModel_->setRepositoryPath(repositoryEdit_->text().toUTF8()); try { gitModel_->loadRevision(revisionEdit_->text().toUTF8()); } catch (const Git::Exception& e) { revisionError_->setText(e.what()); } } catch (const Git::Exception& e) { repositoryError_->setText(e.what()); } }
void GitViewApplication::showFile | ( | ) | [inline, private] |
Displayed the currently selected file.
Definition at line 146 of file GitView.C.
{ if (gitView_->selectedIndexes().empty()) return; WModelIndex selected = *gitView_->selectedIndexes().begin(); sourceView_->setIndex(selected); }
GitModel* GitViewApplication::gitModel_ [private] |
WTreeView* GitViewApplication::gitView_ [private] |
WLineEdit* GitViewApplication::repositoryEdit_ [private] |
WText* GitViewApplication::repositoryError_ [private] |
WLineEdit * GitViewApplication::revisionEdit_ [private] |
WText * GitViewApplication::revisionError_ [private] |
SourceView* GitViewApplication::sourceView_ [private] |