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; |