#
#
# patch "i18n/guitone_de.ts"
# from [71fa0905c9ba2958ee5151fd9496f67c31917996]
# to [4272a84f0f1b90fc20472744289cf675471f427c]
#
# patch "src/model/Monotone.cpp"
# from [7684a9da94e6931dc383a4480eddcc730166c582]
# to [dac206dbc0aded24a1a04fedb5ab6dc9e9cd79a7]
#
# patch "src/model/Monotone.h"
# from [58a6fbe73b90d4163d86710cc2ae1dda832ed2de]
# to [484f8250c03ae129dea32955b892ced42a0e25ce]
#
# patch "src/model/Workspace.cpp"
# from [8708b7b6bbe73ce4452a7e540cc2af5afa2fad93]
# to [ab2c1a2fa0e7dfc65a310c8379100b5a18326554]
#
# patch "src/model/WorkspaceItem.cpp"
# from [a10732475af6c33e0c26d3074b8fd0ec92a93e5f]
# to [a9a40a45fed1b8f0751b0bcf3fb38d3ee8a938cb]
#
# patch "src/model/WorkspaceItem.h"
# from [d6b997b0b651dcd9f9e634a7cd9c093ec07e4332]
# to [3daad7c767f280452dc06e4df96f18b2174ee742]
#
============================================================
--- i18n/guitone_de.ts 71fa0905c9ba2958ee5151fd9496f67c31917996
+++ i18n/guitone_de.ts 4272a84f0f1b90fc20472744289cf675471f427c
@@ -61,10 +61,29 @@
-
+ Das gewählte Verzeichnis ist kein monotone-Arbeitsverzeichnis!
+ Monotone
+
+
+ Monotone nicht gefunden
+
+
+
+ Konnte Verbindung zu Monotone-Prozess nicht herstellen. Ist das Programm korrekt installiert?
+
+
+
+ Prozess beendet
+
+
+
+ Die interne Verbindung zum Monotone-Prozess wurde beendet (Code %1, Status %2)
+
+
+
SandboxItem
============================================================
--- src/model/Monotone.cpp 7684a9da94e6931dc383a4480eddcc730166c582
+++ src/model/Monotone.cpp dac206dbc0aded24a1a04fedb5ab6dc9e9cd79a7
@@ -1,8 +1,10 @@
#include "Monotone.h"
#include
#include
+#include
+#include
Monotone* Monotone::instance = 0;
@@ -14,6 +16,7 @@
Monotone::~Monotone()
{
+ // kill the running process
kill();
}
@@ -24,7 +27,13 @@
instance = new Monotone();
if (!instance->openConnection(workingDirectory))
{
- qFatal("Couldn't connect to monotone. Have you installed it properly?");
+ QMessageBox::critical(
+ NULL,
+ tr("Monotone not found"),
+ tr("Couldn't connect to monotone. Have you installed it properly?"),
+ QMessageBox::Ok, 0, 0
+ );
+ qApp->exit(1);
}
}
return instance;
@@ -42,6 +51,11 @@
this, SIGNAL(readyReadStandardOutput()),
this, SLOT(parseLineFromStdout())
);
+
+ connect(
+ this, SIGNAL(finished(int, QProcess::ExitStatus)),
+ this, SLOT(processTerminated(int, QProcess::ExitStatus))
+ );
QStringList args;
args << "automate";
@@ -58,6 +72,21 @@
return true;
}
+void Monotone::processTerminated(int code, QProcess::ExitStatus status)
+{
+ // TODO: log the error output somewhere or at least output it on guitone's STDERR
+ // QProcess' buffers are still intact at this point
+ QMessageBox::critical(
+ NULL,
+ tr("Process exited"),
+ tr("The internal connection to the monotone process was terminated (code %1, status %2)")
+ .arg(code)
+ .arg(status),
+ QMessageBox::Ok, 0, 0
+ );
+ qApp->exit(1);
+}
+
bool Monotone::triggerCommand(QString cmd)
{
if (isRunning)
============================================================
--- src/model/Monotone.h 58a6fbe73b90d4163d86710cc2ae1dda832ed2de
+++ src/model/Monotone.h 484f8250c03ae129dea32955b892ced42a0e25ce
@@ -36,6 +36,7 @@
private slots:
void parseLineFromStdout();
+ void processTerminated(int, QProcess::ExitStatus);
signals:
void commandFinished(int returnCode);
============================================================
--- src/model/Workspace.cpp 8708b7b6bbe73ce4452a7e540cc2af5afa2fad93
+++ src/model/Workspace.cpp ab2c1a2fa0e7dfc65a310c8379100b5a18326554
@@ -291,7 +291,7 @@
WorkspaceItem *item = static_cast(index.internalPointer());
- return item->data(index.column());
+ return item->data(index.column(), role);
}
Qt::ItemFlags Workspace::flags(const QModelIndex &index) const
@@ -310,7 +310,7 @@
{
if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
{
- return rootItem->data(section);
+ return rootItem->data(section, role);
}
return QVariant();
============================================================
--- src/model/WorkspaceItem.cpp a10732475af6c33e0c26d3074b8fd0ec92a93e5f
+++ src/model/WorkspaceItem.cpp a9a40a45fed1b8f0751b0bcf3fb38d3ee8a938cb
@@ -110,12 +110,16 @@
int WorkspaceItem::columnCount() const
{
// there are currently three columns per item
- // 1: icon, 2: item name, 3: item status
+ // 1: item name, 2: item status
return 2;
}
-QVariant WorkspaceItem::data(int column) const
+QVariant WorkspaceItem::data(int column, int role) const
{
+ // we currently only handle the display role
+ // TODO: what to do here for Qt::DecorationRole?
+ if (role != Qt::DisplayRole) return QVariant();
+
// return column headers for root item
if (parentItem == this)
{
@@ -126,13 +130,13 @@
default: return QVariant();
}
}
-
+
switch (column)
{
case 0: return QVariant(getFilename());
case 1: return QVariant(statusString());
default: return QVariant();
- }
+ }
}
QList WorkspaceItem::getChildren()
============================================================
--- src/model/WorkspaceItem.h d6b997b0b651dcd9f9e634a7cd9c093ec07e4332
+++ src/model/WorkspaceItem.h 3daad7c767f280452dc06e4df96f18b2174ee742
@@ -56,7 +56,7 @@
int columnCount() const;
void appendChild(WorkspaceItem*);
WorkspaceItem* parent();
- QVariant data(int) const;
+ QVariant data(int, int) const;
static const int RenamedFrom = 1;