// Copyright (C) 2011 Fog Creek Software
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
#include "Kiln.h"
#include "QueryDirstate.h"
bool KilnGetUrl(const CString& strPath, CString* pstrKilnUrl)
{
CString strHgRoot;
if (!GetHgRoot(strPath, strHgRoot)) return false;
// Try to get the default path from hgrc.
CString strHgrcPath = strHgRoot + "\\.hg\\hgrc";
CString strDefaultPath;
LPTSTR lpszBuf = strDefaultPath.GetBuffer(MAX_PATH + 1);
DWORD nSize = ::GetPrivateProfileString("paths", "default", "", lpszBuf,
MAX_PATH, strHgrcPath);
strDefaultPath.ReleaseBuffer(nSize);
if (strDefaultPath.IsEmpty()) return false;
// Check whether the repository is a Kiln repository.
CString strLower = strDefaultPath;
strLower.MakeLower();
if (strLower.Find("kilnhg.com/") == -1 && strLower.Find("/kiln/") == -1)
{
return false;
}
if (pstrKilnUrl != NULL) *pstrKilnUrl = strDefaultPath;
return true;
}
void KilnOpenRepo(HWND hWnd, const CString& strPath)
{
CString strKilnUrl;
if (KilnGetUrl(strPath, &strKilnUrl))
{
// Open the repository in the default web browser
::ShellExecute(hWnd, NULL, strKilnUrl, NULL, NULL, SW_SHOW);
}
}
void KilnOpenFiles(HWND hWnd, const CString& strPath, const CAtlList<CString>& listFiles)
{
CString strKilnUrl;
if (KilnGetUrl(strPath, &strKilnUrl))
{
if (strKilnUrl[strKilnUrl.GetLength() - 1] != '/')
strKilnUrl += '/';
strKilnUrl += "Files/";
CString strHgRoot;
GetHgRoot(strPath, strHgRoot);
// Open each file in the default web browser
POSITION position = listFiles.GetHeadPosition();
while (position != NULL)
{
CString strFile = listFiles.GetNext(position);
CString strRelPath;
GetRelPath(strHgRoot, strFile, strRelPath);
::ShellExecute(hWnd, NULL, strKilnUrl + strRelPath, NULL, NULL, SW_SHOW);
}
}
}
|
Loading...