NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
vcsmanager.cpp
Go to the documentation of this file.
1/*****************************************************************************
2 NumeRe: Framework fuer Numerische Rechnungen
3 Copyright (C) 2019 Erik Haenel et al.
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17******************************************************************************/
18
19#include "vcsmanager.hpp"
20#include "filerevisions.hpp"
21#include "../gui/NumeReWindow.h"
22#include "datastructures.h"
23#include <vector>
24#include <string>
25
26std::string replacePathSeparator(const std::string&);
27
39wxString VersionControlSystemManager::getRevisionPath(const wxString& currentFilePath)
40{
41 std::vector<std::string> vDefaultPaths = m_parent->getPathDefs();
42 std::string currentPath = replacePathSeparator(currentFilePath.ToStdString());
43
44 for (size_t i = LOADPATH; i < vDefaultPaths.size(); i++)
45 {
46 if (currentPath.substr(0, vDefaultPaths[i].length()) == vDefaultPaths[i])
47 return vDefaultPaths[i] + "/.revisions" + currentPath.substr(vDefaultPaths[i].length()) + ".revisions";
48 }
49
50 // All other files' revisions are located next to them in the
51 // same folder.
52 return currentFilePath + ".revisions";
53}
54
55
69{
70 wxString revisionPath = getRevisionPath(currentFile);
71
72 if (revisionPath.length())
73 return new FileRevisions(revisionPath);
74
75 return nullptr;
76}
77
78
90bool VersionControlSystemManager::hasRevisions(const wxString& currentFile)
91{
92 wxString revisionPath = getRevisionPath(currentFile);
93
94 if (revisionPath.length())
95 return wxFileExists(revisionPath);
96
97 return false;
98}
99
std::vector< std::string > getPathDefs()
This member function returns the standard path definitions as a vector.
bool hasRevisions(const wxString &currentFile)
This method detects, whether the selected file has revisions.
Definition: vcsmanager.cpp:90
wxString getRevisionPath(const wxString &currentFilePath)
This method returns the path, where the revisions are stored.
Definition: vcsmanager.cpp:39
FileRevisions * getRevisions(const wxString &currentFile)
This method returns the file revisions as pointer.
Definition: vcsmanager.cpp:68
@ LOADPATH
std::string replacePathSeparator(const std::string &)
This function replaces the Windows style path sparators to UNIX style.