# # # patch "guitone/src/Guitone.cpp" # from [a3673e29c1e23832700d69da44a3d62157d5e193] # to [c9a9565124a9a03a2d6d61b51f0a59650bcaaaf7] # # patch "guitone/src/model/GetRevision.cpp" # from [3fe7773819ed4ef94ca0bb470b5caf4b2d33caa5] # to [cfca83dee8492747c56b3876461f1a0e12025bc2] # # patch "guitone/src/monotone/FileExporter.cpp" # from [f16b44b3a580b963fc66c1407b7a7203b1dc4c40] # to [0f009d4134447bb847670ccbd8cab2c12b5e9923] # # patch "guitone/src/monotone/FileExporter.h" # from [646c474fbb4cb23a22419193b31475705f187796] # to [cb8015d03f0099ae8b43e538fc6dc4c8b2904811] # # patch "guitone/src/monotone/WorkspaceCreator.cpp" # from [ff6dd8f1e13381614edd6a7ee6d8f453d0c1566b] # to [6f9f1276279c82fbaa33892c3615f500c103dd7b] # # patch "guitone/src/monotone/WorkspaceCreator.h" # from [2265014895962e9fd5ad67cb6d7800962e52cea0] # to [89f2bc9696212d97fc99e806388542b8b084a2a1] # # patch "guitone/src/view/MainWindow.cpp" # from [9ef3c4f865905bad693c01929f732595f3a222ca] # to [84beb22ee31de9e5b87343e40c471ec1c89eebfe] # # patch "guitone/src/view/dialogs/RevisionManifest.cpp" # from [b8a500aec70d3b8e3ed02a41c175c48d20e07151] # to [1b26d9455f506e01ea7a6e240ca75f2529d482c9] # ============================================================ --- guitone/src/Guitone.cpp a3673e29c1e23832700d69da44a3d62157d5e193 +++ guitone/src/Guitone.cpp c9a9565124a9a03a2d6d61b51f0a59650bcaaaf7 @@ -47,7 +47,7 @@ bool Guitone::init() if (Settings::getBool("CheckForUpdates", true)) { #ifdef Q_WS_MAC - CocoaUtil::initialize(); + //CocoaUtil::initialize(); #else updateDialog = new ApplicationUpdate(NULL); if (updateDialog->updateAvailable()) ============================================================ --- guitone/src/model/GetRevision.cpp 3fe7773819ed4ef94ca0bb470b5caf4b2d33caa5 +++ guitone/src/model/GetRevision.cpp cfca83dee8492747c56b3876461f1a0e12025bc2 @@ -215,7 +215,7 @@ QVariant GetRevision::data(const QModelI if (role == Qt::FontRole && index.column() == 0) { QFont font; - font.setPointSize(8); + font.setPointSize(9); return QVariant(font); } else ============================================================ --- guitone/src/monotone/FileExporter.cpp f16b44b3a580b963fc66c1407b7a7203b1dc4c40 +++ guitone/src/monotone/FileExporter.cpp 0f009d4134447bb847670ccbd8cab2c12b5e9923 @@ -24,10 +24,10 @@ #include -FileExporter::FileExporter(QObject * parent, QString rev, QString p) +FileExporter::FileExporter(QObject * parent, QString rev, QDir dir) : QObject(parent), revision(rev) { - rootDir = QDir(p); + rootDir = dir; Q_ASSERT(rootDir.exists()); } @@ -73,7 +73,7 @@ bool FileExporter::exportFile(const File { if (entry.second) { - if (!rootDir.mkpath(entry.first)) + if (!entry.first.isEmpty() && !rootDir.mkpath(entry.first)) { C("Cannot create directory"); return false; ============================================================ --- guitone/src/monotone/FileExporter.h 646c474fbb4cb23a22419193b31475705f187796 +++ guitone/src/monotone/FileExporter.h cb8015d03f0099ae8b43e538fc6dc4c8b2904811 @@ -29,7 +29,7 @@ public: { Q_OBJECT public: - FileExporter(QObject *, QString, QString); + FileExporter(QObject *, QString, QDir); ~FileExporter(); virtual bool run(const FileEntryList &); ============================================================ --- guitone/src/monotone/WorkspaceCreator.cpp ff6dd8f1e13381614edd6a7ee6d8f453d0c1566b +++ guitone/src/monotone/WorkspaceCreator.cpp 6f9f1276279c82fbaa33892c3615f500c103dd7b @@ -25,8 +25,8 @@ #include #include -WorkspaceCreator::WorkspaceCreator(QObject * parent, QString rev, QString path) - : FileExporter(parent, rev, path) +WorkspaceCreator::WorkspaceCreator(QObject * parent, QString rev, QDir dir) + : FileExporter(parent, rev, dir) {} WorkspaceCreator::~WorkspaceCreator() @@ -61,7 +61,7 @@ bool WorkspaceCreator::run() bool ok; QString branch = QInputDialog::getItem( NULL, tr("Select a branch"), - tr("The selected revision has more than one " + tr("The selected revision has more than one\n" "branch cert attached - please select one:"), branches, 0, false, &ok); if (!ok || branch.isEmpty()) @@ -102,15 +102,15 @@ bool WorkspaceCreator::run() Q_ASSERT(revfile.write(rev.toLatin1())); revfile.close(); - // _MTN/version - QFile verfile(rootDir.filePath("version")); - if (!revfile.open(QIODevice::WriteOnly)) + // _MTN/format + QFile formatfile(rootDir.filePath("format")); + if (!formatfile.open(QIODevice::WriteOnly)) { - C("Can't open version for writing"); + C("Can't open format for writing"); return false; } - Q_ASSERT(verfile.write(QString("2\n").toLatin1())); - verfile.close(); + Q_ASSERT(formatfile.write(QString("2\n").toLatin1())); + formatfile.close(); // _MTN/log (initally empty) QFile logfile(rootDir.filePath("log")); @@ -130,7 +130,7 @@ bool WorkspaceCreator::run() } // the keydir entry is not needed and automatically added to the // list of options on the first commit - QString options = QString("database \"%1\"\n\nbranch \"%2\"\n") + QString options = QString("database \"%1\"\nbranch \"%2\"\n") .arg(MonotoneDelegate::getDatabaseFilePath(this)) .arg(selectedBranch); Q_ASSERT(optfile.write(options.toLatin1())); ============================================================ --- guitone/src/monotone/WorkspaceCreator.h 2265014895962e9fd5ad67cb6d7800962e52cea0 +++ guitone/src/monotone/WorkspaceCreator.h 89f2bc9696212d97fc99e806388542b8b084a2a1 @@ -27,7 +27,7 @@ public: { Q_OBJECT public: - WorkspaceCreator(QObject *, QString, QString); + WorkspaceCreator(QObject *, QString, QDir); ~WorkspaceCreator(); bool run(); }; ============================================================ --- guitone/src/view/MainWindow.cpp 9ef3c4f865905bad693c01929f732595f3a222ca +++ guitone/src/view/MainWindow.cpp 84beb22ee31de9e5b87343e40c471ec1c89eebfe @@ -38,6 +38,7 @@ #include "Settings.h" #include "ChangesetBrowser.h" #include "Guitone.h" +#include "WorkspaceCreator.h" #ifdef Q_WS_MAC #include "CocoaUtil.h" @@ -588,7 +589,21 @@ void MainWindow::on_actionCheckout_revis void MainWindow::on_actionCheckout_revision_triggered() { CheckoutRevision dialog(this); - dialog.execDocumentModal(); + int ret = dialog.execDocumentModal(); + + if (ret == 0) + { + QDir checkoutDir = dialog.getSelectedCheckoutDirectory(); + QString revision = dialog.getSelectedRevision(); + WorkspaceCreator creator(this, revision, checkoutDir); + + if (!creator.run()) + { + C("Could not create workspace."); + return; + } + emit loadWorkspace(checkoutDir.absolutePath()); + } } // FIXME: the next two handlers should probably ensure that the according dialog ============================================================ --- guitone/src/view/dialogs/RevisionManifest.cpp b8a500aec70d3b8e3ed02a41c175c48d20e07151 +++ guitone/src/view/dialogs/RevisionManifest.cpp 1b26d9455f506e01ea7a6e240ca75f2529d482c9 @@ -199,7 +199,7 @@ void RevisionManifest::saveAllFiles() QFileDialog::getExistingDirectory(0, tr("Select your export directory...")); if (!exportDir.isEmpty()) { - FileExporter exporter(this, revision, exportDir); + FileExporter exporter(this, revision, QDir(exportDir)); FileEntryList entries = extractSelectedEntries(list); if (!exporter.run(entries)) @@ -233,7 +233,7 @@ void RevisionManifest::saveSelectedFiles QFileDialog::getExistingDirectory(0, tr("Select your export directory...")); if (!exportDir.isEmpty()) { - FileExporter exporter(this, revision, exportDir); + FileExporter exporter(this, revision, QDir(exportDir)); if (!exporter.run(entries)) { QMessageBox::critical(