mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-25 16:44:46 -04:00
github publish
This commit is contained in:
commit
506e23bf32
542 changed files with 120675 additions and 0 deletions
184
mapedit/ItemIcons/DlgOpen.cpp
Normal file
184
mapedit/ItemIcons/DlgOpen.cpp
Normal file
|
@ -0,0 +1,184 @@
|
|||
// DlgOpen.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ItemIcons.h"
|
||||
#include "iconviewerbutton.h"
|
||||
#include "DlgOpen.h"
|
||||
|
||||
|
||||
// DlgOpen dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(DlgOpen, CDialog)
|
||||
DlgOpen::DlgOpen(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(DlgOpen::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
DlgOpen::~DlgOpen()
|
||||
{
|
||||
}
|
||||
|
||||
void DlgOpen::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
for (int i=0;i<18;i++)
|
||||
DDX_Control(pDX, IDC_ICON1+i, icons[i]);
|
||||
DDX_Control(pDX, IDC_LIST, wList);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(DlgOpen, CDialog)
|
||||
ON_BN_CLICKED(IDC_BROWSE, OnBnClickedBrowse)
|
||||
ON_LBN_DBLCLK(IDC_LIST, OnLbnDblclkList)
|
||||
ON_WM_DESTROY()
|
||||
ON_LBN_SELCHANGE(IDC_LIST, OnLbnSelchangeList)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// DlgOpen message handlers
|
||||
|
||||
BOOL DlgOpen::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
ReadFolder();
|
||||
_iconlib=new char[ICONLIBSIZE];
|
||||
ZeroMemory(_iconlib,ICONLIBSIZE);
|
||||
for (int i=0;i<18;i++) icons[i]._data=GETICONADDR(i);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void DlgOpen::ReadFolder(void)
|
||||
{
|
||||
wList.ResetContent();
|
||||
CFileFind fnd;
|
||||
BOOL ok=fnd.FindFile(_umisteni+_T("ikony*.lib"));
|
||||
while (ok)
|
||||
{
|
||||
ok=fnd.FindNextFile();
|
||||
wList.AddString(fnd.GetFileName());
|
||||
}
|
||||
CString createnew;
|
||||
createnew.LoadString(IDS_CREATENEW);
|
||||
int index=wList.AddString(createnew);
|
||||
wList.SetItemData(index,1);
|
||||
}
|
||||
|
||||
static int WINAPI PosBrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
|
||||
{
|
||||
const _TCHAR *curpath=(const _TCHAR *)lpData;
|
||||
if (uMsg == BFFM_INITIALIZED)
|
||||
{
|
||||
if (curpath && curpath[0])
|
||||
{
|
||||
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)((LPCSTR)curpath));
|
||||
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)((LPCSTR)curpath));
|
||||
}
|
||||
}
|
||||
else if (uMsg == BFFM_SELCHANGED)
|
||||
{
|
||||
_TCHAR buff[_MAX_PATH];
|
||||
if (SHGetPathFromIDList((LPITEMIDLIST)lParam,buff))
|
||||
{
|
||||
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)buff);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
static bool PathBrowser(HWND hWnd, _TCHAR *path /* MAX_PATH size */)
|
||||
{
|
||||
BROWSEINFO brw;
|
||||
memset(&brw,0,sizeof(brw));
|
||||
brw.hwndOwner=hWnd;
|
||||
brw.pidlRoot=NULL;
|
||||
brw.pszDisplayName=path;
|
||||
brw.lParam=(LPARAM)path;
|
||||
brw.ulFlags= BIF_RETURNONLYFSDIRS |BIF_STATUSTEXT|BIF_USENEWUI ;
|
||||
brw.lpfn = (BFFCALLBACK)(PosBrowseCallbackProc);
|
||||
LPITEMIDLIST il=SHBrowseForFolder( &brw );
|
||||
if (il==NULL) return false;
|
||||
SHGetPathFromIDList(il,path);
|
||||
IMalloc *shmalloc;
|
||||
SHGetMalloc(&shmalloc);
|
||||
shmalloc->Free(il);
|
||||
if (path[0]==0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void DlgOpen::OnBnClickedBrowse()
|
||||
{
|
||||
_TCHAR buffer[MAX_PATH+1];
|
||||
_tcsncpy(buffer,_umisteni,MAX_PATH);
|
||||
if (PathBrowser(*this,buffer))
|
||||
_umisteni=buffer;
|
||||
if (_umisteni.GetLength() && _umisteni[_umisteni.GetLength()-1]!='\\')
|
||||
_umisteni=_umisteni+'\\';
|
||||
ReadFolder();
|
||||
}
|
||||
|
||||
void DlgOpen::OnOK()
|
||||
{
|
||||
int sel=wList.GetCurSel();
|
||||
if (sel<0) return;
|
||||
CString name;
|
||||
if (wList.GetItemData(sel)==1)
|
||||
{
|
||||
int i=-1;
|
||||
do
|
||||
{
|
||||
i++;
|
||||
name.Format(_T("IKONY%02d.LIB"),i);
|
||||
_selected=_umisteni+name;
|
||||
}
|
||||
while (_taccess( _selected,0)==0);
|
||||
}
|
||||
else
|
||||
{
|
||||
wList.GetText(sel,name);
|
||||
_selected=_umisteni+name;
|
||||
}
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
|
||||
CString DlgOpen::GetSelectedFile()
|
||||
{
|
||||
return _selected;
|
||||
}
|
||||
|
||||
void DlgOpen::OnLbnDblclkList()
|
||||
{
|
||||
OnOK();
|
||||
}
|
||||
|
||||
void DlgOpen::OnDestroy()
|
||||
{
|
||||
delete [] _iconlib;
|
||||
}
|
||||
|
||||
void DlgOpen::OnLbnSelchangeList()
|
||||
{
|
||||
ZeroMemory(_iconlib,ICONLIBSIZE);
|
||||
int sel=wList.GetCurSel();
|
||||
if (sel>=0)
|
||||
{
|
||||
CString name;
|
||||
if (wList.GetItemData(sel)!=1)
|
||||
{
|
||||
wList.GetText(sel,name);
|
||||
_selected=_umisteni+name;
|
||||
HANDLE h=CreateFile(_selected,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
|
||||
if (h!=INVALID_HANDLE_VALUE)
|
||||
{
|
||||
DWORD rd;
|
||||
ReadFile(h,_iconlib,ICONLIBSIZE,&rd,0);
|
||||
CloseHandle(h);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i=0;i<18;i++) icons[i].Invalidate();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue