Mercurial > hg > easyhg
comparison mainwindow.cpp @ 239:661f5808aa0a
* Overhaul settings-defaults mechanism, and add Restore Defaults button to settings dialog
author | Chris Cannam |
---|---|
date | Mon, 10 Jan 2011 15:18:21 +0000 |
parents | e2f2c6e3c01b |
children | 4e98950f72e8 |
comparison
equal
deleted
inserted
replaced
238:e2f2c6e3c01b | 239:661f5808aa0a |
---|---|
111 | 111 |
112 if (firstStart) { | 112 if (firstStart) { |
113 startupDialog(); | 113 startupDialog(); |
114 } | 114 } |
115 | 115 |
116 (void)findDiffBinaryName(); | 116 SettingsDialog::findDefaultLocations(m_myDirPath); |
117 (void)findMergeBinaryName(); | |
118 (void)findEditorBinaryName(); | |
119 | 117 |
120 ColourSet *cs = ColourSet::instance(); | 118 ColourSet *cs = ColourSet::instance(); |
121 cs->clearDefaultNames(); | 119 cs->clearDefaultNames(); |
122 cs->addDefaultName(""); | 120 cs->addDefaultName(""); |
123 cs->addDefaultName("default"); | 121 cs->addDefaultName("default"); |
495 hgIgnorePath = workFolderPath; | 493 hgIgnorePath = workFolderPath; |
496 hgIgnorePath += "/.hgignore"; | 494 hgIgnorePath += "/.hgignore"; |
497 | 495 |
498 params << hgIgnorePath; | 496 params << hgIgnorePath; |
499 | 497 |
500 QString editor = findEditorBinaryName(); | 498 QString editor = getEditorBinaryName(); |
501 | 499 |
502 if (editor == "") { | 500 if (editor == "") { |
503 DEBUG << "Failed to find a text editor" << endl; | 501 DEBUG << "Failed to find a text editor" << endl; |
504 //!!! visible error! | 502 //!!! visible error! |
505 return; | 503 return; |
509 action.executable = editor; | 507 action.executable = editor; |
510 | 508 |
511 runner->requestAction(action); | 509 runner->requestAction(action); |
512 } | 510 } |
513 | 511 |
514 QString MainWindow::findDiffBinaryName() | 512 QString MainWindow::getDiffBinaryName() |
515 { | 513 { |
516 QSettings settings; | 514 QSettings settings; |
517 settings.beginGroup("Locations"); | 515 settings.beginGroup("Locations"); |
518 QString diff = settings.value("extdiffbinary", "").toString(); | 516 return settings.value("extdiffbinary", "").toString(); |
519 if (diff == "") { | 517 } |
520 QStringList bases; | 518 |
521 #ifdef Q_OS_MAC | 519 QString MainWindow::getMergeBinaryName() |
522 bases << "easyhg-extdiff-osx.sh"; | |
523 #endif | |
524 bases << "kompare" << "kdiff3" << "meld"; | |
525 bool found = false; | |
526 foreach (QString base, bases) { | |
527 diff = findInPath(base, m_myDirPath, true); | |
528 if (diff != "") { | |
529 found = true; | |
530 break; | |
531 } | |
532 } | |
533 if (found) { | |
534 settings.setValue("extdiffbinary", diff); | |
535 } else { | |
536 diff = ""; | |
537 } | |
538 } | |
539 return diff; | |
540 } | |
541 | |
542 QString MainWindow::findMergeBinaryName() | |
543 { | 520 { |
544 QSettings settings; | 521 QSettings settings; |
545 settings.beginGroup("Locations"); | 522 settings.beginGroup("Locations"); |
546 if (settings.contains("mergebinary")) { | 523 return settings.value("mergebinary", "").toString(); |
547 // use it even if empty: user may have specified no external tool | 524 } |
548 QVariant v = settings.value("mergebinary"); | 525 |
549 DEBUG << "v = " << v << endl; | 526 QString MainWindow::getEditorBinaryName() |
550 return v.toString(); | |
551 } | |
552 QString merge; | |
553 QStringList bases; | |
554 #ifdef Q_OS_MAC | |
555 bases << "easyhg-merge-osx.sh"; | |
556 #endif | |
557 // I think this is too dangerous, given command line ordering | |
558 // differences and suchlike. Need to make sure the hg | |
559 // installation is configured OK instead | |
560 // bases << "meld" << "diffuse" << "kdiff3"; | |
561 bool found = false; | |
562 foreach (QString base, bases) { | |
563 merge = findInPath(base, m_myDirPath, true); | |
564 if (merge != "") { | |
565 found = true; | |
566 break; | |
567 } | |
568 } | |
569 if (found) { | |
570 settings.setValue("mergebinary", merge); | |
571 } else { | |
572 merge = ""; | |
573 } | |
574 return merge; | |
575 } | |
576 | |
577 QString MainWindow::findEditorBinaryName() | |
578 { | 527 { |
579 QSettings settings; | 528 QSettings settings; |
580 settings.beginGroup("Locations"); | 529 settings.beginGroup("Locations"); |
581 QString editor = settings.value("editorbinary", "").toString(); | 530 return settings.value("editorbinary", "").toString(); |
582 if (editor == "") { | |
583 QStringList bases; | |
584 bases | |
585 #if defined Q_OS_WIN32 | |
586 << "wordpad.exe" | |
587 << "C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe" | |
588 << "notepad.exe" | |
589 #elif defined Q_OS_MAC | |
590 << "/Applications/TextEdit.app/Contents/MacOS/TextEdit" | |
591 #else | |
592 << "gedit" << "kate" | |
593 #endif | |
594 ; | |
595 bool found = false; | |
596 foreach (QString base, bases) { | |
597 editor = findInPath(base, m_myDirPath, true); | |
598 if (editor != "") { | |
599 found = true; | |
600 break; | |
601 } | |
602 } | |
603 if (found) { | |
604 settings.setValue("editorbinary", editor); | |
605 } else { | |
606 editor = ""; | |
607 } | |
608 } | |
609 return editor; | |
610 } | 531 } |
611 | 532 |
612 void MainWindow::hgShowSummary() | 533 void MainWindow::hgShowSummary() |
613 { | 534 { |
614 QStringList params; | 535 QStringList params; |
618 runner->requestAction(HgAction(ACT_DIFF_SUMMARY, workFolderPath, params)); | 539 runner->requestAction(HgAction(ACT_DIFF_SUMMARY, workFolderPath, params)); |
619 } | 540 } |
620 | 541 |
621 void MainWindow::hgFolderDiff() | 542 void MainWindow::hgFolderDiff() |
622 { | 543 { |
623 QString diff = findDiffBinaryName(); | 544 QString diff = getDiffBinaryName(); |
624 if (diff == "") return; | 545 if (diff == "") return; |
625 | 546 |
626 QStringList params; | 547 QStringList params; |
627 | 548 |
628 // Diff parent against working folder (folder diff) | 549 // Diff parent against working folder (folder diff) |
636 } | 557 } |
637 | 558 |
638 | 559 |
639 void MainWindow::hgDiffToCurrent(QString id) | 560 void MainWindow::hgDiffToCurrent(QString id) |
640 { | 561 { |
641 QString diff = findDiffBinaryName(); | 562 QString diff = getDiffBinaryName(); |
642 if (diff == "") return; | 563 if (diff == "") return; |
643 | 564 |
644 QStringList params; | 565 QStringList params; |
645 | 566 |
646 // Diff given revision against working folder | 567 // Diff given revision against working folder |
653 } | 574 } |
654 | 575 |
655 | 576 |
656 void MainWindow::hgDiffToParent(QString child, QString parent) | 577 void MainWindow::hgDiffToParent(QString child, QString parent) |
657 { | 578 { |
658 QString diff = findDiffBinaryName(); | 579 QString diff = getDiffBinaryName(); |
659 if (diff == "") return; | 580 if (diff == "") return; |
660 | 581 |
661 QStringList params; | 582 QStringList params; |
662 | 583 |
663 // Diff given revision against working folder | 584 // Diff given revision against working folder |
784 { | 705 { |
785 QStringList params; | 706 QStringList params; |
786 | 707 |
787 params << "resolve"; | 708 params << "resolve"; |
788 | 709 |
789 QString merge = findMergeBinaryName(); | 710 QString merge = getMergeBinaryName(); |
790 if (merge != "") { | 711 if (merge != "") { |
791 params << "--tool" << merge; | 712 params << "--tool" << merge; |
792 } | 713 } |
793 | 714 |
794 QStringList files = hgTabs->getSelectedUnresolvedFiles(); | 715 QStringList files = hgTabs->getSelectedUnresolvedFiles(); |
817 | 738 |
818 QStringList params; | 739 QStringList params; |
819 | 740 |
820 params << "merge"; | 741 params << "merge"; |
821 | 742 |
822 QString merge = findMergeBinaryName(); | 743 QString merge = getMergeBinaryName(); |
823 if (merge != "") { | 744 if (merge != "") { |
824 params << "--tool" << merge; | 745 params << "--tool" << merge; |
825 } | 746 } |
826 | 747 |
827 if (currentParents.size() == 1) { | 748 if (currentParents.size() == 1) { |
839 QStringList params; | 760 QStringList params; |
840 | 761 |
841 params << "merge"; | 762 params << "merge"; |
842 params << "--rev" << Changeset::hashOf(id); | 763 params << "--rev" << Changeset::hashOf(id); |
843 | 764 |
844 QString merge = findMergeBinaryName(); | 765 QString merge = getMergeBinaryName(); |
845 if (merge != "") { | 766 if (merge != "") { |
846 params << "--tool" << merge; | 767 params << "--tool" << merge; |
847 } | 768 } |
848 | 769 |
849 if (currentParents.size() == 1) { | 770 if (currentParents.size() == 1) { |