libgit2: Enable fetch function
[TortoiseGit.git] / src / TortoiseProc / Commands / Command.h
blob84c65eff299f44ab6dec4128742d72ac0531a7c9
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2007 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
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.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #pragma once
20 #include "TortoiseProc.h"
21 #include "CmdLineParser.h"
22 #include "TGitPath.h"
23 #include "git.h"
27 /**
28 * \ingroup TortoiseProc
29 * Interface for all command line commands TortoiseProc can execute.
31 class Command
33 public:
34 /**
35 * Executes the command.
37 virtual bool Execute() = 0;
39 void SetParser(const CCmdLineParser& p) {parser = p;}
40 void SetPaths(const CTGitPathList& plist, const CTGitPath path)
42 orgCmdLinePath = path;
43 CString WinPath=path.GetWinPath();
44 if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)
46 if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))
48 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));
50 else
52 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));
55 orgPathList = plist;
56 for (int i = 0; i < plist.GetCount(); ++i)
58 WinPath=plist[i].GetWinPath();
59 CTGitPath p;
60 if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)
62 if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))
64 p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));
66 else
68 p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));
71 else
72 p=plist[i];
73 pathList.AddPath(p);
77 void SetExplorerHwnd(HWND hWnd) {hwndExplorer = hWnd;}
78 protected:
79 CCmdLineParser parser;
80 CTGitPathList pathList;
81 CTGitPathList orgPathList;
82 CTGitPath cmdLinePath;
83 CTGitPath orgCmdLinePath;
84 HWND hwndExplorer;
87 /**
88 * \ingroup TortoiseProc
89 * Factory for the different commands which TortoiseProc executes from the
90 * command line.
92 class CommandServer
94 public:
96 Command * GetCommand(const CString& sCmd);