Mercurial > hg > easyhg
comparison mainwindow.cpp @ 326:6e1fdda1dff2 filelist_right_button_menu
Implement right-button menu functions for file lists; convert the toolbar-button functions (apart from Add and Remove) to modal only on working copy state rather than selection state
| author | Chris Cannam |
|---|---|
| date | Fri, 11 Mar 2011 15:33:16 +0000 |
| parents | 124a3ea9fafb |
| children | f166f70c64f9 |
comparison
equal
deleted
inserted
replaced
| 325:5fa5c908ca00 | 326:6e1fdda1dff2 |
|---|---|
| 368 | 368 |
| 369 m_runner->requestAction(HgAction(ACT_ANNOTATE, m_workFolderPath, params)); | 369 m_runner->requestAction(HgAction(ACT_ANNOTATE, m_workFolderPath, params)); |
| 370 } | 370 } |
| 371 } | 371 } |
| 372 | 372 |
| 373 void MainWindow::hgAnnotateFiles(QStringList files) | |
| 374 { | |
| 375 QStringList params; | |
| 376 | |
| 377 if (!files.isEmpty()) { | |
| 378 params << "annotate" << "--" << files; | |
| 379 m_runner->requestAction(HgAction(ACT_ANNOTATE, m_workFolderPath, params)); | |
| 380 } | |
| 381 } | |
| 382 | |
| 373 void MainWindow::hgResolveList() | 383 void MainWindow::hgResolveList() |
| 374 { | 384 { |
| 375 QStringList params; | 385 QStringList params; |
| 376 | 386 |
| 377 params << "resolve" << "--list"; | 387 params << "resolve" << "--list"; |
| 378 m_runner->requestAction(HgAction(ACT_RESOLVE_LIST, m_workFolderPath, params)); | 388 m_runner->requestAction(HgAction(ACT_RESOLVE_LIST, m_workFolderPath, params)); |
| 379 } | 389 } |
| 380 | 390 |
| 381 void MainWindow::hgAdd() | 391 void MainWindow::hgAdd() |
| 382 { | 392 { |
| 383 QStringList params; | |
| 384 | |
| 385 // hgExplorer permitted adding "all" files -- I'm not sure | 393 // hgExplorer permitted adding "all" files -- I'm not sure |
| 386 // that one is a good idea, let's require the user to select | 394 // that one is a good idea, let's require the user to select |
| 387 | 395 |
| 388 QStringList files = m_hgTabs->getSelectedAddableFiles(); | 396 hgAddFiles(m_hgTabs->getSelectedAddableFiles()); |
| 397 } | |
| 398 | |
| 399 void MainWindow::hgAddFiles(QStringList files) | |
| 400 { | |
| 401 QStringList params; | |
| 389 | 402 |
| 390 if (!files.empty()) { | 403 if (!files.empty()) { |
| 391 params << "add" << "--" << files; | 404 params << "add" << "--" << files; |
| 392 m_runner->requestAction(HgAction(ACT_ADD, m_workFolderPath, params)); | 405 m_runner->requestAction(HgAction(ACT_ADD, m_workFolderPath, params)); |
| 393 } | 406 } |
| 394 } | 407 } |
| 395 | 408 |
| 396 | |
| 397 void MainWindow::hgRemove() | 409 void MainWindow::hgRemove() |
| 398 { | 410 { |
| 399 QStringList params; | 411 hgRemoveFiles(m_hgTabs->getSelectedRemovableFiles()); |
| 400 | 412 } |
| 401 QStringList files = m_hgTabs->getSelectedRemovableFiles(); | 413 |
| 414 void MainWindow::hgRemoveFiles(QStringList files) | |
| 415 { | |
| 416 QStringList params; | |
| 402 | 417 |
| 403 if (!files.empty()) { | 418 if (!files.empty()) { |
| 404 params << "remove" << "--after" << "--force" << "--" << files; | 419 params << "remove" << "--after" << "--force" << "--" << files; |
| 405 m_runner->requestAction(HgAction(ACT_REMOVE, m_workFolderPath, params)); | 420 m_runner->requestAction(HgAction(ACT_REMOVE, m_workFolderPath, params)); |
| 406 } | 421 } |
| 407 } | 422 } |
| 408 | 423 |
| 409 void MainWindow::hgCommit() | 424 void MainWindow::hgCommit() |
| 410 { | 425 { |
| 426 hgCommitFiles(QStringList()); | |
| 427 } | |
| 428 | |
| 429 void MainWindow::hgCommitFiles(QStringList files) | |
| 430 { | |
| 411 QStringList params; | 431 QStringList params; |
| 412 QString comment; | 432 QString comment; |
| 413 | 433 |
| 414 if (m_justMerged) { | 434 if (m_justMerged) { |
| 415 comment = m_mergeCommitComment; | 435 comment = m_mergeCommitComment; |
| 416 } | 436 } |
| 417 | 437 |
| 418 QStringList files = m_hgTabs->getSelectedCommittableFiles(); | |
| 419 QStringList allFiles = m_hgTabs->getAllCommittableFiles(); | 438 QStringList allFiles = m_hgTabs->getAllCommittableFiles(); |
| 420 QStringList reportFiles = files; | 439 QStringList reportFiles = files; |
| 421 if (reportFiles.empty()) { | 440 if (reportFiles.empty()) { |
| 422 reportFiles = allFiles; | 441 reportFiles = allFiles; |
| 423 } | 442 } |
| 496 m_runner->requestAction(HgAction(ACT_NEW_BRANCH, m_workFolderPath, params)); | 515 m_runner->requestAction(HgAction(ACT_NEW_BRANCH, m_workFolderPath, params)); |
| 497 } | 516 } |
| 498 } | 517 } |
| 499 } | 518 } |
| 500 | 519 |
| 501 | |
| 502 void MainWindow::hgNoBranch() | 520 void MainWindow::hgNoBranch() |
| 503 { | 521 { |
| 504 if (m_currentParents.empty()) return; | 522 if (m_currentParents.empty()) return; |
| 505 | 523 |
| 506 QString parentBranch = m_currentParents[0]->branch(); | 524 QString parentBranch = m_currentParents[0]->branch(); |
| 508 | 526 |
| 509 QStringList params; | 527 QStringList params; |
| 510 params << "branch" << parentBranch; | 528 params << "branch" << parentBranch; |
| 511 m_runner->requestAction(HgAction(ACT_NEW_BRANCH, m_workFolderPath, params)); | 529 m_runner->requestAction(HgAction(ACT_NEW_BRANCH, m_workFolderPath, params)); |
| 512 } | 530 } |
| 513 | |
| 514 | 531 |
| 515 void MainWindow::hgTag(QString id) | 532 void MainWindow::hgTag(QString id) |
| 516 { | 533 { |
| 517 QStringList params; | 534 QStringList params; |
| 518 QString tag; | 535 QString tag; |
| 530 | 547 |
| 531 m_runner->requestAction(HgAction(ACT_TAG, m_workFolderPath, params)); | 548 m_runner->requestAction(HgAction(ACT_TAG, m_workFolderPath, params)); |
| 532 } | 549 } |
| 533 } | 550 } |
| 534 } | 551 } |
| 535 | |
| 536 | 552 |
| 537 void MainWindow::hgIgnore() | 553 void MainWindow::hgIgnore() |
| 538 { | 554 { |
| 539 QString hgIgnorePath; | 555 QString hgIgnorePath; |
| 540 QStringList params; | 556 QStringList params; |
| 566 action.executable = editor; | 582 action.executable = editor; |
| 567 | 583 |
| 568 m_runner->requestAction(action); | 584 m_runner->requestAction(action); |
| 569 } | 585 } |
| 570 | 586 |
| 587 void MainWindow::hgIgnoreFiles(QStringList files) | |
| 588 { | |
| 589 //!!! not implemented yet | |
| 590 DEBUG << "MainWindow::hgIgnoreFiles: Not implemented" << endl; | |
| 591 } | |
| 592 | |
| 593 void MainWindow::hgUnIgnoreFiles(QStringList files) | |
| 594 { | |
| 595 //!!! not implemented yet | |
| 596 DEBUG << "MainWindow::hgUnIgnoreFiles: Not implemented" << endl; | |
| 597 } | |
| 598 | |
| 571 QString MainWindow::getDiffBinaryName() | 599 QString MainWindow::getDiffBinaryName() |
| 572 { | 600 { |
| 573 QSettings settings; | 601 QSettings settings; |
| 574 settings.beginGroup("Locations"); | 602 settings.beginGroup("Locations"); |
| 575 return settings.value("extdiffbinary", "").toString(); | 603 return settings.value("extdiffbinary", "").toString(); |
| 598 m_runner->requestAction(HgAction(ACT_UNCOMMITTED_SUMMARY, m_workFolderPath, params)); | 626 m_runner->requestAction(HgAction(ACT_UNCOMMITTED_SUMMARY, m_workFolderPath, params)); |
| 599 } | 627 } |
| 600 | 628 |
| 601 void MainWindow::hgFolderDiff() | 629 void MainWindow::hgFolderDiff() |
| 602 { | 630 { |
| 631 hgDiffFiles(QStringList()); | |
| 632 } | |
| 633 | |
| 634 void MainWindow::hgDiffFiles(QStringList files) | |
| 635 { | |
| 603 QString diff = getDiffBinaryName(); | 636 QString diff = getDiffBinaryName(); |
| 604 if (diff == "") return; | 637 if (diff == "") return; |
| 605 | 638 |
| 606 QStringList params; | 639 QStringList params; |
| 607 | 640 |
| 608 // Diff parent against working folder (folder diff) | 641 // Diff parent against working folder (folder diff) |
| 609 | 642 |
| 610 params << "--config" << "extensions.extdiff=" << "extdiff"; | 643 params << "--config" << "extensions.extdiff=" << "extdiff"; |
| 611 params << "--program" << diff; | 644 params << "--program" << diff; |
| 612 | 645 |
| 613 params << m_hgTabs->getSelectedCommittableFiles(); // may be none: whole dir | 646 params << files; // may be none: whole dir |
| 614 | 647 |
| 615 m_runner->requestAction(HgAction(ACT_FOLDERDIFF, m_workFolderPath, params)); | 648 m_runner->requestAction(HgAction(ACT_FOLDERDIFF, m_workFolderPath, params)); |
| 616 } | 649 } |
| 617 | |
| 618 | 650 |
| 619 void MainWindow::hgDiffToCurrent(QString id) | 651 void MainWindow::hgDiffToCurrent(QString id) |
| 620 { | 652 { |
| 621 QString diff = getDiffBinaryName(); | 653 QString diff = getDiffBinaryName(); |
| 622 if (diff == "") return; | 654 if (diff == "") return; |
| 629 params << "--program" << diff; | 661 params << "--program" << diff; |
| 630 params << "--rev" << Changeset::hashOf(id); | 662 params << "--rev" << Changeset::hashOf(id); |
| 631 | 663 |
| 632 m_runner->requestAction(HgAction(ACT_FOLDERDIFF, m_workFolderPath, params)); | 664 m_runner->requestAction(HgAction(ACT_FOLDERDIFF, m_workFolderPath, params)); |
| 633 } | 665 } |
| 634 | |
| 635 | 666 |
| 636 void MainWindow::hgDiffToParent(QString child, QString parent) | 667 void MainWindow::hgDiffToParent(QString child, QString parent) |
| 637 { | 668 { |
| 638 QString diff = getDiffBinaryName(); | 669 QString diff = getDiffBinaryName(); |
| 639 if (diff == "") return; | 670 if (diff == "") return; |
| 647 params << "--rev" << Changeset::hashOf(parent) | 678 params << "--rev" << Changeset::hashOf(parent) |
| 648 << "--rev" << Changeset::hashOf(child); | 679 << "--rev" << Changeset::hashOf(child); |
| 649 | 680 |
| 650 m_runner->requestAction(HgAction(ACT_CHGSETDIFF, m_workFolderPath, params)); | 681 m_runner->requestAction(HgAction(ACT_CHGSETDIFF, m_workFolderPath, params)); |
| 651 } | 682 } |
| 652 | 683 |
| 653 | 684 |
| 654 void MainWindow::hgShowSummaryFor(Changeset *cs) | 685 void MainWindow::hgShowSummaryFor(Changeset *cs) |
| 655 { | 686 { |
| 656 QStringList params; | 687 QStringList params; |
| 657 | 688 |
| 685 } | 716 } |
| 686 | 717 |
| 687 | 718 |
| 688 void MainWindow::hgRevert() | 719 void MainWindow::hgRevert() |
| 689 { | 720 { |
| 721 hgRevertFiles(QStringList()); | |
| 722 } | |
| 723 | |
| 724 void MainWindow::hgRevertFiles(QStringList files) | |
| 725 { | |
| 690 QStringList params; | 726 QStringList params; |
| 691 QString comment; | 727 QString comment; |
| 692 bool all = false; | 728 bool all = false; |
| 693 | 729 |
| 694 QStringList files = m_hgTabs->getSelectedRevertableFiles(); | |
| 695 QStringList allFiles = m_hgTabs->getAllRevertableFiles(); | 730 QStringList allFiles = m_hgTabs->getAllRevertableFiles(); |
| 696 if (files.empty() || files == allFiles) { | 731 if (files.empty() || files == allFiles) { |
| 697 files = allFiles; | 732 files = allFiles; |
| 698 all = true; | 733 all = true; |
| 699 } | 734 } |
| 756 m_runner->requestAction(HgAction(ACT_REVERT, m_workFolderPath, params)); | 791 m_runner->requestAction(HgAction(ACT_REVERT, m_workFolderPath, params)); |
| 757 } | 792 } |
| 758 } | 793 } |
| 759 | 794 |
| 760 | 795 |
| 761 void MainWindow::hgMarkResolved(QStringList files) | 796 void MainWindow::hgMarkFilesResolved(QStringList files) |
| 762 { | 797 { |
| 763 QStringList params; | 798 QStringList params; |
| 764 | 799 |
| 765 params << "resolve" << "--mark"; | 800 params << "resolve" << "--mark"; |
| 766 | 801 |
| 772 | 807 |
| 773 m_runner->requestAction(HgAction(ACT_RESOLVE_MARK, m_workFolderPath, params)); | 808 m_runner->requestAction(HgAction(ACT_RESOLVE_MARK, m_workFolderPath, params)); |
| 774 } | 809 } |
| 775 | 810 |
| 776 | 811 |
| 777 void MainWindow::hgRetryMerge() | 812 void MainWindow::hgRedoMerge() |
| 813 { | |
| 814 hgRedoFileMerges(QStringList()); | |
| 815 } | |
| 816 | |
| 817 | |
| 818 void MainWindow::hgRedoFileMerges(QStringList files) | |
| 778 { | 819 { |
| 779 QStringList params; | 820 QStringList params; |
| 780 | 821 |
| 781 params << "resolve"; | 822 params << "resolve"; |
| 782 | 823 |
| 783 QString merge = getMergeBinaryName(); | 824 QString merge = getMergeBinaryName(); |
| 784 if (merge != "") { | 825 if (merge != "") { |
| 785 params << "--tool" << merge; | 826 params << "--tool" << merge; |
| 786 } | 827 } |
| 787 | 828 |
| 788 QStringList files = m_hgTabs->getSelectedUnresolvedFiles(); | |
| 789 if (files.empty()) { | 829 if (files.empty()) { |
| 790 params << "--all"; | 830 params << "--all"; |
| 791 } else { | 831 } else { |
| 792 params << "--" << files; | 832 params << "--" << files; |
| 793 } | 833 } |
| 798 | 838 |
| 799 m_runner->requestAction(HgAction(ACT_RETRY_MERGE, m_workFolderPath, params)); | 839 m_runner->requestAction(HgAction(ACT_RETRY_MERGE, m_workFolderPath, params)); |
| 800 | 840 |
| 801 m_mergeCommitComment = tr("Merge"); | 841 m_mergeCommitComment = tr("Merge"); |
| 802 } | 842 } |
| 803 | 843 |
| 804 | 844 |
| 805 void MainWindow::hgMerge() | 845 void MainWindow::hgMerge() |
| 806 { | 846 { |
| 807 if (m_hgTabs->canResolve()) { | 847 if (m_hgTabs->canResolve()) { |
| 808 hgRetryMerge(); | 848 hgRedoMerge(); |
| 809 return; | 849 return; |
| 810 } | 850 } |
| 811 | 851 |
| 812 QStringList params; | 852 QStringList params; |
| 813 | 853 |
| 1968 m_justMerged = false; | 2008 m_justMerged = false; |
| 1969 m_shouldHgStat = true; | 2009 m_shouldHgStat = true; |
| 1970 break; | 2010 break; |
| 1971 | 2011 |
| 1972 case ACT_REVERT: | 2012 case ACT_REVERT: |
| 1973 hgMarkResolved(m_lastRevertedFiles); | 2013 hgMarkFilesResolved(m_lastRevertedFiles); |
| 1974 m_justMerged = false; | 2014 m_justMerged = false; |
| 1975 break; | 2015 break; |
| 1976 | 2016 |
| 1977 case ACT_REMOVE: | 2017 case ACT_REMOVE: |
| 1978 case ACT_ADD: | 2018 case ACT_ADD: |
| 2217 connect(m_hgTabs, SIGNAL(newBranch(QString)), | 2257 connect(m_hgTabs, SIGNAL(newBranch(QString)), |
| 2218 this, SLOT(hgNewBranch())); | 2258 this, SLOT(hgNewBranch())); |
| 2219 | 2259 |
| 2220 connect(m_hgTabs, SIGNAL(tag(QString)), | 2260 connect(m_hgTabs, SIGNAL(tag(QString)), |
| 2221 this, SLOT(hgTag(QString))); | 2261 this, SLOT(hgTag(QString))); |
| 2262 | |
| 2263 connect(m_hgTabs, SIGNAL(annotateFiles(QStringList)), | |
| 2264 this, SLOT(hgAnnotateFiles(QStringList))); | |
| 2265 | |
| 2266 connect(m_hgTabs, SIGNAL(diffFiles(QStringList)), | |
| 2267 this, SLOT(hgDiffFiles(QStringList))); | |
| 2268 | |
| 2269 connect(m_hgTabs, SIGNAL(commitFiles(QStringList)), | |
| 2270 this, SLOT(hgCommitFiles(QStringList))); | |
| 2271 | |
| 2272 connect(m_hgTabs, SIGNAL(revertFiles(QStringList)), | |
| 2273 this, SLOT(hgRevertFiles(QStringList))); | |
| 2274 | |
| 2275 connect(m_hgTabs, SIGNAL(addFiles(QStringList)), | |
| 2276 this, SLOT(hgAddFiles(QStringList))); | |
| 2277 | |
| 2278 connect(m_hgTabs, SIGNAL(removeFiles(QStringList)), | |
| 2279 this, SLOT(hgRemoveFiles(QStringList))); | |
| 2280 | |
| 2281 connect(m_hgTabs, SIGNAL(redoFileMerges(QStringList)), | |
| 2282 this, SLOT(hgRedoFileMerges(QStringList))); | |
| 2283 | |
| 2284 connect(m_hgTabs, SIGNAL(markFilesResolved(QStringList)), | |
| 2285 this, SLOT(hgMarkFilesResolved(QStringList))); | |
| 2286 | |
| 2287 connect(m_hgTabs, SIGNAL(ignoreFiles(QStringList)), | |
| 2288 this, SLOT(hgIgnoreFiles(QStringList))); | |
| 2289 | |
| 2290 connect(m_hgTabs, SIGNAL(unIgnoreFiles(QStringList)), | |
| 2291 this, SLOT(hgUnIgnoreFiles(QStringList))); | |
| 2222 } | 2292 } |
| 2223 | 2293 |
| 2224 void MainWindow::enableDisableActions() | 2294 void MainWindow::enableDisableActions() |
| 2225 { | 2295 { |
| 2226 DEBUG << "MainWindow::enableDisableActions" << endl; | 2296 DEBUG << "MainWindow::enableDisableActions" << endl; |
