Added setting to customize the double-click action in the file view
FossilOrigin-Name: b0fda22886a7415ddf5d70457f3f7c8fe7ecf636
This commit is contained in:
parent
2529f35520
commit
ff622939e9
188
CommitDialog.cpp
188
CommitDialog.cpp
@ -1,95 +1,95 @@
|
||||
#include "CommitDialog.h"
|
||||
#include <QPushButton>
|
||||
#include "ui_CommitDialog.h"
|
||||
#include "MainWindow.h" // Ugly. I know.
|
||||
|
||||
CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files) :
|
||||
QDialog(parent, Qt::Sheet),
|
||||
ui(new Ui::CommitDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->plainTextEdit->clear();
|
||||
ui->listView->setModel(&itemModel);
|
||||
|
||||
// Generate the history combo
|
||||
foreach(const QString msg, commitMsgHistory)
|
||||
{
|
||||
QString trimmed = msg.trimmed();
|
||||
if(trimmed.isEmpty())
|
||||
continue;
|
||||
|
||||
commitMessages.append(trimmed);
|
||||
QStringList lines = trimmed.split('\n');
|
||||
QString first_line;
|
||||
if(!lines.empty())
|
||||
first_line = lines[0] + "...";
|
||||
|
||||
ui->comboBox->addItem(first_line);
|
||||
}
|
||||
|
||||
// Populate file list
|
||||
for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it)
|
||||
{
|
||||
QStandardItem *si = new QStandardItem(*it);
|
||||
si->setCheckable(true);
|
||||
si->setCheckState(Qt::Checked);
|
||||
itemModel.appendRow(si);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
CommitDialog::~CommitDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files)
|
||||
{
|
||||
CommitDialog dlg(parent, commitMsgHistory, files);
|
||||
int res = dlg.exec();
|
||||
commitMsg = dlg.ui->plainTextEdit->toPlainText();
|
||||
|
||||
if(res!=QDialog::Accepted)
|
||||
return false;
|
||||
|
||||
files.clear();
|
||||
for(int i=0; i<dlg.itemModel.rowCount(); ++i)
|
||||
{
|
||||
QStandardItem *si = dlg.itemModel.item(i);
|
||||
if(si->checkState()!=Qt::Checked)
|
||||
continue;
|
||||
files.append(si->text());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_comboBox_activated(int index)
|
||||
{
|
||||
#include "CommitDialog.h"
|
||||
#include <QPushButton>
|
||||
#include "ui_CommitDialog.h"
|
||||
#include "MainWindow.h" // Ugly. I know.
|
||||
|
||||
CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files) :
|
||||
QDialog(parent, Qt::Sheet),
|
||||
ui(new Ui::CommitDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->plainTextEdit->clear();
|
||||
ui->listView->setModel(&itemModel);
|
||||
|
||||
// Generate the history combo
|
||||
foreach(const QString msg, commitMsgHistory)
|
||||
{
|
||||
QString trimmed = msg.trimmed();
|
||||
if(trimmed.isEmpty())
|
||||
continue;
|
||||
|
||||
commitMessages.append(trimmed);
|
||||
QStringList lines = trimmed.split('\n');
|
||||
QString first_line;
|
||||
if(!lines.empty())
|
||||
first_line = lines[0] + "...";
|
||||
|
||||
ui->comboBox->addItem(first_line);
|
||||
}
|
||||
|
||||
// Populate file list
|
||||
for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it)
|
||||
{
|
||||
QStandardItem *si = new QStandardItem(*it);
|
||||
si->setCheckable(true);
|
||||
si->setCheckState(Qt::Checked);
|
||||
itemModel.appendRow(si);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
CommitDialog::~CommitDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files)
|
||||
{
|
||||
CommitDialog dlg(parent, commitMsgHistory, files);
|
||||
int res = dlg.exec();
|
||||
commitMsg = dlg.ui->plainTextEdit->toPlainText();
|
||||
|
||||
if(res!=QDialog::Accepted)
|
||||
return false;
|
||||
|
||||
files.clear();
|
||||
for(int i=0; i<dlg.itemModel.rowCount(); ++i)
|
||||
{
|
||||
QStandardItem *si = dlg.itemModel.item(i);
|
||||
if(si->checkState()!=Qt::Checked)
|
||||
continue;
|
||||
files.append(si->text());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_comboBox_activated(int index)
|
||||
{
|
||||
Q_ASSERT(index < commitMessages.length());
|
||||
ui->plainTextEdit->setPlainText(commitMessages[index]);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_listView_doubleClicked(const QModelIndex &index)
|
||||
{
|
||||
QVariant data = itemModel.data(index);
|
||||
QString filename = data.toString();
|
||||
reinterpret_cast<MainWindow*>(parent())->diffFile(filename);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_listView_clicked(const QModelIndex &)
|
||||
{
|
||||
int num_selected = 0;
|
||||
for(int i=0; i<itemModel.rowCount(); ++i)
|
||||
{
|
||||
QStandardItem *si = itemModel.item(i);
|
||||
if(si->checkState()==Qt::Checked)
|
||||
++num_selected;
|
||||
}
|
||||
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0);
|
||||
}
|
||||
ui->plainTextEdit->setPlainText(commitMessages[index]);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_listView_doubleClicked(const QModelIndex &index)
|
||||
{
|
||||
QVariant data = itemModel.data(index);
|
||||
QString filename = data.toString();
|
||||
reinterpret_cast<MainWindow*>(parent())->diffFile(filename);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CommitDialog::on_listView_clicked(const QModelIndex &)
|
||||
{
|
||||
int num_selected = 0;
|
||||
for(int i=0; i<itemModel.rowCount(); ++i)
|
||||
{
|
||||
QStandardItem *si = itemModel.item(i);
|
||||
if(si->checkState()==Qt::Checked)
|
||||
++num_selected;
|
||||
}
|
||||
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0);
|
||||
}
|
||||
|
@ -1057,12 +1057,15 @@ void MainWindow::loadSettings()
|
||||
// Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel
|
||||
QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
|
||||
if(qsettings.contains("FossilPath"))
|
||||
settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = qsettings.value("FossilPath").toString();
|
||||
if(qsettings.contains(FUEL_SETTING_FOSSIL_PATH))
|
||||
settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = qsettings.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(qsettings.contains(FUEL_SETTING_FILE_DBLCLICK))
|
||||
settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = qsettings.value(FUEL_SETTING_FILE_DBLCLICK);
|
||||
|
||||
int num_wks = qsettings.beginReadArray("Workspaces");
|
||||
for(int i=0; i<num_wks; ++i)
|
||||
{
|
||||
@ -1116,10 +1119,9 @@ 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("FossilPath", fossil_path);
|
||||
|
||||
if(!settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value.toStringList().empty() )
|
||||
qsettings.setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
|
||||
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);
|
||||
|
||||
qsettings.beginWriteArray("Workspaces", workspaceHistory.size());
|
||||
for(int i=0; i<workspaceHistory.size(); ++i)
|
||||
@ -1381,7 +1383,13 @@ void MainWindow::on_actionHistory_triggered()
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::on_tableView_doubleClicked(const QModelIndex &/*index*/)
|
||||
{
|
||||
on_actionDiff_triggered();
|
||||
int action = settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt();
|
||||
if(action==FILE_DLBCLICK_ACTION_DIFF)
|
||||
on_actionDiff_triggered();
|
||||
else if(action==FILE_DLBCLICK_ACTION_OPEN)
|
||||
on_actionOpenFile_triggered();
|
||||
else if(action==FILE_DLBCLICK_ACTION_OPENCONTAINING)
|
||||
on_actionOpenContaining_triggered();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
@ -30,9 +30,18 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) :
|
||||
settings(&_settings)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->cmbDoubleClickAction->addItem(tr("Diff File"));
|
||||
ui->cmbDoubleClickAction->addItem(tr("Open File"));
|
||||
ui->cmbDoubleClickAction->addItem(tr("Open Containing Folder"));
|
||||
|
||||
// App Settings
|
||||
ui->lineFossilPath->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString()));
|
||||
ui->lineGDiffCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value.toString()));
|
||||
ui->lineGMergeCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value.toString()));
|
||||
ui->cmbDoubleClickAction->setCurrentIndex(settings->Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt());
|
||||
|
||||
// Repo Settings
|
||||
ui->lineRemoteURL->setText(settings->Mappings[FUEL_SETTING_REMOTE_URL].Value.toString());
|
||||
ui->lineIgnore->setText(settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value.toString());
|
||||
ui->lineIgnoreCRNL->setText(settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value.toString());
|
||||
@ -57,6 +66,9 @@ void SettingsDialog::on_buttonBox_accepted()
|
||||
settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value = QDir::fromNativeSeparators(ui->lineFossilPath->text());
|
||||
settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value = QDir::fromNativeSeparators(ui->lineGDiffCommand->text());
|
||||
settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value = QDir::fromNativeSeparators(ui->lineGMergeCommand->text());
|
||||
Q_ASSERT(ui->cmbDoubleClickAction->currentIndex()>=FILE_DLBCLICK_ACTION_DIFF && ui->cmbDoubleClickAction->currentIndex()<FILE_DLBCLICK_ACTION_MAX);
|
||||
settings->Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = ui->cmbDoubleClickAction->currentIndex();
|
||||
|
||||
settings->Mappings[FUEL_SETTING_REMOTE_URL].Value = ui->lineRemoteURL->text();
|
||||
settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value = ui->lineIgnore->text();
|
||||
settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value = ui->lineIgnoreCRNL->text();
|
||||
|
@ -9,13 +9,22 @@ namespace Ui {
|
||||
class SettingsDialog;
|
||||
}
|
||||
|
||||
#define FUEL_SETTING_FOSSIL_PATH "FossilPath"
|
||||
#define FUEL_SETTING_COMMIT_MSG "CommitMsgHistory"
|
||||
#define FUEL_SETTING_GDIFF_CMD "gdiff-command"
|
||||
#define FUEL_SETTING_GMERGE_CMD "gmerge-command"
|
||||
#define FUEL_SETTING_IGNORE_GLOB "ignore-glob"
|
||||
#define FUEL_SETTING_CRNL_GLOB "crnl-glob"
|
||||
#define FUEL_SETTING_REMOTE_URL "remote-url"
|
||||
#define FUEL_SETTING_FOSSIL_PATH "FossilPath"
|
||||
#define FUEL_SETTING_COMMIT_MSG "CommitMsgHistory"
|
||||
#define FUEL_SETTING_FILE_DBLCLICK "FileDblClickAction"
|
||||
#define FUEL_SETTING_GDIFF_CMD "gdiff-command"
|
||||
#define FUEL_SETTING_GMERGE_CMD "gmerge-command"
|
||||
#define FUEL_SETTING_IGNORE_GLOB "ignore-glob"
|
||||
#define FUEL_SETTING_CRNL_GLOB "crnl-glob"
|
||||
#define FUEL_SETTING_REMOTE_URL "remote-url"
|
||||
|
||||
enum FileDblClickAction
|
||||
{
|
||||
FILE_DLBCLICK_ACTION_DIFF,
|
||||
FILE_DLBCLICK_ACTION_OPEN,
|
||||
FILE_DLBCLICK_ACTION_OPENCONTAINING,
|
||||
FILE_DLBCLICK_ACTION_MAX
|
||||
};
|
||||
|
||||
struct Settings
|
||||
{
|
||||
@ -42,6 +51,7 @@ struct 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);
|
||||
|
@ -9,8 +9,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>526</width>
|
||||
<height>211</height>
|
||||
<width>528</width>
|
||||
<height>239</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -183,6 +183,26 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>File double click</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="cmbDoubleClickAction">
|
||||
<property name="currentIndex">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabRepo">
|
||||
|
20
manifest
20
manifest
@ -1,17 +1,17 @@
|
||||
C Added\scrnl-glob\sto\ssettings\n\n
|
||||
D 2011-10-21T15:55:36.627
|
||||
F CommitDialog.cpp 1b7eff42cbf75805df61c5b7d8edf6253aeaaf15
|
||||
C Added\ssetting\sto\scustomize\sthe\sdouble-click\saction\sin\sthe\sfile\sview\n
|
||||
D 2011-10-21T17:38:02.111
|
||||
F CommitDialog.cpp bc05504be08d9ffe2b24d341a18e37035e1941b7
|
||||
F CommitDialog.h 65a7238dcdd41b578536a0b0ac2a65f2e7f23c9a
|
||||
F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154
|
||||
F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
|
||||
F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
|
||||
F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
|
||||
F MainWindow.cpp 3ece15d6215da3f74172a55ea8b223d6980dd7a1
|
||||
F MainWindow.cpp 9554c5f08dbe7bfede32dfeb5a92ab81e7c4dcb7
|
||||
F MainWindow.h 6efb750454037a2a9f7984fce46b5138ff47eac5
|
||||
F MainWindow.ui 7f9e5cda55cffd5da8c01de7729a1806126c0d6b
|
||||
F SettingsDialog.cpp 8990d8e16a1300d184d88eee52f976fe872e8f49
|
||||
F SettingsDialog.h 9a711860c4f2b491d543c2a01a904c6fb225a8d9
|
||||
F SettingsDialog.ui fb24cd91621cdd3c9dcf7de285a3fa65ea6d50a9
|
||||
F SettingsDialog.cpp b9dc5eebf3a2404f4ea8a573fc46cce19ab3d639
|
||||
F SettingsDialog.h f5da6cab4ccc82e2eb78ec835fb849c4c104d6cc
|
||||
F SettingsDialog.ui f69c68cfa6c6d30a1e017fb77f853b492b162595
|
||||
F Utils.cpp 4bd6f104d7d666bdae2bbe54e392e8372f6ca186
|
||||
F Utils.h e5ebab82b3455f2ea06d92e6b9eb18355470076c
|
||||
F fuel.pro 3dc8e31fde8137143dea0ae44a81eb6733d86168
|
||||
@ -174,7 +174,7 @@ F installer/fuel.iss 13b6a938bcdf273cbd3649d2549887baa1577214
|
||||
F installer/license.txt 4cc77b90af91e615a64ae04893fdffa7939db84c
|
||||
F main.cpp f67a9b5c9ca0b634b19ef08e7136032372d37f93
|
||||
F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
|
||||
P 6f0dadf863a147669f09e5661541e2ae6043e2a5
|
||||
R 26afbf882288a832383c0e00c91b97f6
|
||||
P 457fb31debab309e4932ca3fb8e6fe6d3c111c6c
|
||||
R 1315a42142211c8b31593a76897f6c1b
|
||||
U kostas
|
||||
Z 3328aecb6f740da2db47c3b81fc47ab1
|
||||
Z 6cc01b07abe22caec55570f6fbb0b85e
|
||||
|
@ -1 +1 @@
|
||||
457fb31debab309e4932ca3fb8e6fe6d3c111c6c
|
||||
b0fda22886a7415ddf5d70457f3f7c8fe7ecf636
|
Loading…
x
Reference in New Issue
Block a user