// LocalizerDlg.h : header file
//

#if !defined(AFX_LOCALIZERDLG_H__CACD7CDC_E926_48EB_8DA8_533D677DE6CD__INCLUDED_)
#define AFX_LOCALIZERDLG_H__CACD7CDC_E926_48EB_8DA8_533D677DE6CD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CLocalizerDlg dialog

#define MAXTAGS 4096

class TagList
{
protected:
int TagTot;
CString Tags[MAXTAGS];
int	IDs[MAXTAGS];
int FindStringIndex(CString str);
int FindIDIndex(int id);
public:
	TagList() {Clear();}
	void AddTag(CString str,int id);
	int	 GetID(CString str);
	int NextFreeId(int start);
	void Clear() {TagTot=0;}
};

class CLocalizerDlg : public CDialog
{
// Construction
public:
	void SaveLangRC();
	void LoadLangRC();
	void RemoveMission(CString &mis_name);
	void Localize(CString &mis_name);
	CString AddLocalizedString(CString mis_name,CString rcname,CString sname);
	CLocalizerDlg(CWnd* pParent = NULL);	// standard constructor
	int NextRCPos();
	int NextHPos();
	int NextHVal();
	void LocalizeAll();
	void LocalizeCampaigns();
	TagList IdList;
	void GetTagList();

	// Dialog Data
	//{{AFX_DATA(CLocalizerDlg)
	enum { IDD = IDD_LOCALIZER_DIALOG };
	CListBox	m_MisList;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CLocalizerDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	int LastRCSlot;
	CString LastRCSearch;
	void LocalizeCampCon(CString str);
	int CountNeededSlots(CString &mis_name);
	int RemoveLineContaining(CString &base,CString contains);
	int RemoveRCEntry(CString &base,CString contains);
	void SetHNextVals();
//	int FindSlotFor(int vcount);
	int GetHighestVal();
	int FindSlotFor(CString misname);
	int NextVal;
	HICON m_hIcon;
	CString RCFile,HFile;
	// Generated message map functions
	//{{AFX_MSG(CLocalizerDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	virtual void OnOK();
	virtual void OnCancel();
	afx_msg void OnLocalize();
	afx_msg void OnExit();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LOCALIZERDLG_H__CACD7CDC_E926_48EB_8DA8_533D677DE6CD__INCLUDED_)
