D:/Zythum/DinoKod/MapEditor/BrushObjectsDialog.cpp

00001 // BrushObjectsDialog.cpp : fichier d'implémentation
00002 //
00003 
00004 #include "stdafx.h"
00005 #include "MapEditor.h"
00006 #include "BrushObjectsDialog.h"
00007 
00008 
00009 // Boîte de dialogue CBrushObjectsDialog
00010 
00011 IMPLEMENT_DYNAMIC(CBrushObjectsDialog, CDialog)
00012 CBrushObjectsDialog::CBrushObjectsDialog(CWnd* pParent /*=NULL*/)
00013         : CDialog(CBrushObjectsDialog::IDD, pParent)
00014 {
00015         m_hMutex = CreateMutex( NULL, FALSE, NULL );
00016 }
00017 
00018 CBrushObjectsDialog::~CBrushObjectsDialog()
00019 {
00020         CloseHandle( m_hMutex );
00021 }
00022 
00023 void CBrushObjectsDialog::DoDataExchange(CDataExchange* pDX)
00024 {
00025         CDialog::DoDataExchange(pDX);
00026         DDX_Control(pDX, IDC_LIST_OBJECTS, m_ListObjects);
00027         DDX_Control(pDX, IDC_OBJECTS_DIRECTORY, m_ObjectsDirectory);
00028         DDX_Control(pDX, IDC_BUTTON_VIEWLIST, m_ButtonViewList);
00029         DDX_Control(pDX, IDC_BUTTON_VIEWLARGEICON, m_ButtonViewLargeIcon);
00030         DDX_Control(pDX, IDC_BUTTON_VIEWSMALLICON, m_ButtonViewSmallIcon);
00031         DDX_Control(pDX, IDC_BUTTON_VIEWREPORT, m_ButtonViewReport);
00032         DDX_Control(pDX, IDC_RADIO_CREATE, m_ButtonCreate);
00033         DDX_Control(pDX, IDC_RADIO_MOVE, m_ButtonMove);
00034         DDX_Control(pDX, IDC_RADIO_DELETE, m_ButtonDelete);
00035 }
00036 
00037 
00038 BEGIN_MESSAGE_MAP(CBrushObjectsDialog, CDialog)
00039         ON_BN_CLICKED(IDC_BUTTON_VIEWLIST, OnBnClickedButtonViewlist)
00040         ON_BN_CLICKED(IDC_BUTTON_VIEWLARGEICON, OnBnClickedButtonViewlargeicon)
00041         ON_BN_CLICKED(IDC_BUTTON_VIEWSMALLICON, OnBnClickedButtonViewsmallicon)
00042         ON_BN_CLICKED(IDC_BUTTON_VIEWREPORT, OnBnClickedButtonViewreport)
00043         ON_BN_CLICKED(IDC_BUTTON_RELOAD, OnBnClickedButtonReload)
00044         ON_BN_CLICKED(IDC_RADIO_CREATE, OnBnClickedRadioCreate)
00045         ON_BN_CLICKED(IDC_RADIO_DELETE, OnBnClickedRadioDelete)
00046         ON_BN_CLICKED(IDC_RADIO_MOVE, OnBnClickedRadioMove)
00047 END_MESSAGE_MAP()
00048 
00049 
00050 // Gestionnaires de messages CBrushObjectsDialog
00051 
00052 BOOL CBrushObjectsDialog::OnInitDialog()
00053 {
00054         CDialog::OnInitDialog();
00055 
00056         // TODO :  Ajoutez ici une initialisation supplémentaire
00057         char    pDirectory[1024];
00058 
00059         strcpy( pDirectory, theApp.GetpCurrentDirectory() );
00060         strcat( pDirectory, "\\Models\\Objects" );
00061 
00062         m_ObjectsDirectory.SetWindowText( pDirectory );
00063 
00064         m_ButtonViewList.SetIcon( LoadIcon( theApp.m_hInstance, MAKEINTRESOURCE( IDI_VWLIST ) ) );
00065         m_ButtonViewSmallIcon.SetIcon( LoadIcon( theApp.m_hInstance, MAKEINTRESOURCE( IDI_VWSMLIC ) ) );
00066         m_ButtonViewLargeIcon.SetIcon( LoadIcon( theApp.m_hInstance, MAKEINTRESOURCE( IDI_VWLRGIC ) ) );
00067         m_ButtonViewReport.SetIcon( LoadIcon( theApp.m_hInstance, MAKEINTRESOURCE( IDI_VWDLTS ) ) );
00068 
00069         m_ListObjects.ModifyStyle( LVS_TYPEMASK, LVS_LIST );
00070 
00071         m_ButtonCreate.SetCheck( BST_CHECKED );
00072 
00073         Reload();
00074 
00075         return TRUE;  // return TRUE unless you set the focus to a control
00076         // EXCEPTION : les pages de propriétés OCX devraient retourner FALSE
00077 }
00078 
00079 void CBrushObjectsDialog::OnOK()
00080 {
00081         // TODO : ajoutez ici votre code spécialisé et/ou l'appel de la classe de base
00082 
00083         //CDialog::OnOK();
00084 }
00085 
00086 void CBrushObjectsDialog::OnCancel()
00087 {
00088         // TODO : ajoutez ici votre code spécialisé et/ou l'appel de la classe de base
00089 
00090         //CDialog::OnCancel();
00091 }
00092 
00093 void CBrushObjectsDialog::Reload()
00094 {
00095         DWORD   ThreadId;
00096 
00097         CreateThread( NULL, 0, ThreadReloadProc, this, 0, &ThreadId );
00098 }
00099 
00100 DWORD WINAPI CBrushObjectsDialog::ThreadReloadProc( LPVOID lpParameter )
00101 {
00102         CFileFind       FileFind;
00103         
00104         CBrushObjectsDialog*    pThis = (CBrushObjectsDialog*)lpParameter;
00105 
00106         WaitForSingleObject( pThis->m_hMutex, INFINITE );
00107         
00108         pThis->m_ListObjects.DeleteAllItems();
00109 
00110         //      Recherche les models
00111         CString sDir;
00112         pThis->m_ObjectsDirectory.GetWindowText( sDir );
00113         pThis->SearchModels( sDir, sDir );
00114 
00115         // Redessine les items
00116         pThis->m_ListObjects.RedrawItems( 0, pThis->m_ListObjects.GetItemCount() - 1);
00117 
00118         ReleaseMutex( pThis->m_hMutex );
00119 
00120         return 0;
00121 }
00122 
00123 void CBrushObjectsDialog::SearchModels( CString& sModelDir, CString& sDir )
00124 {
00125         CString         sSearchDir;
00126         CFileFind       FileFind;
00127 
00128         sSearchDir = sDir + "\\*";
00129 
00130         BOOL bWorking = FileFind.FindFile( sSearchDir, 0 );
00131         while( bWorking )
00132         {
00133                 bWorking = FileFind.FindNextFile();
00134                 if( FileFind.IsDirectory() )
00135                 {
00136                         if( FileFind.GetFilePath().Right( 1 ).CompareNoCase( "." ) == 0 )
00137                                 continue;
00138                         if( FileFind.GetFilePath().Right( 2 ).CompareNoCase( ".." ) == 0 )
00139                                 continue;
00140                         SearchModels( sModelDir, FileFind.GetFilePath() );
00141                 }
00142 
00143                 if( FileFind.GetFilePath().Right( 3 ).CompareNoCase( "mdl" ) == 0 )
00144                 {
00145                         int     i = sModelDir.GetLength();
00146                         int     j = FileFind.GetFilePath().GetLength();
00147                         m_ListObjects.InsertItem( m_ListObjects.GetItemCount(), FileFind.GetFilePath().Right( j - i - 1 ) );
00148                 }
00149 
00150 /*
00151                 char* pFile = FileFind.GetFilePath().GetBuffer( 10 );
00152                 
00153                 if( strnicmp( "mdl", &pFile[strlen( pFile ) - 3], 3 ) == 0 )
00154                         m_ListObjects.InsertItem( m_ListObjects.GetItemCount(), FileFind.GetFileName() );
00155 
00156                 FileFind.GetFilePath().ReleaseBuffer();*/
00157         }
00158 }
00159 
00160 
00161 void CBrushObjectsDialog::OnBnClickedButtonViewlist()
00162 {
00163         m_ListObjects.ModifyStyle( LVS_TYPEMASK, LVS_LIST );
00164 }
00165 
00166 void CBrushObjectsDialog::OnBnClickedButtonViewlargeicon()
00167 {
00168         m_ListObjects.ModifyStyle( LVS_TYPEMASK, LVS_ICON );
00169 }
00170 
00171 void CBrushObjectsDialog::OnBnClickedButtonViewsmallicon()
00172 {
00173         m_ListObjects.ModifyStyle( LVS_TYPEMASK, LVS_SMALLICON );
00174 }
00175 
00176 void CBrushObjectsDialog::OnBnClickedButtonViewreport()
00177 {
00178         m_ListObjects.ModifyStyle( LVS_TYPEMASK, LVS_REPORT );
00179 }
00180 
00181 char* CBrushObjectsDialog::GetpObjectsName()
00182 {
00183         int     nItem = m_ListObjects.GetNextItem( -1, LVNI_SELECTED);
00184 
00185         if( nItem == -1 )
00186                 return NULL;
00187 
00188         m_ListObjects.GetItemText( nItem, 0, m_pCurrentObjectsName, sizeof( m_pCurrentObjectsName ) );
00189 
00190         // Supprime l'extension
00191         for( int i = (int)strlen( m_pCurrentObjectsName ) - 1; i > 0; i -- )
00192         {
00193                 if( m_pCurrentObjectsName[i] == '.' )
00194                 {
00195                         m_pCurrentObjectsName[i] = '\0';
00196                         break;
00197                 }
00198         }
00199 
00200         return m_pCurrentObjectsName;
00201 }
00202 
00203 
00204 void CBrushObjectsDialog::OnBnClickedButtonReload()
00205 {
00206         Reload();
00207 }
00208 
00209 void CBrushObjectsDialog::OnBnClickedRadioCreate()
00210 {
00211         m_ListObjects.EnableWindow( TRUE );
00212 }
00213 
00214 void CBrushObjectsDialog::OnBnClickedRadioMove()
00215 {
00216         m_ListObjects.EnableWindow( FALSE );
00217 }
00218 
00219 void CBrushObjectsDialog::OnBnClickedRadioDelete()
00220 {
00221         m_ListObjects.EnableWindow( FALSE );
00222 }
00223 

Generated on Sun Mar 25 20:02:12 2007 for Zythum Project by  doxygen 1.5.1-p1