comparison mainwindow.cpp @ 175:6def8bf3be44

* Start implementing Settings dialog; add Test function to run on startup to make sure hg works
author Chris Cannam
date Thu, 16 Dec 2010 17:32:25 +0000
parents 4dc802a4d5ae
children bb89bcd8986b
comparison
equal deleted inserted replaced
174:4dc802a4d5ae 175:6def8bf3be44
37 #include "colourset.h" 37 #include "colourset.h"
38 #include "debug.h" 38 #include "debug.h"
39 #include "logparser.h" 39 #include "logparser.h"
40 #include "confirmcommentdialog.h" 40 #include "confirmcommentdialog.h"
41 #include "incomingdialog.h" 41 #include "incomingdialog.h"
42 #include "settingsdialog.h"
42 43
43 44
44 MainWindow::MainWindow(QString myDirPath) : 45 MainWindow::MainWindow(QString myDirPath) :
45 m_myDirPath(myDirPath) 46 m_myDirPath(myDirPath)
46 { 47 {
97 98
98 if (workFolderPath == "") { 99 if (workFolderPath == "") {
99 open(); 100 open();
100 } 101 }
101 102
102 hgQueryPaths(); 103 hgTest();
103 } 104 }
104 105
105 106
106 void MainWindow::closeEvent(QCloseEvent *) 107 void MainWindow::closeEvent(QCloseEvent *)
107 { 108 {
157 { 158 {
158 clearState(); 159 clearState();
159 hgQueryPaths(); 160 hgQueryPaths();
160 } 161 }
161 162
163 void MainWindow::hgTest()
164 {
165 QStringList params;
166 params << "--version";
167 runner->requestAction(HgAction(ACT_TEST_HG, m_myDirPath, params));
168 }
169
162 void MainWindow::hgStat() 170 void MainWindow::hgStat()
163 { 171 {
164 QStringList params; 172 QStringList params;
165 params << "stat" << "-ardum"; 173 params << "stat" << "-ardum";
166 174
393 } 401 }
394 402
395 void MainWindow::findDiffBinaryName() 403 void MainWindow::findDiffBinaryName()
396 { 404 {
397 QSettings settings; 405 QSettings settings;
406 settings.beginGroup("Locations");
398 QString diff = settings.value("extdiffbinary", "").toString(); 407 QString diff = settings.value("extdiffbinary", "").toString();
399 if (diff == "") { 408 if (diff == "") {
400 QStringList bases; 409 QStringList bases;
401 bases << "opendiff" << "kompare" << "kdiff3" << "meld"; 410 bases << "opendiff" << "kompare" << "kdiff3" << "meld";
402 bool found = false; 411 bool found = false;
417 } 426 }
418 427
419 void MainWindow::findMergeBinaryName() 428 void MainWindow::findMergeBinaryName()
420 { 429 {
421 QSettings settings; 430 QSettings settings;
431 settings.beginGroup("Locations");
422 QString merge = settings.value("mergebinary", "").toString(); 432 QString merge = settings.value("mergebinary", "").toString();
423 if (merge == "") { 433 if (merge == "") {
424 QStringList bases; 434 QStringList bases;
425 bases << "fmdiff3" << "meld" << "diffuse" << "kdiff3"; 435 bases << "fmdiff3" << "meld" << "diffuse" << "kdiff3";
426 bool found = false; 436 bool found = false;
1082 return true; 1092 return true;
1083 } 1093 }
1084 1094
1085 void MainWindow::settings() 1095 void MainWindow::settings()
1086 { 1096 {
1087 /*!!!
1088 SettingsDialog *settingsDlg = new SettingsDialog(this); 1097 SettingsDialog *settingsDlg = new SettingsDialog(this);
1089 settingsDlg->setModal(true);
1090 settingsDlg->exec(); 1098 settingsDlg->exec();
1091 hgTabs -> clearLists();
1092 enableDisableActions();
1093 hgStat();
1094 */
1095 } 1099 }
1096 1100
1097 #define STDOUT_NEEDS_BIG_WINDOW 512 1101 #define STDOUT_NEEDS_BIG_WINDOW 512
1098 #define SMALL_WND_W 500 1102 #define SMALL_WND_W 500
1099 #define SMALL_WND_H 300 1103 #define SMALL_WND_H 300
1176 hgStat(); 1180 hgStat();
1177 } 1181 }
1178 1182
1179 QString MainWindow::format3(QString head, QString intro, QString code) 1183 QString MainWindow::format3(QString head, QString intro, QString code)
1180 { 1184 {
1181 code = xmlEncode(code).replace("\n", "<br>").replace(" ", "&nbsp;"); 1185 code = xmlEncode(code).replace("\n", "<br>").replace("-", "&#8209;").replace(" ", "&nbsp;");
1182 if (intro == "") { 1186 if (intro == "") {
1183 return QString("<qt><h3>%1</h3><p><code>%2</code></p>") 1187 return QString("<qt><h3>%1</h3><p><code>%2</code></p>")
1184 .arg(head).arg(code); 1188 .arg(head).arg(code);
1185 } else if (code == "") { 1189 } else if (code == "") {
1186 return QString("<qt><h3>%1</h3><p>%2</p>") 1190 return QString("<qt><h3>%1</h3><p>%2</p>")
1289 // Some commands we just have to ignore bad return values from: 1293 // Some commands we just have to ignore bad return values from:
1290 1294
1291 switch(action.action) { 1295 switch(action.action) {
1292 case ACT_NONE: 1296 case ACT_NONE:
1293 // uh huh 1297 // uh huh
1298 return;
1299 case ACT_TEST_HG:
1300 QMessageBox::warning
1301 (this, tr("Failed to run Mercurial"),
1302 format3(tr("Failed to run Mercurial"),
1303 tr("The Mercurial program either could not be found or failed to run.<br>This may indicate a problem with the Mercurial installation, or with the EasyHg interaction extension.<br><br>The test command said:"),
1304 output));
1305 settings();
1294 return; 1306 return;
1295 case ACT_INCOMING: 1307 case ACT_INCOMING:
1296 // returns non-zero code if the check was successful but there 1308 // returns non-zero code if the check was successful but there
1297 // are no changes pending 1309 // are no changes pending
1298 if (output.trimmed() == "") showIncoming(""); 1310 if (output.trimmed() == "") showIncoming("");
1348 bool headsChanged = false; 1360 bool headsChanged = false;
1349 QStringList oldHeadIds; 1361 QStringList oldHeadIds;
1350 1362
1351 switch (action) { 1363 switch (action) {
1352 1364
1365 case ACT_TEST_HG:
1366 break;
1367
1353 case ACT_QUERY_PATHS: 1368 case ACT_QUERY_PATHS:
1354 { 1369 {
1355 DEBUG << "stdout is " << output << endl; 1370 DEBUG << "stdout is " << output << endl;
1356 LogParser lp(output, "="); 1371 LogParser lp(output, "=");
1357 LogList ll = lp.parse(); 1372 LogList ll = lp.parse();
1531 // of whichever sequence is in use. 1546 // of whichever sequence is in use.
1532 1547
1533 bool noMore = false; 1548 bool noMore = false;
1534 1549
1535 switch (action) { 1550 switch (action) {
1551
1552 case ACT_TEST_HG:
1553 hgQueryPaths();
1554 break;
1536 1555
1537 case ACT_QUERY_PATHS: 1556 case ACT_QUERY_PATHS:
1538 hgQueryBranch(); 1557 hgQueryBranch();
1539 break; 1558 break;
1540 1559