#
#
# patch "guitone/guitone.pro"
# from [e7a4a243f865a6366969a654ea8b4dabf9f8ba7f]
# to [9a2e3f12a1841e5e5555beb00af2bf509968b347]
#
# patch "guitone/res/forms/changeset_browser.ui"
# from [d5f1b28fde966c80b53c941f8dfa7a217c8b34de]
# to [b305fba833874efa7b6b53773d8cea303c0366d0]
#
# patch "guitone/res/forms/commit_revision.ui"
# from [f1e90933bd268b597bff6a668ea336e94c676314]
# to [7743280f847be7c2fd842e55b24e48be78d2b6ab]
#
# patch "guitone/res/i18n/guitone_de.ts"
# from [7b403b0ae716911cc11af94a607db5d236eeaa5f]
# to [1bb6cc4365f6ab485e8373a03f08ccc07e7033ed]
#
# patch "guitone/src/Guitone.h"
# from [39ee9b4581654307001c33dbd791252bf094d0bf]
# to [f56c7a540e0185fa8ef7008a7b35d2af4376bbb7]
#
# patch "guitone/src/model/GetRevision.cpp"
# from [cfca83dee8492747c56b3876461f1a0e12025bc2]
# to [cbb4647d0b6e8b29fd1943ea473af6a984ff03ce]
#
# patch "guitone/src/model/GetRevision.h"
# from [e6d1d83047029447b8e9d5fb338cf72877458c46]
# to [0308fe66ff1749162131c693e28efe7497579d55]
#
# patch "guitone/src/model/Inventory.cpp"
# from [0e2147b691371bee5edf59e5ab667646fca91c5f]
# to [11326d99834f514d3a2619061715d37d89d9ffbd]
#
# patch "guitone/src/model/Inventory.h"
# from [89fdbc73a2dfef156339722e53ef3d8ca73e6819]
# to [5f721ad6fa46ed5f994688debe1d0708381607b7]
#
# patch "guitone/src/model/Manifest.cpp"
# from [68394c64e088df3b3451142c34f6c1851253d0ce]
# to [d2f9630459f1cd73b5de8c64efb704a923e4552b]
#
# patch "guitone/src/util/IconProvider.cpp"
# from [5db02c473df668132b35cc748eed817b82fd9a30]
# to [eade6accc5f04c14c3f153b036d08e08e2c81499]
#
# patch "guitone/src/util/IconProvider.h"
# from [7832476f4f87e91115de31f7a7af5fabe4b12698]
# to [0331678a530715a50344d5fb07943f02ad24bccf]
#
# patch "guitone/src/view/MainWindow.cpp"
# from [84beb22ee31de9e5b87343e40c471ec1c89eebfe]
# to [1e0d6b1c8dc5305f78a6e72f8dae9cf118ab5866]
#
# patch "guitone/src/view/dialogs/ChangesetBrowser.cpp"
# from [d16e851f9106578f41f2ee960e161cc67f96cf88]
# to [38bb758efc890621318bfe573b124997c78fb8ce]
#
# patch "guitone/src/view/dialogs/ChangesetBrowser.h"
# from [dd388119b2fdbccfc1bff51ff88ddbb44c1c1e12]
# to [9b78450d35f13ae1a57e9475e69e66f975afbc0f]
#
# patch "guitone/src/vocab.h"
# from [9badd48e5b9420e8fb663d32e93bab8bc751a93d]
# to [514f8d7e143232a98175232e2133efe326200cc5]
#
============================================================
--- guitone/guitone.pro e7a4a243f865a6366969a654ea8b4dabf9f8ba7f
+++ guitone/guitone.pro 9a2e3f12a1841e5e5555beb00af2bf509968b347
@@ -7,7 +7,6 @@ QT += xml network
TARGET = guitone
CONFIG += qt debug
QT += xml network
-DEFINES += GUITONE_VERSION=\\\"$${GUITONE_VERSION}\\\"
INCLUDEPATH = src/ \
src/view \
@@ -154,13 +153,24 @@ RCC_DIR = tmp
TRANSLATIONS = res/i18n/guitone_de.ts
RESOURCES = res/guitone.qrc
RCC_DIR = tmp
+
+DEFINES += GUITONE_VERSION=\\\"$${GUITONE_VERSION}\\\"
+
+CONFIG(debug) : DEFINES += DEBUG
+
+
PRECOMPILED_HEADER = src/stable.h
-win32:LIBS += shell32.lib Advapi32.lib
+# is that needed?
+# win32:LIBS += shell32.lib Advapi32.lib
+#
# Libs for static build on windows, I don't know if I can test for static.
# I comment that in and out atm.
-# win32:LIBS += gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib uuid.lib user32.lib advapi32.lib msimg32.lib shell32.lib
+#
+# win32:LIBS += gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib \
+# winspool.lib ws2_32.lib ole32.lib uuid.lib user32.lib \
+# advapi32.lib msimg32.lib shell32.lib
macx | unix {
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter
============================================================
--- guitone/res/forms/changeset_browser.ui d5f1b28fde966c80b53c941f8dfa7a217c8b34de
+++ guitone/res/forms/changeset_browser.ui b305fba833874efa7b6b53773d8cea303c0366d0
@@ -40,8 +40,25 @@
Qt::Vertical
-
-
+
+
+ true
+
+
+
+
+ true
+
+
+ QAbstractItemView::NoSelection
+
+
+ false
+
+
+ false
+
+
@@ -122,7 +139,7 @@
TreeView
QTreeView
-
+
============================================================
--- guitone/res/forms/commit_revision.ui f1e90933bd268b597bff6a668ea336e94c676314
+++ guitone/res/forms/commit_revision.ui 7743280f847be7c2fd842e55b24e48be78d2b6ab
@@ -69,6 +69,9 @@
-
+
+ true
+
QAbstractItemView::NoSelection
============================================================
--- guitone/res/i18n/guitone_de.ts 7b403b0ae716911cc11af94a607db5d236eeaa5f
+++ guitone/res/i18n/guitone_de.ts 1bb6cc4365f6ab485e8373a03f08ccc07e7033ed
@@ -164,30 +164,35 @@
Ãnderungen-Browser
-
+
zeige Zweige als Baum
-
+
alle Ãnderungen
-
+
50 weitere Ãnderungen
-
+
SchlieÃen
-
+
zeige Zweige als Liste
+
+
+
+ Dateien in dieser Revision anzeigen
+
ChangesetModel
@@ -673,12 +678,12 @@ In jedem Fall sollte der derzeitige Arbe
GetRevision
-
+
Typ
-
+
Ãnderung
@@ -1174,7 +1179,7 @@ In jedem Fall sollte der derzeitige Arbe
Strg+O
-
+
Keine vorherigen Arbeitsbereiche verfügbar.
@@ -1199,7 +1204,7 @@ In jedem Fall sollte der derzeitige Arbe
Strg+Q
-
+
Ignorierte Dateien verstecken
@@ -1299,7 +1304,7 @@ In jedem Fall sollte der derzeitige Arbe
I
-
+
Baum aufklappen
@@ -1349,12 +1354,12 @@ In jedem Fall sollte der derzeitige Arbe
guitone - ein Frontend für monotone
-
+
Wählen Sie Ihren Arbeitsbereich aus...
-
+
Laden abgebrochen
@@ -1369,27 +1374,27 @@ In jedem Fall sollte der derzeitige Arbe
Das gewählte Verzeichnis ist kein monotone-Arbeitsverzeichnis!
-
+
Konnte Kommando nicht ausführen
-
+
Konnte '%1' nicht ausführen - eventuell läuft noch ein anderes Kommando?
-
+
Zeige ignorierte Dateien
-
+
Baum zuklappen
-
+
&%1 %2
@@ -1404,7 +1409,7 @@ In jedem Fall sollte der derzeitige Arbe
Datenbank öffnen
-
+
Keine vorherigen geöffneten Datenbanken verfügbar.
@@ -1419,17 +1424,17 @@ In jedem Fall sollte der derzeitige Arbe
Strg+Shift+O
-
+
Geladene Datenbank: %1
-
+
Wählen Sie eine Datenbank aus...
-
+
monotone-Datenbanken (*.mtn *.db)
@@ -1535,27 +1540,27 @@ oder respektive auf Datei > Datenbank
Alle nach vorne bringen
-
+
%1 - Datenbankmodus - guitone
-
+
%1 - Arbeitsbereichmodus - guitone
-
+
Kein Arbeitsbereich oder Datenbank geladen - guitone
-
+
Konnte Arbeitsbereich nicht laden
-
+
-
+
Konnte Arbeitsbereich nicht laden
-
+
-
+
Konnte Datenbank nicht laden
-
+
-
+
Keine Aktualisierungen verfügbar
-
+
Ihre Version von guitone (%1) ist bereits aktuell.
@@ -1677,6 +1682,11 @@ monotone gab zurück:
monotone gab zurück:
%2
+
+
+
+ [Prozess nicht erzeugt]
+
MonotoneDelegate
@@ -1835,53 +1845,70 @@ monotone gab zurück:
Attr gelöscht
-
-
-
+
+
+ %1 nach %2
-
-
-
+
+
+ '%1' von %2
+
+
+ '%1' auf '%2' für %3
+
+
-
- %1 nach %2
+
+ %1 nach
+%2
-
- '%1' von %2
+
+ '%1' von
+%2
-
- '%1' auf '%2' für %3
+
+ '%1' auf '%2'
+für %3
+
+
+
+ '%1' auf
+'%2' für
+%3
+
QShortcut
-
+
Strg
-
+
Alt
-
+
Umschalt
-
+
Meta
@@ -2212,7 +2239,14 @@ value "%3"
- Die ausgewählte Revision besitzt mehr als ein Zweigzertifikat - bitte wählen Sie eins:
+ Die ausgewählte Revision besitzt mehr als ein Zweigzertifikat - bitte wählen Sie eins:
+
+
+
+ Die ausgewählte Revision besitzt mehr als ein
+Zweigzertifikat - bitte wählen Sie eines:
+
============================================================
--- guitone/src/Guitone.h 39ee9b4581654307001c33dbd791252bf094d0bf
+++ guitone/src/Guitone.h f56c7a540e0185fa8ef7008a7b35d2af4376bbb7
@@ -21,29 +21,6 @@
#ifndef GUITONE_H
#define GUITONE_H
-//
-// some global definitions
-//
-#define DEBUG 1
-#define APP reinterpret_cast(qApp)
-#define MTN(arg) APP->getMonotoneInstance(arg)
-
-// FIXME: uncomment the following lines if you have compile problems
-// on Windows using MSVC++
-/*
-#ifdef _MSC_VER
-#define __FUNCTION__ ""
-#endif
-*/
-#define D(arg) qDebug("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
-#ifndef DEBUG
-#define D(arg) void()
-#endif
-#define W(arg) qWarning("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
-#define C(arg) qCritical("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
-#define F(arg) qFatal("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
-
-
#include "MainWindow.h"
#include "Monotone.h"
#include "ApplicationUpdate.h"
============================================================
--- guitone/src/model/GetRevision.cpp cfca83dee8492747c56b3876461f1a0e12025bc2
+++ guitone/src/model/GetRevision.cpp cbb4647d0b6e8b29fd1943ea473af6a984ff03ce
@@ -21,6 +21,7 @@
#include "GetRevision.h"
#include "InventoryItem.h"
#include "Monotone.h"
+#include "vocab.h"
#include
#include
============================================================
--- guitone/src/model/GetRevision.h e6d1d83047029447b8e9d5fb338cf72877458c46
+++ guitone/src/model/GetRevision.h 0308fe66ff1749162131c693e28efe7497579d55
@@ -95,11 +95,11 @@ struct Change {
.arg(escape(stanza.at(0).vals.at(0)))
.arg(escape(stanza.at(1).vals.at(0)));
case AttrClear:
- return QObject::tr("clear \"%1\"\nattr \"%2\"")
+ return QString("clear \"%1\"\nattr \"%2\"")
.arg(escape(stanza.at(0).vals.at(0)))
.arg(escape(stanza.at(1).vals.at(0)));
case AttrSet:
- return QObject::tr("set \"%1\"\nattr \"%2\"\nvalue \"%3\"")
+ return QString("set \"%1\"\nattr \"%2\"\nvalue \"%3\"")
.arg(stanza.at(0).vals.at(0))
.arg(stanza.at(1).vals.at(0))
.arg(stanza.at(2).vals.at(0));
@@ -117,15 +117,15 @@ struct Change {
case Delete:
return stanza.at(0).vals.at(0);
case Rename:
- return QObject::tr("%1 to %2")
+ return QObject::tr("%1 to\n%2")
.arg(stanza.at(0).vals.at(0))
.arg(stanza.at(1).vals.at(0));
case AttrClear:
- return QObject::tr("'%1' from %2")
+ return QObject::tr("'%1' from\n%2")
.arg(stanza.at(1).vals.at(0))
.arg(stanza.at(0).vals.at(0));
case AttrSet:
- return QObject::tr("'%1' to '%2' for %3")
+ return QObject::tr("'%1' to\n'%2' for\n%3")
.arg(stanza.at(1).vals.at(0))
.arg(stanza.at(2).vals.at(0))
.arg(stanza.at(0).vals.at(0));
@@ -141,7 +141,7 @@ struct Revision
inline void clear()
{
- new_manifest = QString();
+ new_manifest.clear();
changesAgainstParent.clear();
}
};
============================================================
--- guitone/src/model/Inventory.cpp 0e2147b691371bee5edf59e5ab667646fca91c5f
+++ guitone/src/model/Inventory.cpp 11326d99834f514d3a2619061715d37d89d9ffbd
@@ -30,10 +30,7 @@ Inventory::Inventory(QObject *parent) :
// create a dummy item since the view needs at least one item
// in the model, otherwise the app crashes
rootItem = new InventoryItem();
-
- // FIXME: we need a global provider...
- iconProvider = new IconProvider();
- regex = new QRegExp("^(R|D|[ ])(R|A|[ ])(M|P|U|I|[ ])\\s(\\d+)\\s(\\d+)\\s(.+)$");
+ regex = new QRegExp("^(R|D|[ ])(R|A|[ ])(M|P|U|I|[ ])\\s(\\d+)\\s(\\d+)\\s(.+)$");
regex->setMinimal(true);
mtnDelegate = new MonotoneDelegate(this);
@@ -42,7 +39,6 @@ Inventory::~Inventory()
Inventory::~Inventory()
{
delete rootItem;
- delete iconProvider;
delete regex;
delete mtnDelegate;
}
@@ -228,7 +224,8 @@ QVariant Inventory::data(const QModelInd
if ((role == Qt::DecorationRole) && (index.column() == 0))
{
- return iconProvider->getIcon(item);
+ IconProvider * provider = IconProvider::singleton();
+ return provider->getIcon(item);
}
else
{
============================================================
--- guitone/src/model/Inventory.h 89fdbc73a2dfef156339722e53ef3d8ca73e6819
+++ guitone/src/model/Inventory.h 5f721ad6fa46ed5f994688debe1d0708381607b7
@@ -28,7 +28,6 @@ class InventoryItem;
#include
class InventoryItem;
-class IconProvider;
class Inventory : public QAbstractItemModel, public AutomateCommand
{
@@ -60,7 +59,6 @@ class Inventory : public QAbstractItemMo
QList buildTreeRecursive(QList &, InventoryItem*);
InventoryItem * rootItem;
- IconProvider * iconProvider;
QRegExp * regex;
MonotoneDelegate * mtnDelegate;
QString branchName;
============================================================
--- guitone/src/model/Manifest.cpp 68394c64e088df3b3451142c34f6c1851253d0ce
+++ guitone/src/model/Manifest.cpp d2f9630459f1cd73b5de8c64efb704a923e4552b
@@ -20,6 +20,7 @@
#include "Manifest.h"
#include "BasicIOParser.h"
+#include "IconProvider.h"
Manifest::Manifest(QObject *parent) : QAbstractItemModel(parent)
{
@@ -148,17 +149,24 @@ QVariant Manifest::data(const QModelInde
return QVariant();
}
- if (role != Qt::DisplayRole)
- {
- return QVariant();
- }
-
ManifestEntry * entry = static_cast(index.internalPointer());
- switch (index.column())
+
+ if (role == Qt::DisplayRole)
{
- case 0: return QVariant(entry->filename());
- case 1: return QVariant(entry->hash);
+ switch (index.column())
+ {
+ case 0: return QVariant(entry->filename());
+ case 1: return QVariant(entry->hash);
+ }
}
+
+ if (role == Qt::DecorationRole && index.column() == 0)
+ {
+ IconProvider * provider = IconProvider::singleton();
+ if (entry->is_directory) return provider->getPlainFolderIcon();
+ return provider->getPlainFileIcon();
+ }
+
return QVariant();
}
============================================================
--- guitone/src/util/IconProvider.cpp 5db02c473df668132b35cc748eed817b82fd9a30
+++ guitone/src/util/IconProvider.cpp eade6accc5f04c14c3f153b036d08e08e2c81499
@@ -26,7 +26,17 @@ const int IconProvider::CdUp = -1;
#include
const int IconProvider::CdUp = -1;
+IconProvider * IconProvider::instance = 0;
+IconProvider * IconProvider::singleton()
+{
+ if (instance == 0)
+ {
+ instance = new IconProvider();
+ }
+ return instance;
+}
+
/**
* There are 45 possible status combinations, of which 19 are invalid.
* We only provide for the 26 valid ones own icons
@@ -87,7 +97,7 @@ const int IconProvider::CdUp = -1;
* 'RRM': rename_source_target_missing.png
*/
-IconProvider::IconProvider(void)
+IconProvider::IconProvider()
{
QStyle *style = QApplication::style();
@@ -187,9 +197,9 @@ IconProvider::IconProvider(void)
}
}
-IconProvider::~IconProvider(void) {}
+IconProvider::~IconProvider() {}
-QIcon IconProvider::getIcon(InventoryItem* item)
+QIcon IconProvider::getIcon(InventoryItem * item) const
{
if (item->isCdUp())
{
@@ -216,3 +226,14 @@ QIcon IconProvider::getIcon(InventoryIte
return fileIcons.value(0);
}
+
+QIcon IconProvider::getPlainFileIcon() const
+{
+ return fileIcons.value(0);
+}
+
+QIcon IconProvider::getPlainFolderIcon() const
+{
+ return folderIcons.value(0);
+}
+
============================================================
--- guitone/src/util/IconProvider.h 7832476f4f87e91115de31f7a7af5fabe4b12698
+++ guitone/src/util/IconProvider.h 0331678a530715a50344d5fb07943f02ad24bccf
@@ -29,15 +29,20 @@ public:
class IconProvider
{
public:
- IconProvider(void);
- ~IconProvider(void);
- QIcon getIcon(InventoryItem* item);
+ static IconProvider * singleton();
+ ~IconProvider();
+
+ QIcon getIcon(InventoryItem* item) const;
+ QIcon getPlainFileIcon() const;
+ QIcon getPlainFolderIcon() const;
+
static const int CdUp;
private:
- // file and folder icons
- // (maybe we manage it to even include normal file icons here once?!)
+ IconProvider();
+ static IconProvider * instance;
+
QMap fileIcons;
QMap folderIcons;
};
============================================================
--- guitone/src/view/MainWindow.cpp 84beb22ee31de9e5b87343e40c471ec1c89eebfe
+++ guitone/src/view/MainWindow.cpp 1e0d6b1c8dc5305f78a6e72f8dae9cf118ab5866
@@ -37,8 +37,8 @@
#include "About.h"
#include "Settings.h"
#include "ChangesetBrowser.h"
+#include "WorkspaceCreator.h"
#include "Guitone.h"
-#include "WorkspaceCreator.h"
#ifdef Q_WS_MAC
#include "CocoaUtil.h"
============================================================
--- guitone/src/view/dialogs/ChangesetBrowser.cpp d16e851f9106578f41f2ee960e161cc67f96cf88
+++ guitone/src/view/dialogs/ChangesetBrowser.cpp 38bb758efc890621318bfe573b124997c78fb8ce
@@ -21,6 +21,7 @@
#include "ChangesetBrowser.h"
#include "Settings.h"
+#include "RevisionManifest.h"
ChangesetBrowser::ChangesetBrowser(QWidget *parent) : Dialog(parent)
{
@@ -45,8 +46,8 @@ ChangesetBrowser::ChangesetBrowser(QWidg
initTreeWidget();
connect(
- branches, SIGNAL(clicked(QModelIndex)),
- this, SLOT(branchesClicked(QModelIndex))
+ branches, SIGNAL(clicked(const QModelIndex &)),
+ this, SLOT(branchesClicked(const QModelIndex &))
);
connect(
@@ -58,6 +59,14 @@ ChangesetBrowser::ChangesetBrowser(QWidg
changesets->setModel(changesetModel);
changesets->setRootIsDecorated(false);
+ revisionModel = new GetRevision(this);
+ revisionView->setModel(revisionModel);
+
+ connect(
+ changesets, SIGNAL(clicked(const QModelIndex &)),
+ this, SLOT(changesetsClicked(const QModelIndex &))
+ );
+
connect(
pushAll, SIGNAL(clicked()),
this, SLOT(receiveAll())
@@ -67,6 +76,16 @@ ChangesetBrowser::ChangesetBrowser(QWidg
pushMore, SIGNAL(clicked()),
this, SLOT(receiveMore())
);
+
+ connect(
+ changesets, SIGNAL(doubleClicked(const QModelIndex &)),
+ this, SLOT(changesetsDoubleClicked(const QModelIndex &))
+ );
+
+ connect(
+ changesets, SIGNAL(contextMenuRequested(const QModelIndexList &, const QPoint &)),
+ this, SLOT(contextMenuRequested(const QModelIndexList &, const QPoint &))
+ );
}
void ChangesetBrowser::receiveAll()
{
@@ -94,12 +113,19 @@ void ChangesetBrowser::toggleTree()
initTreeWidget();
}
-void ChangesetBrowser::branchesClicked(QModelIndex idx)
+void ChangesetBrowser::branchesClicked(const QModelIndex & idx)
{
QString branch = branchModel->data(idx, Qt::ToolTipRole).toString();
changesetModel->setBranch(branch);
}
+void ChangesetBrowser::changesetsClicked(const QModelIndex & idx)
+{
+ QModelIndex revIdx = changesetModel->index(idx.row(), 3, QModelIndex());
+ QString revision = changesetModel->data(revIdx, Qt::DisplayRole).toString();
+ revisionModel->readRevision(revision);
+}
+
void ChangesetBrowser::initTreeWidget()
{
if (branchModel)
@@ -126,3 +152,42 @@ void ChangesetBrowser::branchesRead()
{
branches->setExpanded(branchModel->index(0, 0, QModelIndex()), true);
}
+
+void ChangesetBrowser::openManifestDialog(const QString & rev)
+{
+ RevisionManifest dlg(this, rev);
+ dlg.exec();
+}
+
+void ChangesetBrowser::changesetsDoubleClicked(const QModelIndex & index)
+{
+ if (!index.isValid()) return;
+ QModelIndex revIdx = changesetModel->index(index.row(), 3, QModelIndex());
+ openManifestDialog(revIdx.data().toString());
+}
+
+void ChangesetBrowser::contextMenuRequested(const QModelIndexList & indexList, const QPoint & pos)
+{
+ if (indexList.size() == 0) return;
+
+ QModelIndex revIdx =
+ changesetModel->index(indexList.at(0).row(), 3, QModelIndex());
+
+ QString rev(revIdx.data().toString());
+
+ QMenu menu(this);
+ QFont activeFont;
+ activeFont.setBold(true);
+
+ QAction * actOpenManifest = menu.addAction(tr("View files in this revision"));
+ actOpenManifest->setFont(activeFont);
+
+ QAction * act = menu.exec(pos);
+ if (act == actOpenManifest)
+ {
+ openManifestDialog(rev);
+ }
+ // TODO: we might want to add more items here, like "Checkout", "Update",
+ // etc.
+}
+
============================================================
--- guitone/src/view/dialogs/ChangesetBrowser.h dd388119b2fdbccfc1bff51ff88ddbb44c1c1e12
+++ guitone/src/view/dialogs/ChangesetBrowser.h 9b78450d35f13ae1a57e9475e69e66f975afbc0f
@@ -26,6 +26,7 @@
#include "Branches.h"
#include "Dialog.h"
#include "ChangesetModel.h"
+#include "GetRevision.h"
class ChangesetBrowser : public Dialog, private Ui::ChangesetBrowser
{
@@ -36,18 +37,23 @@ private slots:
~ChangesetBrowser();
private slots:
- void branchesClicked(QModelIndex idx);
+ void branchesClicked(const QModelIndex &);
+ void changesetsClicked(const QModelIndex &);
void branchesRead();
void toggleTree();
void receiveAll();
void receiveMore();
+ void changesetsDoubleClicked(const QModelIndex &);
+ void contextMenuRequested(const QModelIndexList &, const QPoint &);
private:
void initTreeWidget();
+ void openManifestDialog(const QString &);
bool tree;
Branches * branchModel;
ChangesetModel * changesetModel;
+ GetRevision * revisionModel;
};
#endif
============================================================
--- guitone/src/vocab.h 9badd48e5b9420e8fb663d32e93bab8bc751a93d
+++ guitone/src/vocab.h 514f8d7e143232a98175232e2133efe326200cc5
@@ -1,13 +1,45 @@
#ifndef VOCAB_H
#define VOCAB_H
+//
+// global macros and defines
+//
+
+class Guitone;
+#define APP reinterpret_cast(qApp)
+#define MTN(arg) APP->getMonotoneInstance(arg)
+
+// FIXME: uncomment the following lines if you have compile problems
+// on Windows using MSVC++
+/*
+#ifdef _MSC_VER
+#define __FUNCTION__ ""
+#endif
+*/
+
+#define D(arg) qDebug("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
+#ifndef DEBUG
+#define D(arg) void()
+#endif
+#define W(arg) qWarning("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
+#define C(arg) qCritical("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
+#define F(arg) qFatal("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg)))
+
+//
+// type definitions
+//
+
#include
#include
-typedef QPair FileEntry;
+// used for manifest entries, if the bool var is true, the entry is a directory
+typedef QPair FileEntry;
typedef QList FileEntryList;
-typedef QPair RevisionCert;
+// used for revision certs
+typedef QString CertKey;
+typedef QString CertValue;
+typedef QPair RevisionCert;
typedef QList RevisionCerts;
typedef QList ByteArrayList;