+string SVN::lockingToggle()
+{
+ FileName tmpf = FileName::tempName("lyxvcout");
+ if (tmpf.empty()) {
+ LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
+ return N_("Error: Could not generate logfile.");
+ }
+
+ int ret = doVCCommand("svn proplist " + quoteName(onlyFilename(owner_->absFileName()))
+ + " > " + quoteName(tmpf.toFilesystemEncoding()),
+ FileName(owner_->filePath()));
+ if (ret)
+ return string();
+
+ string log;
+ string res = scanLogFile(tmpf, log);
+ bool locking = contains(res, "svn:needs-lock");
+ if (!locking)
+ ret = doVCCommand("svn propset svn:needs-lock ON "
+ + quoteName(onlyFilename(owner_->absFileName()))
+ + " > " + quoteName(tmpf.toFilesystemEncoding()),
+ FileName(owner_->filePath()));
+ else
+ ret = doVCCommand("svn propdel svn:needs-lock "
+ + quoteName(onlyFilename(owner_->absFileName()))
+ + " > " + quoteName(tmpf.toFilesystemEncoding()),
+ FileName(owner_->filePath()));
+ if (ret)
+ return string();
+
+ tmpf.erase();
+ frontend::Alert::warning(_("VCN File Locking"),
+ (locking ? _("Locking property unset.") : _("Locking property set.")) + "\n"
+ + _("Do not forget to commit the locking property into the repository."),
+ true);
+
+ return string("SVN: ") + N_("Locking property set.");
+}
+
+
+bool SVN::lockingToggleEnabled()
+{
+ return true;
+}
+