Added Support for ignored files
Better handling when refreshing workspaces with lots of files FossilOrigin-Name: f038928c484d177fbe86bee4cd689d8a7d1e3eeb
This commit is contained in:
parent
ee6a90530e
commit
3387439c2c
129
MainWindow.cpp
129
MainWindow.cpp
@ -13,6 +13,7 @@
|
|||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include "CommitDialog.h"
|
#include "CommitDialog.h"
|
||||||
#include "FileActionDialog.h"
|
#include "FileActionDialog.h"
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#define SILENT_STATUS true
|
#define SILENT_STATUS true
|
||||||
#define COUNTOF(array) (sizeof(array)/sizeof(array[0]))
|
#define COUNTOF(array) (sizeof(array)/sizeof(array[0]))
|
||||||
@ -50,7 +51,7 @@ static QStringList QuotePaths(const QStringList &paths)
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
typedef QMap<QString, QString> QStringMap;
|
typedef QMap<QString, QString> QStringMap;
|
||||||
static QStringMap MakeKeyValue(QStringList lines)
|
static QStringMap MakeKeyValues(QStringList lines)
|
||||||
{
|
{
|
||||||
QStringMap res;
|
QStringMap res;
|
||||||
|
|
||||||
@ -290,29 +291,35 @@ void MainWindow::onOpenRecent()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
static void RecurseDirectory(QFileInfoList &entries, const QString& dirPath, const QString &baseDir)
|
bool MainWindow::scanDirectory(QFileInfoList &entries, const QString& dirPath, const QString &baseDir, const QString ignoreSpec)
|
||||||
{
|
{
|
||||||
QDir dir(dirPath);
|
QDir dir(dirPath);
|
||||||
|
|
||||||
QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden);
|
setStatus(dirPath);
|
||||||
|
QCoreApplication::processEvents();
|
||||||
|
|
||||||
|
QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot);
|
||||||
for (int i=0; i<list.count(); ++i)
|
for (int i=0; i<list.count(); ++i)
|
||||||
{
|
{
|
||||||
QFileInfo info = list[i];
|
QFileInfo info = list[i];
|
||||||
|
QString filename = info.fileName();
|
||||||
QString filepath = info.filePath();
|
QString filepath = info.filePath();
|
||||||
|
QString rel_path = filepath;
|
||||||
|
rel_path.remove(baseDir+"/");
|
||||||
|
|
||||||
|
// Skip ignored files
|
||||||
|
if(!ignoreSpec.isEmpty() && QDir::match(ignoreSpec, rel_path))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (info.isDir())
|
if (info.isDir())
|
||||||
{
|
{
|
||||||
// recursive
|
if(!scanDirectory(entries, filepath, baseDir, ignoreSpec))
|
||||||
if (info.fileName()!=".." && info.fileName()!=".")
|
return false;
|
||||||
{
|
|
||||||
RecurseDirectory(entries, filepath, baseDir);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
entries.push_back(info);
|
entries.push_back(info);
|
||||||
}
|
}
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -355,6 +362,7 @@ bool MainWindow::refresh()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadFossilSettings();
|
||||||
scanWorkspace();
|
scanWorkspace();
|
||||||
setStatus("");
|
setStatus("");
|
||||||
enableActions(true);
|
enableActions(true);
|
||||||
@ -381,13 +389,24 @@ void MainWindow::scanWorkspace()
|
|||||||
|
|
||||||
bool scan_files = ui->actionViewUnknown->isChecked();
|
bool scan_files = ui->actionViewUnknown->isChecked();
|
||||||
|
|
||||||
|
setStatus(tr("Scanning Workspace..."));
|
||||||
|
setEnabled(false);
|
||||||
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
|
|
||||||
workspaceFiles.clear();
|
workspaceFiles.clear();
|
||||||
if(scan_files)
|
if(scan_files)
|
||||||
{
|
{
|
||||||
setStatus("Scanning Workspace...");
|
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
|
||||||
RecurseDirectory(all_files, wkdir, wkdir);
|
QString ignore;
|
||||||
|
// If we should not be showing ignored files, fill in the ignored spec
|
||||||
|
if(!ui->actionViewIgnored->isChecked())
|
||||||
|
{
|
||||||
|
// QDir expects multiple specs being separated by a semicolor
|
||||||
|
ignore = settings.ignoreGlob.replace(',',';');
|
||||||
|
}
|
||||||
|
|
||||||
|
scanDirectory(all_files, wkdir, wkdir, ignore);
|
||||||
|
|
||||||
for(QFileInfoList::iterator it=all_files.begin(); it!=all_files.end(); ++it)
|
for(QFileInfoList::iterator it=all_files.begin(); it!=all_files.end(); ++it)
|
||||||
{
|
{
|
||||||
@ -401,9 +420,9 @@ void MainWindow::scanWorkspace()
|
|||||||
e.set(*it, RepoFile::TYPE_UNKNOWN, wkdir);
|
e.set(*it, RepoFile::TYPE_UNKNOWN, wkdir);
|
||||||
workspaceFiles.insert(e.getFilename(), e);
|
workspaceFiles.insert(e.getFilename(), e);
|
||||||
}
|
}
|
||||||
setStatus("");
|
|
||||||
}
|
}
|
||||||
|
setStatus(tr("Updating..."));
|
||||||
|
QCoreApplication::processEvents();
|
||||||
|
|
||||||
for(QStringList::iterator it=res.begin(); it!=res.end(); ++it)
|
for(QStringList::iterator it=res.begin(); it!=res.end(); ++it)
|
||||||
{
|
{
|
||||||
@ -476,6 +495,9 @@ void MainWindow::scanWorkspace()
|
|||||||
{ RepoFile::TYPE_MISSING, "M", "Missing", ":icons/icons/Button Help-01.png" },
|
{ RepoFile::TYPE_MISSING, "M", "Missing", ":icons/icons/Button Help-01.png" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
size_t num_files = workspaceFiles.size();
|
||||||
|
itemModel.insertRows(0, num_files);
|
||||||
|
|
||||||
size_t i=0;
|
size_t i=0;
|
||||||
for(filemap_t::iterator it = workspaceFiles.begin(); it!=workspaceFiles.end(); ++it, ++i)
|
for(filemap_t::iterator it = workspaceFiles.begin(); it!=workspaceFiles.end(); ++it, ++i)
|
||||||
{
|
{
|
||||||
@ -512,9 +534,16 @@ void MainWindow::scanWorkspace()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Avoid expensive operations on really big datasets
|
||||||
|
if(num_files < 20000)
|
||||||
|
{
|
||||||
ui->tableView->resizeColumnsToContents();
|
ui->tableView->resizeColumnsToContents();
|
||||||
ui->tableView->resizeRowsToContents();
|
ui->tableView->resizeRowsToContents();
|
||||||
}
|
}
|
||||||
|
setEnabled(true);
|
||||||
|
setStatus("");
|
||||||
|
QApplication::restoreOverrideCursor();
|
||||||
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
MainWindow::RepoStatus MainWindow::getRepoStatus()
|
MainWindow::RepoStatus MainWindow::getRepoStatus()
|
||||||
{
|
{
|
||||||
@ -821,6 +850,8 @@ void MainWindow::loadSettings()
|
|||||||
ui->actionViewModified->setChecked(qsettings.value("ViewModified").toBool());
|
ui->actionViewModified->setChecked(qsettings.value("ViewModified").toBool());
|
||||||
if(qsettings.contains("ViewUnchanged"))
|
if(qsettings.contains("ViewUnchanged"))
|
||||||
ui->actionViewUnchanged->setChecked(qsettings.value("ViewUnchanged").toBool());
|
ui->actionViewUnchanged->setChecked(qsettings.value("ViewUnchanged").toBool());
|
||||||
|
if(qsettings.contains("ViewIgnored"))
|
||||||
|
ui->actionViewUnchanged->setChecked(qsettings.value("ViewIgnored").toBool());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -852,6 +883,7 @@ void MainWindow::saveSettings()
|
|||||||
qsettings.setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
|
qsettings.setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
|
||||||
qsettings.setValue("ViewModified", ui->actionViewModified->isChecked());
|
qsettings.setValue("ViewModified", ui->actionViewModified->isChecked());
|
||||||
qsettings.setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
|
qsettings.setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
|
||||||
|
qsettings.setValue("ViewIgnored", ui->actionViewIgnored->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -1344,47 +1376,61 @@ void MainWindow::on_actionUpdate_triggered()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void MainWindow::on_actionSettings_triggered()
|
void MainWindow::loadFossilSettings()
|
||||||
{
|
{
|
||||||
// Also retrieve the fossil global settings
|
// Also retrieve the fossil global settings
|
||||||
QStringList out;
|
QStringList out;
|
||||||
if(!runFossil(QStringList() << "settings", &out, true))
|
if(!runFossil(QStringList() << "settings", &out, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QStringMap kv = MakeKeyValue(out);
|
QStringMap kv = MakeKeyValues(out);
|
||||||
struct { const char *command; QString *value; } maps[] =
|
|
||||||
{
|
|
||||||
{ "gdiff-command", &settings.gDiffCommand },
|
|
||||||
{ "gmerge-command", &settings.gMergeCommand }
|
|
||||||
};
|
|
||||||
|
|
||||||
for(size_t m=0; m<COUNTOF(maps); ++m)
|
for(Settings::mappings_t::iterator it=settings.Mappings.begin(); it!=settings.Mappings.end(); ++it)
|
||||||
{
|
{
|
||||||
if(!kv.contains(maps[m].command))
|
const QString &name = it.key();
|
||||||
|
if(!kv.contains(name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
QString value = kv[maps[m].command];
|
QString value = kv[name];
|
||||||
if(value.indexOf("(global)") != -1)
|
if(value.indexOf("(global)") != -1 || value.indexOf("(local)") != -1)
|
||||||
{
|
{
|
||||||
int i = value.indexOf(" ");
|
int i = value.indexOf(" ");
|
||||||
Q_ASSERT(i!=-1);
|
Q_ASSERT(i!=-1);
|
||||||
*maps[m].value = value.mid(i).trimmed();
|
Q_ASSERT(it.value());
|
||||||
|
value = value.mid(i).trimmed();
|
||||||
|
|
||||||
|
// Remove quotes if any
|
||||||
|
if(value.length()>=2 && value.at(0)=='\"' && value.at(value.length()-1)=='\"')
|
||||||
|
value = value.mid(1, value.length()-2);
|
||||||
|
|
||||||
|
*it.value() = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
void MainWindow::on_actionSettings_triggered()
|
||||||
|
{
|
||||||
|
loadFossilSettings();
|
||||||
|
|
||||||
// Run the dialog
|
// Run the dialog
|
||||||
if(SettingsDialog::run(this, settings))
|
if(!SettingsDialog::run(this, settings))
|
||||||
{
|
return;
|
||||||
// Apply settings
|
|
||||||
for(size_t m=0; m<COUNTOF(maps); ++m)
|
|
||||||
{
|
|
||||||
if(maps[m].value->isEmpty())
|
|
||||||
runFossil(QStringList() << "unset" << maps[m].command << "-global");
|
|
||||||
else
|
|
||||||
runFossil(QStringList() << "settings" << maps[m].command << *maps[m].value << "-global");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Apply settings
|
||||||
|
for(Settings::mappings_t::iterator it=settings.Mappings.begin(); it!=settings.Mappings.end(); ++it)
|
||||||
|
{
|
||||||
|
const QString &name = it.key();
|
||||||
|
QString *value = it.value();
|
||||||
|
Q_ASSERT(value);
|
||||||
|
|
||||||
|
if(value->isEmpty())
|
||||||
|
runFossil(QStringList() << "unset" << name << "-global");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
runFossil(QStringList() << "settings" << name << "\"" + *value + "\"" <<"-global");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -1429,9 +1475,16 @@ void MainWindow::on_actionViewUnknown_triggered()
|
|||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
void MainWindow::on_actionViewIgnored_triggered()
|
||||||
|
{
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
QString MainWindow::getFossilHttpAddress()
|
QString MainWindow::getFossilHttpAddress()
|
||||||
{
|
{
|
||||||
return "http://127.0.0.1:"+fossilUIPort;
|
return "http://127.0.0.1:"+fossilUIPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -117,8 +117,10 @@ private:
|
|||||||
void addWorkspace(const QString &dir);
|
void addWorkspace(const QString &dir);
|
||||||
void rebuildRecent();
|
void rebuildRecent();
|
||||||
bool openWorkspace(const QString &dir);
|
bool openWorkspace(const QString &dir);
|
||||||
|
void loadFossilSettings();
|
||||||
QString getFossilPath();
|
QString getFossilPath();
|
||||||
QString getFossilHttpAddress();
|
QString getFossilHttpAddress();
|
||||||
|
bool scanDirectory(QFileInfoList &entries, const QString& dirPath, const QString &baseDir, const QString ignoreSpec);
|
||||||
|
|
||||||
enum RepoStatus
|
enum RepoStatus
|
||||||
{
|
{
|
||||||
@ -163,6 +165,8 @@ private slots:
|
|||||||
void on_actionViewModified_triggered();
|
void on_actionViewModified_triggered();
|
||||||
void on_actionViewUnknown_triggered();
|
void on_actionViewUnknown_triggered();
|
||||||
|
|
||||||
|
void on_actionViewIgnored_triggered();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -187,6 +191,7 @@ private:
|
|||||||
// Repo State
|
// Repo State
|
||||||
typedef QMap<QString, RepoFile> filemap_t;
|
typedef QMap<QString, RepoFile> filemap_t;
|
||||||
filemap_t workspaceFiles;
|
filemap_t workspaceFiles;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
@ -116,6 +116,7 @@
|
|||||||
<addaction name="actionViewModified"/>
|
<addaction name="actionViewModified"/>
|
||||||
<addaction name="actionViewUnchanged"/>
|
<addaction name="actionViewUnchanged"/>
|
||||||
<addaction name="actionViewUnknown"/>
|
<addaction name="actionViewUnknown"/>
|
||||||
|
<addaction name="actionViewIgnored"/>
|
||||||
</widget>
|
</widget>
|
||||||
<addaction name="menuFile"/>
|
<addaction name="menuFile"/>
|
||||||
<addaction name="menuView"/>
|
<addaction name="menuView"/>
|
||||||
@ -497,6 +498,14 @@
|
|||||||
<string>Unknown</string>
|
<string>Unknown</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionViewIgnored">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Ignored</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<resources>
|
<resources>
|
||||||
|
@ -19,9 +19,6 @@ static QString SelectExe(QWidget *parent, const QString &description)
|
|||||||
if(!QFile::exists(path))
|
if(!QFile::exists(path))
|
||||||
return QString();
|
return QString();
|
||||||
|
|
||||||
// Quote path if it contains spaces
|
|
||||||
if(path.contains(' '))
|
|
||||||
path = '"'+path + '"';
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,6 +32,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) :
|
|||||||
ui->lineFossilPath->setText(settings->fossilPath);
|
ui->lineFossilPath->setText(settings->fossilPath);
|
||||||
ui->lineGDiffCommand->setText(settings->gDiffCommand);
|
ui->lineGDiffCommand->setText(settings->gDiffCommand);
|
||||||
ui->lineGMergeCommand->setText(settings->gMergeCommand);
|
ui->lineGMergeCommand->setText(settings->gMergeCommand);
|
||||||
|
ui->lineIgnore->setText(settings->ignoreGlob);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -56,6 +54,7 @@ void SettingsDialog::on_buttonBox_accepted()
|
|||||||
settings->fossilPath = ui->lineFossilPath->text();
|
settings->fossilPath = ui->lineFossilPath->text();
|
||||||
settings->gDiffCommand = ui->lineGDiffCommand->text();
|
settings->gDiffCommand = ui->lineGDiffCommand->text();
|
||||||
settings->gMergeCommand = ui->lineGMergeCommand->text();
|
settings->gMergeCommand = ui->lineGMergeCommand->text();
|
||||||
|
settings->ignoreGlob = ui->lineIgnore->text();
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void SettingsDialog::on_btnSelectFossil_clicked()
|
void SettingsDialog::on_btnSelectFossil_clicked()
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define SETTINGSDIALOG_H
|
#define SETTINGSDIALOG_H
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class SettingsDialog;
|
class SettingsDialog;
|
||||||
@ -12,6 +13,17 @@ struct Settings
|
|||||||
QString fossilPath;
|
QString fossilPath;
|
||||||
QString gDiffCommand;
|
QString gDiffCommand;
|
||||||
QString gMergeCommand;
|
QString gMergeCommand;
|
||||||
|
QString ignoreGlob;
|
||||||
|
|
||||||
|
typedef QMap<QString, QString *> mappings_t;
|
||||||
|
mappings_t Mappings;
|
||||||
|
|
||||||
|
Settings()
|
||||||
|
{
|
||||||
|
Mappings.insert("gdiff-command", &gDiffCommand);
|
||||||
|
Mappings.insert("gmerge-command", &gMergeCommand);
|
||||||
|
Mappings.insert("ignore-glob", &ignoreGlob);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>520</width>
|
<width>544</width>
|
||||||
<height>150</height>
|
<height>160</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -20,9 +20,6 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
<property name="fieldGrowthPolicy">
|
|
||||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -57,6 +54,26 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineGDiffCommand"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnSelectFossilGDiff">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -84,7 +101,17 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ignore List</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineIgnore"/>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
@ -94,31 +121,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="lineGDiffCommand"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnSelectFossilGDiff">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
<zorder>buttonBox</zorder>
|
<zorder>buttonBox</zorder>
|
||||||
<zorder>label_2</zorder>
|
<zorder>label_2</zorder>
|
||||||
<zorder>label_3</zorder>
|
<zorder>label_3</zorder>
|
||||||
<zorder>label</zorder>
|
<zorder>label</zorder>
|
||||||
|
<zorder>label_4</zorder>
|
||||||
|
<zorder>lineIgnore</zorder>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
|
4
main.cpp
4
main.cpp
@ -5,11 +5,11 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
a.setApplicationName("Fuel");
|
a.setApplicationName("Fuel");
|
||||||
a.setApplicationVersion("0.9.2");
|
a.setApplicationVersion("0.9.4");
|
||||||
a.setOrganizationDomain("karanik.com");
|
a.setOrganizationDomain("karanik.com");
|
||||||
a.setOrganizationName("Karanik");
|
a.setOrganizationName("Karanik");
|
||||||
|
|
||||||
// Native applications on OSX don't use menu icons
|
// Native OSX applications don't use menu icons
|
||||||
#ifdef Q_WS_MACX
|
#ifdef Q_WS_MACX
|
||||||
a.setAttribute(Qt::AA_DontShowIconsInMenus);
|
a.setAttribute(Qt::AA_DontShowIconsInMenus);
|
||||||
#endif
|
#endif
|
||||||
|
24
manifest
24
manifest
@ -1,20 +1,20 @@
|
|||||||
C Added\sstatus\smessage\swhen\sscanning\sfor\sworkspace\sfiles
|
C Added\sSupport\sfor\signored\sfiles\nBetter\shandling\swhen\srefreshing\sworkspaces\swith\slots\sof\sfiles\n\n
|
||||||
D 2011-09-04T04:30:52.025
|
D 2011-10-06T13:02:09.111
|
||||||
F CommitDialog.cpp 8965e52d077c300cf1acb1b16fb2dcca5c7070f8
|
F CommitDialog.cpp 8965e52d077c300cf1acb1b16fb2dcca5c7070f8
|
||||||
F CommitDialog.h a9596d99865cf312b419d01d51334ffc916f5508
|
F CommitDialog.h a9596d99865cf312b419d01d51334ffc916f5508
|
||||||
F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154
|
F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154
|
||||||
F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
|
F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
|
||||||
F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
|
F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
|
||||||
F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
|
F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7
|
||||||
F MainWindow.cpp e89d09b783fdd0dcb87703e6347cd2d6f2766f0b
|
F MainWindow.cpp d4bc0072c249f758aa39e9096207f904ba8dd44c
|
||||||
F MainWindow.h cb4d2ab3c3fb3ecc26c5d162358316516090a89e
|
F MainWindow.h 55f90fe948661a6b7382470f3cdc80dc592e76c4
|
||||||
F MainWindow.ui fcce2709fd2dc332061ee72cbc5a5a17adfd0779
|
F MainWindow.ui d22becfdb32d4b31ed9a6e6d68dd144870d9a957
|
||||||
F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e
|
F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e
|
||||||
F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802
|
F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802
|
||||||
F RepoDialog.ui be7b18199c04a3003f3c7534a616cd7441b7bb0c
|
F RepoDialog.ui be7b18199c04a3003f3c7534a616cd7441b7bb0c
|
||||||
F SettingsDialog.cpp 638a513e765ef4268a514d679f78c8bd3f55862c
|
F SettingsDialog.cpp 4e8d12cd19c19590c68eaa3516441d21d08f0ee6
|
||||||
F SettingsDialog.h 9b02af204d7cf90c2fb92de50fb634fb36f179dc
|
F SettingsDialog.h c2a7828466a5459d8c08a759f0ddf3e368357e80
|
||||||
F SettingsDialog.ui 9114ca5b9d8644cd0e910954c04f0425f89a960d
|
F SettingsDialog.ui 292eea79612f0daa48b67436fcf812f48ff5af54
|
||||||
F fuel.pro 295944fd817518c7c2412c5e52ce5ecad11dd8f8
|
F fuel.pro 295944fd817518c7c2412c5e52ce5ecad11dd8f8
|
||||||
F fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79
|
F fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79
|
||||||
F icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8
|
F icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8
|
||||||
@ -171,9 +171,9 @@ F icons/Zoom\sOut-01.png 8eda092100d9e00c9097f43a80d1e26695947448
|
|||||||
F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6
|
F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6
|
||||||
F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
|
F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
|
||||||
F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
|
F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
|
||||||
F main.cpp 083845039c167badd57a4abf482dd3d5e77aab35
|
F main.cpp f67a9b5c9ca0b634b19ef08e7136032372d37f93
|
||||||
F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
|
F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
|
||||||
P 30fdcc0810046768f9635d4972026cadb1bb9dd3
|
P 165842900a857fa07fa58f43f309b79065ecc42c
|
||||||
R b0543f1058270ddb516a4c0a9a543c63
|
R a1ade7274295322c9cef6524f98c75a7
|
||||||
U kostas
|
U kostas
|
||||||
Z 48e6b15a7648a3d3c0d67d63a64a810f
|
Z 0c76a29513c846b1a1375a9cab3853ad
|
||||||
|
@ -1 +1 @@
|
|||||||
165842900a857fa07fa58f43f309b79065ecc42c
|
f038928c484d177fbe86bee4cd689d8a7d1e3eeb
|
Loading…
x
Reference in New Issue
Block a user