2017-03-15 19:29:34 +00:00
|
|
|
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
|
|
//
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU Affero General Public License as
|
|
|
|
// published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
// ChooseDir.cpp : implementation file
|
|
|
|
//
|
|
|
|
|
|
|
|
#include "nel/misc/types_nl.h"
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "master.h"
|
|
|
|
#include "ChooseDir.h"
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
#define new DEBUG_NEW
|
|
|
|
#undef THIS_FILE
|
|
|
|
static char THIS_FILE[] = __FILE__;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CChooseDir dialog
|
|
|
|
|
|
|
|
|
|
|
|
CChooseDir::CChooseDir(CWnd* pParent /*=NULL*/)
|
|
|
|
: CDialog(CChooseDir::IDD, pParent)
|
|
|
|
{
|
|
|
|
//{{AFX_DATA_INIT(CChooseDir)
|
|
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
|
|
//}}AFX_DATA_INIT
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
void CChooseDir::setPath (const string &path)
|
|
|
|
{
|
|
|
|
_Path = path;
|
|
|
|
_Sel = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
BOOL CChooseDir::OnInitDialog ()
|
|
|
|
{
|
|
|
|
WIN32_FIND_DATA findData;
|
|
|
|
HANDLE hFind;
|
|
|
|
CListBox *pLB = (CListBox*)GetDlgItem(IDC_LIST);
|
|
|
|
|
|
|
|
SetCurrentDirectory (_Path.c_str());
|
|
|
|
hFind = FindFirstFile ("*.*", &findData);
|
|
|
|
|
|
|
|
while (hFind != INVALID_HANDLE_VALUE)
|
|
|
|
{
|
|
|
|
|
|
|
|
if ((stricmp (findData.cFileName, ".") != 0) && (stricmp (findData.cFileName, "..") != 0))
|
|
|
|
{
|
|
|
|
if (findData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
|
|
|
|
{
|
|
|
|
pLB->InsertString (-1, findData.cFileName);
|
|
|
|
string tmp = findData.cFileName;
|
|
|
|
_Names.push_back (tmp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (FindNextFile (hFind, &findData) == 0)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
FindClose (hFind);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
const char *CChooseDir::getSelected ()
|
|
|
|
{
|
|
|
|
if (_Names.size() == 0)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
if (_Sel == LB_ERR)
|
|
|
|
return _Names[0].c_str();
|
|
|
|
else
|
|
|
|
return _Names[_Sel].c_str();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
void CChooseDir::DoDataExchange(CDataExchange* pDX)
|
|
|
|
{
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
//{{AFX_DATA_MAP(CChooseDir)
|
|
|
|
// NOTE: the ClassWizard will add DDX and DDV calls here
|
|
|
|
//}}AFX_DATA_MAP
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CChooseDir, CDialog)
|
|
|
|
//{{AFX_MSG_MAP(CChooseDir)
|
|
|
|
ON_LBN_SELCHANGE(IDC_LIST, OnSelChangeList)
|
|
|
|
//}}AFX_MSG_MAP
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CChooseDir message handlers
|
|
|
|
|
|
|
|
void CChooseDir::OnSelChangeList()
|
|
|
|
{
|
|
|
|
// TODO: Add your control notification handler code here
|
|
|
|
CListBox *pLB = (CListBox*)GetDlgItem(IDC_LIST);
|
|
|
|
_Sel = pLB->GetCurSel();
|
|
|
|
}
|