X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiBranches.cpp;h=c79a42def221ba4cc45b4d27325ff88ee1b8dad6;hb=59e0cb8f85f0d2f985b31532dd3308315659c662;hp=806f344f138867c19645fc95264c5f16791adc8a;hpb=341ac91738eb25be97f6ccd1c53eb9c276e9d17e;p=lyx.git diff --git a/src/frontends/qt4/GuiBranches.cpp b/src/frontends/qt4/GuiBranches.cpp index 806f344f13..c79a42def2 100644 --- a/src/frontends/qt4/GuiBranches.cpp +++ b/src/frontends/qt4/GuiBranches.cpp @@ -20,9 +20,12 @@ #include "ui_BranchesUnknownUi.h" +#include "frontends/alert.h" + #include "Buffer.h" #include "BufferParams.h" +#include "support/gettext.h" #include "support/lstrings.h" #include @@ -46,7 +49,10 @@ GuiBranches::GuiBranches(QWidget * parent) branchesTW->headerItem()->setText(0, qt_("Branch")); branchesTW->headerItem()->setText(1, qt_("Activated")); branchesTW->headerItem()->setText(2, qt_("Color")); + branchesTW->headerItem()->setText(3, qt_("Filename Suffix")); branchesTW->setSortingEnabled(true); + branchesTW->resizeColumnToContents(1); + branchesTW->resizeColumnToContents(2); undef_ = new BranchesUnknownDialog(this); undef_bc_.setPolicy(ButtonPolicy::OkCancelPolicy); @@ -64,6 +70,8 @@ GuiBranches::GuiBranches(QWidget * parent) undef_, SLOT(accept())); connect(undef_->cancelPB, SIGNAL(clicked()), undef_, SLOT(reject())); + + newBranchLE->setValidator(new NoNewLineValidator(newBranchLE)); } void GuiBranches::update(BufferParams const & params) @@ -98,6 +106,7 @@ void GuiBranches::updateView() coloritem.fill(itemcolor); newItem->setIcon(2, QIcon(coloritem)); } + newItem->setText(3, it->hasFileNameSuffix() ? qt_("Yes") : qt_("No")); // restore selected branch if (bname == sel_branch) { branchesTW->setCurrentItem(newItem); @@ -105,6 +114,13 @@ void GuiBranches::updateView() } } unknownPB->setEnabled(!unknown_branches_.isEmpty()); + bool const have_sel = + !branchesTW->selectedItems().isEmpty(); + removePB->setEnabled(have_sel); + renamePB->setEnabled(have_sel); + colorPB->setEnabled(have_sel); + activatePB->setEnabled(have_sel); + suffixPB->setEnabled(have_sel); // emit signal changed(); } @@ -141,18 +157,75 @@ void GuiBranches::on_removePB_pressed() } +void GuiBranches::on_renamePB_pressed() +{ + QTreeWidgetItem * selItem = branchesTW->currentItem(); + QString sel_branch; + if (selItem != 0) + sel_branch = selItem->text(0); + if (!sel_branch.isEmpty()) { + docstring newname; + docstring const oldname = qstring_to_ucs4(sel_branch); + bool success = false; + if (Alert::askForText(newname, _("Enter new branch name"), oldname)) { + if (newname.empty() || oldname == newname) + return; + if (branchlist_.find(newname)) { + docstring text = support::bformat( + _("A branch with the name \"%1$s\" already exists.\n" + "Do you want to merge branch \"%2$s\" with that one?"), + newname, oldname); + if (frontend::Alert::prompt(_("Branch already exists"), + text, 0, 1, _("&Merge"), _("&Cancel")) == 0) + success = branchlist_.rename(oldname, newname, true); + } else + success = branchlist_.rename(oldname, newname); + newBranchLE->clear(); + updateView(); + + if (!success) + Alert::error(_("Renaming failed"), + _("The branch could not be renamed.")); + else + // emit signal + renameBranches(oldname, newname); + } + } +} + + void GuiBranches::on_activatePB_pressed() { toggleBranch(branchesTW->currentItem()); } +void GuiBranches::on_suffixPB_pressed() +{ + toggleSuffix(branchesTW->currentItem()); +} + + void GuiBranches::on_branchesTW_itemDoubleClicked(QTreeWidgetItem * item, int col) { if (col < 2) toggleBranch(item); - else + else if (col == 2) toggleColor(item); + else if (col == 3) + toggleSuffix(item); +} + + +void GuiBranches::on_branchesTW_itemSelectionChanged() +{ + bool const have_sel = + !branchesTW->selectedItems().isEmpty(); + removePB->setEnabled(have_sel); + renamePB->setEnabled(have_sel); + colorPB->setEnabled(have_sel); + activatePB->setEnabled(have_sel); + suffixPB->setEnabled(have_sel); } @@ -165,9 +238,8 @@ void GuiBranches::toggleBranch(QTreeWidgetItem * item) if (sel_branch.isEmpty()) return; - bool const selected = (item->text(1) == qt_("Yes")); Branch * branch = branchlist_.find(qstring_to_ucs4(sel_branch)); - if (branch && branch->setSelected(!selected)) { + if (branch && branch->setSelected(!branch->isSelected())) { newBranchLE->clear(); updateView(); } @@ -206,6 +278,24 @@ void GuiBranches::toggleColor(QTreeWidgetItem * item) } +void GuiBranches::toggleSuffix(QTreeWidgetItem * item) +{ + if (item == 0) + return; + + QString sel_branch = item->text(0); + if (sel_branch.isEmpty()) + return; + + Branch * branch = branchlist_.find(qstring_to_ucs4(sel_branch)); + if (branch) { + branch->setFileNameSuffix(!branch->hasFileNameSuffix()); + newBranchLE->clear(); + updateView(); + } +} + + void GuiBranches::on_unknownPB_pressed() { undef_->branchesLW->clear();