Initial support for localization
FossilOrigin-Name: 8d881de4e52069221dd6ae38a436449fbccdac25
This commit is contained in:
parent
152041ff05
commit
d40b70d737
4
fuel.pro
4
fuel.pro
@ -64,3 +64,7 @@ FORMS += ui/MainWindow.ui \
|
||||
RESOURCES += \
|
||||
rsrc/resources.qrc
|
||||
|
||||
unix {
|
||||
system(intl/convert.sh)
|
||||
}
|
||||
|
||||
|
17
intl/convert.sh
Executable file
17
intl/convert.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
PRJDIR=$SCRIPTDIR/..
|
||||
INTLDIR=$SCRIPTDIR
|
||||
|
||||
echo "Converting localizations"
|
||||
|
||||
rm -rf $PRJDIR/rsrc/intl
|
||||
mkdir $PRJDIR/rsrc/intl
|
||||
|
||||
for i in $INTLDIR/*.po
|
||||
do
|
||||
TARGET=`basename $i .po`.qm
|
||||
echo "$TARGET"
|
||||
lconvert $i -o $PRJDIR/rsrc/intl/$TARGET
|
||||
done
|
||||
|
27
manifest
27
manifest
@ -1,11 +1,12 @@
|
||||
C Added\sbuild\sinstructions\sfor\swindows
|
||||
D 2012-05-17T14:41:29.847
|
||||
C Initial\ssupport\sfor\slocalization
|
||||
D 2012-09-23T10:20:57.755
|
||||
F dist/arch/PKGBUILD dd21073c035af4e6a4ecb3842c1fd7ae45c5e93d
|
||||
F dist/win/fuel.iss ef3558dbba409eb194938b930377fc9ee27d319e
|
||||
F doc/Building.txt 7c0f1060d4a08ed330058d4a3a68905c05228381
|
||||
F doc/Changes.txt e21c9355aaeb7643c8d6784effd2f9ebadf3a8e0
|
||||
F doc/License.txt 4cc77b90af91e615a64ae04893fdffa7939db84c
|
||||
F fuel.pro 2f1650c8b3e4b09eeb5b6283655d2142fe67cb00
|
||||
F fuel.pro f9053752c0ea40a7f9c90ac738a6c1689b92dfe5
|
||||
F intl/convert.sh 6dfabd9c78df20b2c5c767b301cc4cd8813f442d x
|
||||
F rsrc/fuel.desktop 43145556bc61f5a91b497c38a16aec44af271d29
|
||||
F rsrc/fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79
|
||||
F rsrc/icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8
|
||||
@ -174,20 +175,20 @@ F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2
|
||||
F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df
|
||||
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
||||
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
||||
F src/MainWindow.cpp 4041709d8fa2d9485fd64b8838ddfed5eccb277d
|
||||
F src/MainWindow.h f97ef3776d10211f42651cd2b7c7291d90bac3c1
|
||||
F src/SettingsDialog.cpp 296c77c5704bd8cb77a00d561db072aaaf60c1d6
|
||||
F src/SettingsDialog.h 9592ec491cd44a5bff70ea42853d7e1f053f4040
|
||||
F src/MainWindow.cpp 026cb929ead96dd5885be7ff14190c7ff8d033d5
|
||||
F src/MainWindow.h 7839457d09848b40beb03e36ddc4f755d8631881
|
||||
F src/SettingsDialog.cpp 824ab2445df35aec131e0c1d891c96f660c1bb28
|
||||
F src/SettingsDialog.h 09d3f375b2fab59248fae9bd12419f2985720d28
|
||||
F src/Utils.cpp caca5268e3194abe77211040bf9511a82909d2e6
|
||||
F src/Utils.h 5af911147390879176e587fc60fb662490bb9e97
|
||||
F src/main.cpp f2913af0af1a5fcbebe93fb53b8a9cf6e7bbf65a
|
||||
F src/main.cpp fcd78f44b893fb9c93bbb71a2e861bd36af95f88
|
||||
F tools/pack.sh d7f38a498c4e9327fecd6a6e5ac27be270d43008 x
|
||||
F ui/CloneDialog.ui 0fc820804df91f16506ee466a44519fdd44e468f
|
||||
F ui/CommitDialog.ui 813d7cba316e226de1a22b7e480bb969fbe9b0c4
|
||||
F ui/FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
|
||||
F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f
|
||||
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
|
||||
F ui/MainWindow.ui 6ad583b6d864ccbeac8e3fd1d05cd964bc17c5f9
|
||||
F ui/SettingsDialog.ui cd6faff19c1a6c2640193eb5a258f0daa926a2cf
|
||||
P 623d92282857d1eef5ba9314b02ee9482ad7e7ea
|
||||
R 994818d5dcdeeac6bdf896aa00d04986
|
||||
P 1760813f6ce3ed23ab45bee2fbde8cbf487d2481
|
||||
R 12e9a8ebc31d18b45a1d208db05caf62
|
||||
U kostas
|
||||
Z fa78223180c8f2827d94a33c07e67bbb
|
||||
Z 63bee23b106d51238aa4d200b0a7da88
|
||||
|
@ -1 +1 @@
|
||||
1760813f6ce3ed23ab45bee2fbde8cbf487d2481
|
||||
8d881de4e52069221dd6ae38a436449fbccdac25
|
@ -106,9 +106,10 @@ private:
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
MainWindow::MainWindow(QWidget *parent, QString *workspacePath, bool portableMode) :
|
||||
MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspacePath) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
ui(new Ui::MainWindow),
|
||||
settings(_settings)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
@ -197,17 +198,6 @@ MainWindow::MainWindow(QWidget *parent, QString *workspacePath, bool portableMod
|
||||
|
||||
viewMode = VIEWMODE_TREE;
|
||||
|
||||
// Go into portable mode when explicitly requested or if a config file exists next to the executable
|
||||
QString ini_path = QDir::toNativeSeparators(QCoreApplication::applicationDirPath() + QDir::separator() + QCoreApplication::applicationName() + ".ini");
|
||||
if(portableMode || QFile::exists(ini_path))
|
||||
qsettings = new QSettings(ini_path, QSettings::IniFormat);
|
||||
else
|
||||
{
|
||||
// Linux: ~/.config/organizationName/applicationName.conf
|
||||
// Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel
|
||||
qsettings = new QSettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
}
|
||||
|
||||
loadSettings();
|
||||
|
||||
// Apply any explicit workspace path if available
|
||||
@ -228,7 +218,6 @@ MainWindow::~MainWindow()
|
||||
{
|
||||
stopUI();
|
||||
saveSettings();
|
||||
delete qsettings;
|
||||
|
||||
// Dispose RepoFiles
|
||||
for(filemap_t::iterator it = workspaceFiles.begin(); it!=workspaceFiles.end(); ++it)
|
||||
@ -257,7 +246,7 @@ void MainWindow::setCurrentWorkspace(const QString &workspace)
|
||||
addWorkspace(new_workspace);
|
||||
|
||||
if(!QDir::setCurrent(new_workspace))
|
||||
QMessageBox::critical(this, tr("Error"), tr("Could not change current diectory to ")+new_workspace, QMessageBox::Ok );
|
||||
QMessageBox::critical(this, tr("Error"), tr("Could not change current diectory to '%0'").arg(new_workspace), QMessageBox::Ok );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -508,7 +497,7 @@ void MainWindow::rebuildRecent()
|
||||
|
||||
for(int i = 0; i < enabled_acts; ++i)
|
||||
{
|
||||
QString text = tr("&%1 %2").arg(i + 1).arg(QDir::toNativeSeparators(workspaceHistory[i]));
|
||||
QString text = QString("&%1 %2").arg(i + 1).arg(QDir::toNativeSeparators(workspaceHistory[i]));
|
||||
|
||||
recentWorkspaceActs[i]->setText(text);
|
||||
recentWorkspaceActs[i]->setData(workspaceHistory[i]);
|
||||
@ -602,7 +591,7 @@ bool MainWindow::refresh()
|
||||
}
|
||||
else if(st==REPO_OLD_SCHEMA)
|
||||
{
|
||||
setStatus(tr("Old fossil schema detected. Consider running rebuild."));
|
||||
setStatus(tr("Old fossil schema detected. Consider running 'fossil rebuild'"));
|
||||
enableActions(false);
|
||||
repoFileModel.removeRows(0, repoFileModel.rowCount());
|
||||
repoDirModel.clear();
|
||||
@ -1104,7 +1093,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
|
||||
process.start(fossil, args);
|
||||
if(!process.waitForStarted())
|
||||
{
|
||||
log(tr("Could not start fossil executable '") + fossil + "''\n");
|
||||
log(tr("Could not start Fossil executable '%s'\n").arg(fossil));
|
||||
return false;
|
||||
}
|
||||
const QChar EOL_MARK('\n');
|
||||
@ -1295,20 +1284,20 @@ QString MainWindow::getFossilPath()
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::loadSettings()
|
||||
{
|
||||
if(qsettings->contains(FUEL_SETTING_FOSSIL_PATH))
|
||||
settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = qsettings->value(FUEL_SETTING_FOSSIL_PATH);
|
||||
if(settings.store->contains(FUEL_SETTING_FOSSIL_PATH))
|
||||
settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = settings.store->value(FUEL_SETTING_FOSSIL_PATH);
|
||||
|
||||
if(qsettings->contains(FUEL_SETTING_COMMIT_MSG))
|
||||
settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value = qsettings->value(FUEL_SETTING_COMMIT_MSG);
|
||||
if(settings.store->contains(FUEL_SETTING_COMMIT_MSG))
|
||||
settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value = settings.store->value(FUEL_SETTING_COMMIT_MSG);
|
||||
|
||||
if(qsettings->contains(FUEL_SETTING_FILE_DBLCLICK))
|
||||
settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = qsettings->value(FUEL_SETTING_FILE_DBLCLICK);
|
||||
if(settings.store->contains(FUEL_SETTING_FILE_DBLCLICK))
|
||||
settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = settings.store->value(FUEL_SETTING_FILE_DBLCLICK);
|
||||
|
||||
int num_wks = qsettings->beginReadArray("Workspaces");
|
||||
int num_wks = settings.store->beginReadArray("Workspaces");
|
||||
for(int i=0; i<num_wks; ++i)
|
||||
{
|
||||
qsettings->setArrayIndex(i);
|
||||
QString wk = qsettings->value("Path").toString();
|
||||
settings.store->setArrayIndex(i);
|
||||
QString wk = settings.store->value("Path").toString();
|
||||
|
||||
// Skip invalid workspaces
|
||||
if(wk.isEmpty() || !QDir(wk).exists())
|
||||
@ -1316,46 +1305,47 @@ void MainWindow::loadSettings()
|
||||
|
||||
addWorkspace(wk);
|
||||
|
||||
if(qsettings->contains("Active") && qsettings->value("Active").toBool())
|
||||
if(settings.store->contains("Active") && settings.store->value("Active").toBool())
|
||||
setCurrentWorkspace(wk);
|
||||
}
|
||||
qsettings->endArray();
|
||||
settings.store->endArray();
|
||||
|
||||
|
||||
if(qsettings->contains("WindowX") && qsettings->contains("WindowY"))
|
||||
if(settings.store->contains("WindowX") && settings.store->contains("WindowY"))
|
||||
{
|
||||
QPoint _pos;
|
||||
_pos.setX(qsettings->value("WindowX").toInt());
|
||||
_pos.setY(qsettings->value("WindowY").toInt());
|
||||
_pos.setX(settings.store->value("WindowX").toInt());
|
||||
_pos.setY(settings.store->value("WindowY").toInt());
|
||||
move(_pos);
|
||||
}
|
||||
|
||||
if(qsettings->contains("WindowWidth") && qsettings->contains("WindowHeight"))
|
||||
if(settings.store->contains("WindowWidth") && settings.store->contains("WindowHeight"))
|
||||
{
|
||||
QSize _size;
|
||||
_size.setWidth(qsettings->value("WindowWidth").toInt());
|
||||
_size.setHeight(qsettings->value("WindowHeight").toInt());
|
||||
_size.setWidth(settings.store->value("WindowWidth").toInt());
|
||||
_size.setHeight(settings.store->value("WindowHeight").toInt());
|
||||
resize(_size);
|
||||
}
|
||||
|
||||
if(qsettings->contains("ViewUnknown"))
|
||||
ui->actionViewUnknown->setChecked(qsettings->value("ViewUnknown").toBool());
|
||||
if(qsettings->contains("ViewModified"))
|
||||
ui->actionViewModified->setChecked(qsettings->value("ViewModified").toBool());
|
||||
if(qsettings->contains("ViewUnchanged"))
|
||||
ui->actionViewUnchanged->setChecked(qsettings->value("ViewUnchanged").toBool());
|
||||
if(qsettings->contains("ViewIgnored"))
|
||||
ui->actionViewIgnored->setChecked(qsettings->value("ViewIgnored").toBool());
|
||||
if(qsettings->contains("ViewAsList"))
|
||||
if(settings.store->contains("ViewUnknown"))
|
||||
ui->actionViewUnknown->setChecked(settings.store->value("ViewUnknown").toBool());
|
||||
if(settings.store->contains("ViewModified"))
|
||||
ui->actionViewModified->setChecked(settings.store->value("ViewModified").toBool());
|
||||
if(settings.store->contains("ViewUnchanged"))
|
||||
ui->actionViewUnchanged->setChecked(settings.store->value("ViewUnchanged").toBool());
|
||||
if(settings.store->contains("ViewIgnored"))
|
||||
ui->actionViewIgnored->setChecked(settings.store->value("ViewIgnored").toBool());
|
||||
if(settings.store->contains("ViewAsList"))
|
||||
{
|
||||
ui->actionViewAsList->setChecked(qsettings->value("ViewAsList").toBool());
|
||||
viewMode = qsettings->value("ViewAsList").toBool()? VIEWMODE_LIST : VIEWMODE_TREE;
|
||||
ui->actionViewAsList->setChecked(settings.store->value("ViewAsList").toBool());
|
||||
viewMode = settings.store->value("ViewAsList").toBool()? VIEWMODE_LIST : VIEWMODE_TREE;
|
||||
}
|
||||
ui->treeView->setVisible(viewMode == VIEWMODE_TREE);
|
||||
|
||||
if(qsettings->contains("ViewStash"))
|
||||
ui->actionViewStash->setChecked(qsettings->value("ViewStash").toBool());
|
||||
if(settings.store->contains("ViewStash"))
|
||||
ui->actionViewStash->setChecked(settings.store->value("ViewStash").toBool());
|
||||
ui->tableViewStash->setVisible(ui->actionViewStash->isChecked());
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -1363,32 +1353,32 @@ void MainWindow::saveSettings()
|
||||
{
|
||||
// If we have a customize fossil path, save it
|
||||
QString fossil_path = settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString();
|
||||
qsettings->setValue(FUEL_SETTING_FOSSIL_PATH, fossil_path);
|
||||
qsettings->setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
|
||||
qsettings->setValue(FUEL_SETTING_FILE_DBLCLICK, settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value);
|
||||
settings.store->setValue(FUEL_SETTING_FOSSIL_PATH, fossil_path);
|
||||
settings.store->setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
|
||||
settings.store->setValue(FUEL_SETTING_FILE_DBLCLICK, settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value);
|
||||
|
||||
qsettings->beginWriteArray("Workspaces", workspaceHistory.size());
|
||||
settings.store->beginWriteArray("Workspaces", workspaceHistory.size());
|
||||
for(int i=0; i<workspaceHistory.size(); ++i)
|
||||
{
|
||||
qsettings->setArrayIndex(i);
|
||||
qsettings->setValue("Path", workspaceHistory[i]);
|
||||
settings.store->setArrayIndex(i);
|
||||
settings.store->setValue("Path", workspaceHistory[i]);
|
||||
if(getCurrentWorkspace() == workspaceHistory[i])
|
||||
qsettings->setValue("Active", true);
|
||||
settings.store->setValue("Active", true);
|
||||
else
|
||||
qsettings->remove("Active");
|
||||
settings.store->remove("Active");
|
||||
}
|
||||
qsettings->endArray();
|
||||
settings.store->endArray();
|
||||
|
||||
qsettings->setValue("WindowX", x());
|
||||
qsettings->setValue("WindowY", y());
|
||||
qsettings->setValue("WindowWidth", width());
|
||||
qsettings->setValue("WindowHeight", height());
|
||||
qsettings->setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
|
||||
qsettings->setValue("ViewModified", ui->actionViewModified->isChecked());
|
||||
qsettings->setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
|
||||
qsettings->setValue("ViewIgnored", ui->actionViewIgnored->isChecked());
|
||||
qsettings->setValue("ViewAsList", ui->actionViewAsList->isChecked());
|
||||
qsettings->setValue("ViewStash", ui->actionViewStash->isChecked());
|
||||
settings.store->setValue("WindowX", x());
|
||||
settings.store->setValue("WindowY", y());
|
||||
settings.store->setValue("WindowWidth", width());
|
||||
settings.store->setValue("WindowHeight", height());
|
||||
settings.store->setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
|
||||
settings.store->setValue("ViewModified", ui->actionViewModified->isChecked());
|
||||
settings.store->setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
|
||||
settings.store->setValue("ViewIgnored", ui->actionViewIgnored->isChecked());
|
||||
settings.store->setValue("ViewAsList", ui->actionViewAsList->isChecked());
|
||||
settings.store->setValue("ViewStash", ui->actionViewStash->isChecked());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -1570,13 +1560,13 @@ bool MainWindow::startUI()
|
||||
fossilUI.setWorkingDirectory(getCurrentWorkspace());
|
||||
|
||||
log("<b>> fossil ui</b><br>", true);
|
||||
log(tr("Starting Fossil UI. Please wait.\n"));
|
||||
log(tr("Starting Fossil browser UI. Please wait.\n"));
|
||||
QString fossil = getFossilPath();
|
||||
|
||||
fossilUI.start(fossil, QStringList() << "ui");
|
||||
if(!fossilUI.waitForStarted() || fossilUI.state()!=QProcess::Running)
|
||||
{
|
||||
log(tr("%0 does not exist\n").arg(fossil));
|
||||
log(tr("Could not start Fossil executable '%s'\n").arg(fossil));
|
||||
ui->actionFossilUI->setChecked(false);
|
||||
return false;
|
||||
}
|
||||
@ -1885,7 +1875,7 @@ void MainWindow::on_actionRename_triggered()
|
||||
|
||||
if(fi_after.exists())
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error"), tr("File %0 already exists.\nRename aborted.").arg(new_name), QMessageBox::Ok );
|
||||
QMessageBox::critical(this, tr("Error"), tr("File '%0' already exists.\nRename aborted.").arg(new_name), QMessageBox::Ok );
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1951,7 +1941,7 @@ void MainWindow::on_actionAbout_triggered()
|
||||
{
|
||||
int off = res[0].indexOf("version ");
|
||||
if(off!=-1)
|
||||
fossil_ver = tr("Fossil version ")+res[0].mid(off) + "\n\n";
|
||||
fossil_ver = tr("Fossil version %0").arg(res[0].mid(off)) + "\n\n";
|
||||
}
|
||||
|
||||
QMessageBox::about(this, tr("About Fuel..."),
|
||||
@ -2269,10 +2259,10 @@ void MainWindow::on_actionRenameFolder_triggered()
|
||||
QDir wkdir(getCurrentWorkspace());
|
||||
Q_ASSERT(wkdir.exists());
|
||||
|
||||
log(tr("Creating folder '")+target_path+"'\n");
|
||||
log(tr("Creating folder '%0'\n").arg(target_path));
|
||||
if(!wkdir.mkpath(new_paths[i] + PATH_SEP + "."))
|
||||
{
|
||||
QMessageBox::critical(this, tr("Error"), tr("Cannot make target folder '")+target_path+"'\n");
|
||||
QMessageBox::critical(this, tr("Error"), tr("Cannot make target folder '%0'\n").arg(target_path));
|
||||
goto _exit;
|
||||
}
|
||||
}
|
||||
@ -2289,7 +2279,7 @@ void MainWindow::on_actionRenameFolder_triggered()
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
log(tr("Copying file '")+r->getFilePath()+tr("' to '")+new_file_path+"'\n");
|
||||
log(tr("Copying file '%0' to '%1'\n").arg(r->getFilePath(), new_file_path));
|
||||
|
||||
if(!QFile::copy(r->getFilePath(), new_file_path))
|
||||
{
|
||||
@ -2303,7 +2293,7 @@ void MainWindow::on_actionRenameFolder_triggered()
|
||||
{
|
||||
RepoFile *r = files_to_move[i];
|
||||
|
||||
log(tr("Removing old file '")+r->getFilePath()+"'\n");
|
||||
log(tr("Removing old file '%0'\n").arg(r->getFilePath()));
|
||||
|
||||
if(!QFile::exists(r->getFilePath()))
|
||||
{
|
||||
|
@ -116,7 +116,7 @@ class MainWindow : public QMainWindow
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0, QString *workspacePath = 0, bool portableMode = false);
|
||||
explicit MainWindow(Settings &_settings, QWidget *parent = 0, QString *workspacePath = 0);
|
||||
~MainWindow();
|
||||
bool diffFile(QString repoFile);
|
||||
|
||||
@ -247,7 +247,7 @@ private:
|
||||
class QProgressBar *progressBar;
|
||||
bool fossilAbort; // FIXME: No GUI for it yet
|
||||
|
||||
Settings settings;
|
||||
Settings &settings;
|
||||
QString projectName;
|
||||
QString repositoryFile;
|
||||
QStringList workspaceHistory;
|
||||
@ -255,8 +255,6 @@ private:
|
||||
ViewMode viewMode;
|
||||
stringset_t selectedDirs; // The directory selected in the tree
|
||||
|
||||
class QSettings *qsettings;
|
||||
|
||||
// Repository State
|
||||
typedef QList<RepoFile*> filelist_t;
|
||||
typedef QMap<QString, RepoFile*> filemap_t;
|
||||
|
@ -3,6 +3,13 @@
|
||||
#include <QFileDialog>
|
||||
#include "Utils.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QCoreApplication>
|
||||
#include <QDir>
|
||||
#include <QTranslator>
|
||||
#include <QResource>
|
||||
|
||||
|
||||
QString SettingsDialog::SelectExe(QWidget *parent, const QString &description)
|
||||
{
|
||||
QString filter(tr("Applications"));
|
||||
@ -104,3 +111,48 @@ void SettingsDialog::on_btnClearMessageHistory_clicked()
|
||||
if(DialogQuery(this, tr("Clear Commit Message History"), tr("Are you sure want to clear the commit message history?"))==QMessageBox::Yes)
|
||||
settings->Mappings[FUEL_SETTING_COMMIT_MSG].Value = QStringList();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
Settings::Settings(bool portableMode) : store(0)
|
||||
{
|
||||
Mappings[FUEL_SETTING_FOSSIL_PATH] = Setting();
|
||||
Mappings[FUEL_SETTING_COMMIT_MSG] = Setting();
|
||||
Mappings[FUEL_SETTING_FILE_DBLCLICK] = Setting(0); // Maps to FileDblClickAction
|
||||
Mappings[FUEL_SETTING_GDIFF_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
|
||||
Mappings[FUEL_SETTING_GMERGE_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
|
||||
Mappings[FUEL_SETTING_IGNORE_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
|
||||
Mappings[FUEL_SETTING_CRNL_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
|
||||
Mappings[FUEL_SETTING_REMOTE_URL] = Setting("off", Setting::TYPE_FOSSIL_COMMAND);
|
||||
|
||||
|
||||
// Go into portable mode when explicitly requested or if a config file exists next to the executable
|
||||
QString ini_path = QDir::toNativeSeparators(QCoreApplication::applicationDirPath() + QDir::separator() + QCoreApplication::applicationName() + ".ini");
|
||||
if(portableMode || QFile::exists(ini_path))
|
||||
store = new QSettings(ini_path, QSettings::IniFormat);
|
||||
else
|
||||
{
|
||||
// Linux: ~/.config/organizationName/applicationName.conf
|
||||
// Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel
|
||||
store = new QSettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
}
|
||||
|
||||
ApplyEnvironment();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
Settings::~Settings()
|
||||
{
|
||||
delete store;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void Settings::ApplyEnvironment()
|
||||
{
|
||||
QString locale_name = QLocale::system().name();
|
||||
//locale_name = "el_GR";
|
||||
|
||||
QString locale_path = QString(":intl/intl/%0.qm").arg(locale_name);
|
||||
QResource res(locale_path);
|
||||
if(res.isValid() && translator.load(res.data(), res.size()))
|
||||
QCoreApplication::instance()->installTranslator(&translator);
|
||||
}
|
||||
|
@ -4,6 +4,8 @@
|
||||
#include <QDialog>
|
||||
#include <QMap>
|
||||
#include <QVariant>
|
||||
#include <QTranslator>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class SettingsDialog;
|
||||
@ -44,20 +46,15 @@ struct Settings
|
||||
SettingType Type;
|
||||
};
|
||||
|
||||
Settings(bool portableMode = false);
|
||||
~Settings();
|
||||
void ApplyEnvironment();
|
||||
|
||||
typedef QMap<QString, Setting> mappings_t;
|
||||
mappings_t Mappings;
|
||||
class QSettings *store;
|
||||
QTranslator translator;
|
||||
|
||||
Settings()
|
||||
{
|
||||
Mappings[FUEL_SETTING_FOSSIL_PATH] = Setting();
|
||||
Mappings[FUEL_SETTING_COMMIT_MSG] = Setting();
|
||||
Mappings[FUEL_SETTING_FILE_DBLCLICK] = Setting(0); // Maps to FileDblClickAction
|
||||
Mappings[FUEL_SETTING_GDIFF_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
|
||||
Mappings[FUEL_SETTING_GMERGE_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
|
||||
Mappings[FUEL_SETTING_IGNORE_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
|
||||
Mappings[FUEL_SETTING_CRNL_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
|
||||
Mappings[FUEL_SETTING_REMOTE_URL] = Setting("off", Setting::TYPE_FOSSIL_COMMAND);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
11
src/main.cpp
11
src/main.cpp
@ -1,4 +1,4 @@
|
||||
#include <QtGui/QApplication>
|
||||
#include <QApplication>
|
||||
#include "MainWindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@ -9,6 +9,7 @@ int main(int argc, char *argv[])
|
||||
app.setOrganizationDomain("fuel-scm.org");
|
||||
app.setOrganizationName("Fuel-SCM");
|
||||
|
||||
|
||||
#ifdef Q_WS_MACX
|
||||
// Native OSX applications don't use menu icons
|
||||
app.setAttribute(Qt::AA_DontShowIconsInMenus);
|
||||
@ -32,9 +33,11 @@ int main(int argc, char *argv[])
|
||||
workspace = arg;
|
||||
}
|
||||
|
||||
MainWindow mainwin(0,
|
||||
workspace.isEmpty() ? 0 : &workspace,
|
||||
portable);
|
||||
Settings settings(portable);
|
||||
|
||||
MainWindow mainwin(settings,
|
||||
0,
|
||||
workspace.isEmpty() ? 0 : &workspace);
|
||||
mainwin.show();
|
||||
return app.exec();
|
||||
}
|
||||
|
@ -64,7 +64,7 @@
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<property name="text">
|
||||
<string>CheckBox</string>
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -26,7 +26,7 @@
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
|
Loading…
x
Reference in New Issue
Block a user