reactos/rosapps/devutils/vmingw/project.h
2003-01-07 17:59:20 +00:00

296 lines
5.2 KiB
C++

/********************************************************************
* Module: project.h. This is part of Visual-MinGW.
*
* License: Visual-MinGW is covered by GNU General Public License,
* Copyright (C) 2001 Manu B.
* See license.htm for more details.
*
********************************************************************/
#ifndef PROJECT_H
#define PROJECT_H
#include "winui.h"
#include "main.h"
#include "process.h"
#define BUILD_STATLIB 0
#define BUILD_DLL 1
#define BUILD_EXE 2
#define BUILD_GUIEXE 3
#define LANGC 0
#define LANGCPP 1
class CProject;
class CMakefile;
bool CheckFile(CFileItem * file);
class CGeneralDlg : public CDlgBase
{
public:
CGeneralDlg();
virtual ~CGeneralDlg();
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
protected:
private:
CProject *pProject;
CMakefile *pMakefile;
HWND hStatLib;
HWND hDll;
HWND hConsole;
HWND hGuiExe;
HWND hDbgSym;
HWND hLangC;
HWND hLangCpp;
HWND hMkfName;
HWND hMkfDir;
HWND hUserMkf;
HWND hTgtName;
HWND hTgtDir;
};
class CCompilerDlg : public CDlgBase
{
public:
CCompilerDlg();
virtual ~CCompilerDlg();
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
protected:
private:
CProject *pProject;
CMakefile *pMakefile;
HWND hCppFlags;
HWND hWarning;
HWND hOptimiz;
HWND hCFlags;
HWND hIncDirs;
};
class CZipDlg : public CDlgBase
{
public:
CZipDlg();
virtual ~CZipDlg();
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
protected:
private:
CProject *pProject;
CMakefile *pMakefile;
HWND hZipDir;
HWND hZipFlags;
};
class CLinkerDlg : public CDlgBase
{
public:
CLinkerDlg();
virtual ~CLinkerDlg();
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
protected:
private:
CProject *pProject;
CMakefile *pMakefile;
HWND hLdStrip;
HWND hLdOpts;
HWND hLdLibs;
HWND hLibsDirs;
};
class COptionsDlg : public CTabbedDlg
{
public:
COptionsDlg();
virtual ~COptionsDlg();
BOOL EndDlg(int nResult);
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
protected:
private:
CProject *pProject;
CMakefile *pMakefile;
CGeneralDlg GeneralDlg;
CCompilerDlg CompilerDlg;
CLinkerDlg LinkerDlg;
CZipDlg ZipDlg;
};
class CNewModuleDlg : public CDlgBase
{
public:
CNewModuleDlg();
virtual ~CNewModuleDlg();
virtual LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
protected:
private:
CProject *pProject;
};
class CCompiler : public CIniFile
{
public:
CCompiler();
~CCompiler();
bool LoadData(char * fullpath);
char make[64];
char cc[16];
char cFlags[64];
char ldFlags[64];
char wres[16];
char debug[16];
char test[16];
protected:
private:
};
class CMakefile
{
public:
CMakefile();
~CMakefile();
void Init(void);
bool SwitchCurrentDir(void);
void GetFullPath(char * prjFileName, WORD offset, char * name);
void Build(CProjectView * Tree, CProcess* Process);
void SrcList2Buffers(CProjectView * Tree);
void Write(void);
// File.
char szFileName[MAX_PATH];
WORD nFileOffset;
char mkfDir[MAX_PATH];
// Compiler dependent.
char cc[4];
char make[64];
char wres[16];
char test[16];
char target[64];
char tgtDir[MAX_PATH];
UINT buildWhat;
bool debug;
UINT lang;
// Compiler data.
char cppFlags[256];
char warning[64];
char optimize[64];
char cFlags[64];
char incDirs[256];
// Linker data.
char ldStrip[32];
char ldOpts[64];
char ldLibs[64];
char libDirs[256];
// Archiver.
char arFlags[64];
protected:
private:
// Buffers.
char objFile[64];
char srcBuf [1024];
char objBuf [1024];
char resBuf [1024];
char depBuf [256];
};
class CProject //: public CIniFile
{
public:
CProject();
~CProject();
bool NoProject(void);
int CloseDecision(void);
bool New(char * fileName, WORD fileOffset);
bool Open(char * fileName, WORD fileOffset);
bool RelativeToAbsolute(char * relativePath);
bool AddFiles(void);
bool OptionsDlg(void);
bool NewModuleDlg(void);
bool NewModule(char * srcFile, bool createHeader);
void ZipSrcs(void);
void Explore(HWND hwnd);
void Build(void);
void RebuildAll(void);
void RunTarget(void);
void MakeClean(void);
void BuildMakefile(void);
bool SwitchCurrentDir(void);
CMakefile Makefile;
/* May be private members */
int numFiles;
bool loaded;
bool modified;
bool buildMakefile;
int SavePrjFile(int decision);
char szFileName[MAX_PATH];
WORD nFileOffset;
WORD nFileExtension;
char szDirBuffer[MAX_PATH];
char zipDir[MAX_PATH];
char zipFlags[256];
char compilerName[64];
protected:
private:
void Reset();
CIniFile PrjFile;
COptionsDlg _OptionsDlg;
CNewModuleDlg _NewModuleDlg;
int prjVer;
};
#endif