Reintroduced the status character, since it is necessary for the automatic sorting
Streamlined the settings storage We now support an implicit fossil executable living in QCoreApplication::applicationDirPath() or in the system path, unless the user has provided an override FossilOrigin-Name: 97aefbc7825732e8fc2e711187c32c49e1149c11
This commit is contained in:
parent
d939003b9f
commit
379d9707cb
@ -353,7 +353,7 @@ void MainWindow::scanWorkspace()
|
||||
}
|
||||
}
|
||||
|
||||
QStandardItem *status = new QStandardItem(QIcon(icon), "");
|
||||
QStandardItem *status = new QStandardItem(QIcon(icon), tag);
|
||||
status->setToolTip(tooltip);
|
||||
itemModel.setItem(i, COLUMN_STATUS, status);
|
||||
|
||||
@ -468,19 +468,21 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
|
||||
|
||||
QString wkdir = getCurrentWorkspace();
|
||||
|
||||
QString fossil = getFossilPath();
|
||||
|
||||
if(detached)
|
||||
{
|
||||
return QProcess::startDetached(settings.fossilPath, args, wkdir);
|
||||
return QProcess::startDetached(fossil, args, wkdir);
|
||||
}
|
||||
|
||||
QProcess process(this);
|
||||
process.setProcessChannelMode(QProcess::MergedChannels);
|
||||
process.setWorkingDirectory(wkdir);
|
||||
|
||||
process.start(settings.fossilPath, args);
|
||||
process.start(fossil, args);
|
||||
if(!process.waitForStarted())
|
||||
{
|
||||
log("Could not start fossil executable '"+settings.fossilPath + "''\n");
|
||||
log("Could not start fossil executable '" + fossil + "''\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -610,35 +612,46 @@ void MainWindow::addWorkspace(const QString &dir)
|
||||
|
||||
workspaceHistory.append(new_workspace);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
QString MainWindow::getFossilPath()
|
||||
{
|
||||
// Use the user-specified fossil if available
|
||||
if(!settings.fossilPath.isEmpty())
|
||||
return settings.fossilPath;
|
||||
|
||||
// Use our fossil if available
|
||||
QString fuel_fossil = QCoreApplication::applicationDirPath() + QDir::separator() + "fossil";
|
||||
|
||||
if(QFile::exists(fuel_fossil))
|
||||
return fuel_fossil;
|
||||
|
||||
// Otherwise assume there is a "fossil" executable in the path
|
||||
return "fossil";
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::loadSettings()
|
||||
{
|
||||
// Linux: ~/.config/organizationName/applicationName.conf
|
||||
// Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel
|
||||
QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
|
||||
if(qsettings.contains("FossilPath"))
|
||||
settings.fossilPath = qsettings.value("FossilPath").toString();
|
||||
else
|
||||
settings.fossilPath = "fossil";
|
||||
|
||||
int num_wks = 0;
|
||||
|
||||
if(qsettings.contains("NumWorkspaces"))
|
||||
num_wks = qsettings.value("NumWorkspaces").toInt();
|
||||
|
||||
int num_wks = qsettings.beginReadArray("Workspaces");
|
||||
for(int i=0; i<num_wks; ++i)
|
||||
{
|
||||
QString key = "Workspace_" + QString::number(i);
|
||||
QString wk = qsettings.value(key).toString();
|
||||
qsettings.setArrayIndex(i);
|
||||
QString wk = qsettings.value("Path").toString();
|
||||
if(!wk.isEmpty())
|
||||
addWorkspace(wk);
|
||||
|
||||
if(qsettings.contains("Active") && qsettings.value("Active").toBool())
|
||||
currentWorkspace = wk;
|
||||
}
|
||||
qsettings.endArray();
|
||||
|
||||
int curr_wkspace = -1;
|
||||
if(qsettings.contains("LastWorkspace"))
|
||||
curr_wkspace = qsettings.value("LastWorkspace").toInt();
|
||||
|
||||
if(curr_wkspace!=-1 && curr_wkspace< workspaceHistory.size())
|
||||
currentWorkspace = workspaceHistory[curr_wkspace];
|
||||
|
||||
if(qsettings.contains("WindowX") && qsettings.contains("WindowY"))
|
||||
{
|
||||
@ -661,18 +674,20 @@ void MainWindow::loadSettings()
|
||||
void MainWindow::saveSettings()
|
||||
{
|
||||
QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
qsettings.setValue("FossilPath", settings.fossilPath);
|
||||
qsettings.setValue("NumWorkspaces", workspaceHistory.size());
|
||||
|
||||
// If we have a customize fossil path, save it
|
||||
if(!settings.fossilPath.isEmpty())
|
||||
qsettings.setValue("FossilPath", settings.fossilPath);
|
||||
|
||||
qsettings.beginWriteArray("Workspaces", workspaceHistory.size());
|
||||
for(int i=0; i<workspaceHistory.size(); ++i)
|
||||
{
|
||||
QString key = "Workspace_" + QString::number(i);
|
||||
qsettings.setValue(key, workspaceHistory[i]);
|
||||
qsettings.setArrayIndex(i);
|
||||
qsettings.setValue("Path", workspaceHistory[i]);
|
||||
if(currentWorkspace == workspaceHistory[i])
|
||||
qsettings.setValue("Active", true);
|
||||
}
|
||||
|
||||
int curr_wkspace = workspaceHistory.indexOf(currentWorkspace);
|
||||
if(curr_wkspace>-1)
|
||||
qsettings.setValue("LastWorkspace", curr_wkspace);
|
||||
qsettings.endArray();
|
||||
|
||||
qsettings.setValue("WindowX", x());
|
||||
qsettings.setValue("WindowY", y());
|
||||
@ -742,11 +757,12 @@ bool MainWindow::startUI()
|
||||
fossilUI.setWorkingDirectory(getCurrentWorkspace());
|
||||
|
||||
log("> fossil ui\n");
|
||||
QString fossil = getFossilPath();
|
||||
|
||||
fossilUI.start(settings.fossilPath, QStringList() << "ui");
|
||||
fossilUI.start(fossil, QStringList() << "ui");
|
||||
if(!fossilUI.waitForStarted())
|
||||
{
|
||||
log(settings.fossilPath + tr(" does not exist") +"\n");
|
||||
log(fossil+ tr(" does not exist") +"\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1102,3 +1118,4 @@ void MainWindow::on_actionSettings_triggered()
|
||||
{
|
||||
SettingsDialog::run(this, settings);
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,7 @@ private:
|
||||
void addWorkspace(const QString &dir);
|
||||
void rebuildRecent();
|
||||
bool openWorkspace(const QString &dir);
|
||||
QString getFossilPath();
|
||||
|
||||
enum RepoStatus
|
||||
{
|
||||
@ -154,22 +155,19 @@ private slots:
|
||||
void on_actionUndo_triggered();
|
||||
void on_actionAbout_triggered();
|
||||
void on_actionUpdate_triggered();
|
||||
|
||||
void on_actionSettings_triggered();
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
MAX_RECENT=5
|
||||
};
|
||||
|
||||
|
||||
Ui::MainWindow *ui;
|
||||
QStandardItemModel itemModel;
|
||||
QProcess fossilUI;
|
||||
class QAction *recentWorkspaceActs[MAX_RECENT];
|
||||
class QLabel *statusLabel;
|
||||
bool fossilAbort;
|
||||
bool fossilAbort; // FIXME: No GUI for it yet
|
||||
|
||||
Settings settings;
|
||||
QString projectName;
|
||||
|
2
main.cpp
2
main.cpp
@ -7,7 +7,7 @@ int main(int argc, char *argv[])
|
||||
a.setApplicationName("Fuel");
|
||||
a.setApplicationVersion("0.9.0");
|
||||
a.setOrganizationDomain("karanik.com");
|
||||
a.setOrganizationName("karanik");
|
||||
a.setOrganizationName("Karanik");
|
||||
MainWindow w;
|
||||
w.show();
|
||||
|
||||
|
16
manifest
16
manifest
@ -1,13 +1,13 @@
|
||||
C Improved\ssupport\sfor\sfossil\sinteractive\squestions
|
||||
D 2011-08-07T03:14:37.316
|
||||
C Reintroduced\sthe\sstatus\scharacter,\ssince\sit\sis\snecessary\sfor\sthe\sautomatic\ssorting\nStreamlined\sthe\ssettings\sstorage\nWe\snow\ssupport\san\simplicit\sfossil\sexecutable\sliving\sin\sQCoreApplication::applicationDirPath()\sor\sin\sthe\ssystem\spath,\sunless\sthe\suser\shas\sprovided\san\soverride
|
||||
D 2011-08-07T04:56:05.986
|
||||
F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e
|
||||
F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a
|
||||
F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154
|
||||
F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
|
||||
F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
|
||||
F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
|
||||
F MainWindow.cpp 18c298a5cc9a8d27f59d377c4d363c7a9b7e1085
|
||||
F MainWindow.h 81a5061a551c9969a7acfcc49c84adc076e5eaf6
|
||||
F MainWindow.cpp 809b27413caa8192b135f6addf40fc2119d8f3b3
|
||||
F MainWindow.h 67778cc3e6e5a933d4b198e2a8284523f591ff44
|
||||
F MainWindow.ui 9f901c1f06b24df3cbd36d5349ffe0d82896c05b
|
||||
F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e
|
||||
F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802
|
||||
@ -171,9 +171,9 @@ F icons/Zoom\sOut-01.png 8eda092100d9e00c9097f43a80d1e26695947448
|
||||
F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6
|
||||
F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
|
||||
F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
|
||||
F main.cpp aed85ed9766ddb8685e300e8ca4a0dc193ae2586
|
||||
F main.cpp c27bddc9ee5efdee649c6bf96696197874560e22
|
||||
F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
|
||||
P 6a6a654b0db2537fc73774e7dc37d25cb2ae63d7
|
||||
R 40a5f682e0b0200d3bd354258d471c18
|
||||
P 2c36e183b8e8816ada688991ea6da7ad64caf2a8
|
||||
R 3b0c20ab4fb5da73c9585141277a12f4
|
||||
U kostas
|
||||
Z 68777a7f034546864430c866d1616086
|
||||
Z 306fe72a4f590e48c01e123486041f37
|
||||
|
@ -1 +1 @@
|
||||
2c36e183b8e8816ada688991ea6da7ad64caf2a8
|
||||
97aefbc7825732e8fc2e711187c32c49e1149c11
|
Loading…
x
Reference in New Issue
Block a user