niotso/Tools/FARDive/windows/Dialog/NewArchive.cpp
Fatbag cb751c0bb8 Removed changes by Nicholas. These will need to be re-submitted through Trac and manually validated.
Added BMP (24-bit uncompressed, 8-bit uncompressed, and RLE8) and PNG support to File::ReadImageFile(). So far everything in FileHandler is presumed to be safe with any input file except UTK decompression.

Also started making use of the static keyword in various places to aid the compiler in optimization.
2012-04-06 13:27:40 -05:00

118 lines
No EOL
4.8 KiB
C++

#include "../Windows.hpp"
#include "../GUI.hpp"
#ifndef TTI_INFO_LARGE
#define TTI_INFO_LARGE 4
#endif
namespace NewArchive {
enum {TYPE_FAR, TYPE_DBPF};
void SetType(HWND hDlg, int type){
for(int i=IDC_NA_FARVERSIONTEXT; i<=IDC_NA_FARVERSION; i++)
EnableWindow(GetDlgItem(hDlg, i), type==TYPE_FAR);
for(int i=IDC_NA_DBPFVERSIONTEXT; i<=IDC_NA_DBPFCOMPRESS; i++)
EnableWindow(GetDlgItem(hDlg, i), type==TYPE_DBPF);
}
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){
switch (message){
case WM_INITDIALOG: {
CenterDialog(hDlg);
//Fill the drop-down boxes
HWND hBox = GetDlgItem(hDlg, IDC_NA_TYPE);
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"FAR");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"DBPF");
SendMessage(hBox, CB_SETCURSEL, 0, 0);
hBox = GetDlgItem(hDlg, IDC_NA_FARVERSION);
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"1a");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"1b");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"3");
SendMessage(hBox, CB_SETCURSEL, 0, 0);
hBox = GetDlgItem(hDlg, IDC_NA_DBPFVERSION);
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"1.0");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"1.1");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"2.0");
SendMessage(hBox, CB_SETCURSEL, 0, 0);
hBox = GetDlgItem(hDlg, IDC_NA_INDEXVERSION);
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"7.0");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"7.1");
SendMessage(hBox, CB_INSERTSTRING, -1, (LPARAM) L"3.0");
SendMessage(hBox, CB_SETCURSEL, 0, 0);
//Create the tooltips
HWND FARInfo = CreateWindowEx(0, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL, hInst, NULL),
DBPFInfo = CreateWindowEx(0, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL, hInst, NULL);
TOOLINFO tinfo = {
sizeof(TOOLINFO), //cbSize
TTF_IDISHWND | TTF_SUBCLASS, //uFlags
hDlg, //hwnd
0, //uId
NULL, //rect
0 //hinst
};
tinfo.uId = (UINT_PTR) GetDlgItem(hDlg, IDC_NA_FARINFO);
tinfo.lpszText = (wchar_t*)
L"FAR version 1a is found in The Sims 1.\r\n\r\n"
L"Version 1b appears to be a mistake, in which it was intended to take on the version number 2.\r\n\r\n"
L"1b and 3 are both found exclusively in The Sims Online.";
SendMessage(FARInfo, TTM_SETMAXTIPWIDTH, 2000, 200);
SendMessage(FARInfo, TTM_SETTITLE, TTI_INFO_LARGE, (LPARAM) L"FAR version");
SendMessage(FARInfo, TTM_ADDTOOL, 0, (LPARAM) &tinfo);
SendMessage(FARInfo, TTM_SETDELAYTIME, TTDT_AUTOPOP, 12000);
tinfo.uId = (UINT_PTR) GetDlgItem(hDlg, IDC_NA_DBPFINFO);
tinfo.lpszText = (wchar_t*)
L"DBPF version numbers can be shortened to the form a.b;ix,y, where "
L"a.b is the Archive version and x.y is the Index version.\r\n\r\n"
L"DBPF 1.0;i7.0 is found in The Sims Online and SimCity 4.\r\n\r\n"
L"1.0;i7.0 and 1.1;i7.1 are found in The Sims 2.\r\n\r\n"
L"2.0;i3.0 is found in Spore.";
SendMessage(DBPFInfo, TTM_SETMAXTIPWIDTH, 2000, 200);
SendMessage(DBPFInfo, TTM_SETTITLE, TTI_INFO_LARGE, (LPARAM) L"DBPF version");
SendMessage(DBPFInfo, TTM_ADDTOOL, 0, (LPARAM) &tinfo);
SendMessage(DBPFInfo, TTM_SETDELAYTIME, TTDT_AUTOPOP, 20000);
SetType(hDlg, TYPE_FAR);
} return TRUE;
case WM_CTLCOLORSTATIC:
if((HWND) lParam == GetDlgItem(hDlg, IDC_NA_TYPETEXT)){
SetBkColor((HDC) wParam, GetSysColor(COLOR_WINDOW));
return (INT_PTR) GetSysColorBrush(COLOR_WINDOW);
}
break;
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDC_NA_TYPE:
if(HIWORD(wParam) == CBN_SELCHANGE)
SetType(hDlg, SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0));
break;
case IDOK:
Archive::IsOpen = true;
Archive::IsModified = true;
Archive::Path[0] = '\0'; //No actual path
wcscpy(Archive::Filename, L"Untitled");
Archive::SetWorkspace();
EndDialog(hDlg, 0);
case IDCANCEL:
EndDialog(hDlg, 0);
} break;
case WM_CLOSE:
EndDialog(hDlg, 0);
}
return 0;
}
}