/* ** Command & Conquer Generals Zero Hour(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ // GenerateDlg.cpp : implementation file // #include "stdafx.h" #include "Babylon.h" #include "GenerateDlg.h" #include "direct.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CGenerateDlg dialog CGenerateDlg::CGenerateDlg(CWnd* pParent /*=NULL*/) : CDialog(CGenerateDlg::IDD, pParent) { options.format = GN_UNICODE; options.untranslated = GN_USEIDS; langids[0] = LANGID_UNKNOWN; filename[0] = 0; //{{AFX_DATA_INIT(CGenerateDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CGenerateDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGenerateDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CGenerateDlg, CDialog) //{{AFX_MSG_MAP(CGenerateDlg) ON_BN_CLICKED(IDC_SELECTALL, OnSelectall) ON_BN_CLICKED(IDC_INVERT, OnInvert) ON_EN_CHANGE(IDC_PREFIX, OnChangePrefix) ON_BN_CLICKED(IDC_BABYLONSTR, OnBabylonstr) ON_BN_CLICKED(IDC_UNICODE, OnUnicode) ON_BN_CLICKED(IDC_IDS, OnIds) ON_BN_CLICKED(IDC_ORIGINAL, OnOriginal) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CGenerateDlg message handlers BOOL CGenerateDlg::OnInitDialog() { int index; LANGINFO *info; edit = (CEdit *) GetDlgItem ( IDC_PREFIX ); unicode = (CButton *) GetDlgItem ( IDC_UNICODE ); strfile = (CButton *) GetDlgItem ( IDC_BABYLONSTR ); useids = (CButton *) GetDlgItem ( IDC_IDS ); usetext = (CButton *) GetDlgItem ( IDC_ORIGINAL ); list = (CListBox *) GetDlgItem ( IDC_LANGUAGE ); filetext = ( CStatic *) GetDlgItem ( IDC_FILENAME ); CDialog::OnInitDialog(); // TODO: Add extra initialization here unicode->SetCheck ( 1 ); useids->SetCheck ( 1 ); edit->SetWindowText ( "Generals" ); edit->SetLimitText ( 5 ); OnChangePrefix (); index = 0; while ( (info = GetLangInfo ( index )) ) { list->InsertString ( index, info->name ); if ( info->langid == CurrentLanguage ) { list->SetSel ( index ); } index++; } num_langs = index; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CGenerateDlg::OnSelectall() { // TODO: Add your control notification handler code here list->SelItemRange ( TRUE, 0, num_langs-1 ); } void CGenerateDlg::OnInvert() { // TODO: Add your control notification handler code here int index = 0; while ( index < num_langs ) { list->SetSel ( index, !list->GetSel ( index )); index++; } } void CGenerateDlg::OnChangePrefix() { char buffer[30]; edit->GetWindowText ( buffer, 6 ); if ( options.format == GN_BABYLONSTR ) { strcat ( buffer, "_{xx}.str" ); } else { strcat ( buffer, "_{xx}.csf" ); } filetext->SetWindowText ( buffer ); } void CGenerateDlg::OnBabylonstr() { // TODO: Add your control notification handler code here options.format = GN_BABYLONSTR; OnChangePrefix (); unicode->SetCheck ( 0 ); } void CGenerateDlg::OnUnicode() { // TODO: Add your control notification handler code here options.format = GN_UNICODE; OnChangePrefix (); strfile->SetCheck ( 0 ); } void CGenerateDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } void CGenerateDlg::OnOK() { char buffer[30]; int count; int i; // TODO: Add extra validation here edit->GetWindowText ( buffer, sizeof ( filename) -1 ); _getcwd ( filename, sizeof (filename ) -1 ); strcat ( filename, "\\" ); strcat ( filename, buffer ); count = list->GetSelItems ( num_langs, langindices ); if ( !count ) { AfxMessageBox ( "No languages selected" ); return; } num_langs = 0; for ( i = 0; i langid; } } langids[num_langs] = LANGID_UNKNOWN; CDialog::OnOK(); } void CGenerateDlg::OnIds() { options.untranslated = GN_USEIDS; usetext->SetCheck ( 0 ); } void CGenerateDlg::OnOriginal() { options.untranslated = GN_USEORIGINAL; useids->SetCheck ( 0 ); }