mirror of
https://github.com/leozide/leocad
synced 2024-12-30 22:23:45 +01:00
115 lines
2.4 KiB
C++
115 lines
2.4 KiB
C++
#include "lc_global.h"
|
|
#include "leocad.h"
|
|
#include "texdlg.h"
|
|
#include "library.h"
|
|
#include "project.h"
|
|
#include "globals.h"
|
|
#include "texture.h"
|
|
#include "lc_application.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTexturesDlg dialog
|
|
|
|
|
|
CTexturesDlg::CTexturesDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CTexturesDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CTexturesDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CTexturesDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CTexturesDlg)
|
|
DDX_Control(pDX, ID_LIBTEX_LIST, m_List);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTexturesDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CTexturesDlg)
|
|
ON_BN_CLICKED(ID_LIBTEX_ADD, OnLibtexAdd)
|
|
ON_BN_CLICKED(ID_LIBTEX_REMOVE, OnLibtexRemove)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTexturesDlg message handlers
|
|
|
|
BOOL CTexturesDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
UpdateList();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CTexturesDlg::OnOK()
|
|
{
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CTexturesDlg::OnLibtexAdd()
|
|
{
|
|
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
|
"All Image Files|*.bmp;*.gif;*.jpg;*.png|JPEG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|BMP Files (*.bmp)|*.bmp|PNG Files (*.png)|*.png|All Files (*.*)|*.*||", this);
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
lcGetPiecesLibrary()->ImportTexture(dlg.GetPathName());
|
|
UpdateList();
|
|
}
|
|
}
|
|
|
|
void CTexturesDlg::OnLibtexRemove()
|
|
{
|
|
int i, selected = 0;
|
|
|
|
for (i = 0; i < m_List.GetCount(); i++)
|
|
if (m_List.GetSel(i))
|
|
selected++;
|
|
|
|
// Nothing to be done
|
|
if (selected == 0)
|
|
return;
|
|
|
|
char** names = (char**)malloc(selected*sizeof(char**));
|
|
|
|
for (selected = 0, i = 0; i < m_List.GetCount(); i++)
|
|
{
|
|
if (m_List.GetSel(i))
|
|
{
|
|
names[selected] = (char*)m_List.GetItemDataPtr (i);;
|
|
selected++;
|
|
}
|
|
}
|
|
|
|
lcGetPiecesLibrary()->DeleteTextures(names, selected);
|
|
|
|
free (names);
|
|
|
|
UpdateList();
|
|
}
|
|
|
|
void CTexturesDlg::UpdateList()
|
|
{
|
|
PiecesLibrary *pLib = lcGetPiecesLibrary();
|
|
|
|
m_List.ResetContent();
|
|
|
|
for (int i = 0; i < pLib->GetTextureCount(); i++)
|
|
{
|
|
int index = m_List.AddString (pLib->GetTexture(i)->m_strName);
|
|
m_List.SetItemDataPtr(index, pLib->GetTexture(i)->m_strName);
|
|
}
|
|
}
|