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;