Added support for named Symbols sets.
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3336 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
ad498291cf
commit
fa3bdf5e17
7 changed files with 442 additions and 121 deletions
|
@ -176,6 +176,7 @@ Version History
|
||||||
- Added option for compile & run
|
- Added option for compile & run
|
||||||
- Added compressor setting option
|
- Added compressor setting option
|
||||||
- Added support for lzma compression
|
- Added support for lzma compression
|
||||||
|
- Added named Symbols sets.
|
||||||
|
|
||||||
Copyright Information
|
Copyright Information
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -31,6 +31,7 @@ NSCRIPTDATA g_sdata;
|
||||||
NRESIZEDATA g_resize;
|
NRESIZEDATA g_resize;
|
||||||
NFINDREPLACE g_find;
|
NFINDREPLACE g_find;
|
||||||
extern NTOOLBAR g_toolbar;
|
extern NTOOLBAR g_toolbar;
|
||||||
|
int g_symbol_set_mode;
|
||||||
|
|
||||||
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow) {
|
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow) {
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
@ -42,8 +43,8 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd
|
||||||
my_memset(&g_find,0,sizeof(NFINDREPLACE));
|
my_memset(&g_find,0,sizeof(NFINDREPLACE));
|
||||||
g_sdata.hInstance=GetModuleHandle(0);
|
g_sdata.hInstance=GetModuleHandle(0);
|
||||||
g_sdata.script_alloced=false;
|
g_sdata.script_alloced=false;
|
||||||
g_sdata.defines = NULL;
|
g_sdata.symbols = NULL;
|
||||||
RestoreDefines();
|
RestoreSymbols();
|
||||||
|
|
||||||
if (!InitBranding()) {
|
if (!InitBranding()) {
|
||||||
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
||||||
|
@ -180,7 +181,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
}
|
}
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
SaveDefines();
|
SaveSymbols();
|
||||||
SaveCompressor();
|
SaveCompressor();
|
||||||
SaveMRUList();
|
SaveMRUList();
|
||||||
SaveWindowPos(g_sdata.hwnd);
|
SaveWindowPos(g_sdata.hwnd);
|
||||||
|
@ -798,6 +799,53 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EnableSymbolSetButtons(HWND hwndDlg)
|
||||||
|
{
|
||||||
|
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETCOUNT, 0, 0);
|
||||||
|
if(n > 0) {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDCLEAR), TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDSAVE), TRUE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDCLEAR), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDSAVE), FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSymbols(HWND hwndDlg, char **symbols)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_RESETCONTENT , 0, 0);
|
||||||
|
if (symbols) {
|
||||||
|
while (symbols[i]) {
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_ADDSTRING, 0, (LPARAM)symbols[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EnableSymbolSetButtons(hwndDlg);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
char **GetSymbols(HWND hwndDlg)
|
||||||
|
{
|
||||||
|
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETCOUNT, 0, 0);
|
||||||
|
char **symbols = NULL;
|
||||||
|
if(n > 0) {
|
||||||
|
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT, (n+1)*sizeof(char *));
|
||||||
|
symbols = (char **)GlobalLock(hMem);
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
int len = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXTLEN, (WPARAM)i, 0);
|
||||||
|
symbols[i] = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char));
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXT, (WPARAM)i, (LPARAM)symbols[i]);
|
||||||
|
}
|
||||||
|
symbols[n] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return symbols;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
switch(msg) {
|
switch(msg) {
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
@ -810,18 +858,38 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0);
|
rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0);
|
||||||
|
|
||||||
i = 0;
|
SetSymbols(hwndDlg, g_sdata.symbols);
|
||||||
if (g_sdata.defines) {
|
|
||||||
while (g_sdata.defines[i]) {
|
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)g_sdata.defines[i]);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
|
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
|
||||||
SetFocus(GetDlgItem(hwndDlg, IDC_SYMBOL));
|
SetFocus(GetDlgItem(hwndDlg, IDC_SYMBOL));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WM_MAKENSIS_LOADSYMBOLSET:
|
||||||
|
{
|
||||||
|
char *name = (char *)wParam;
|
||||||
|
char **symbols = LoadSymbolSet(name);
|
||||||
|
HGLOBAL hMem;
|
||||||
|
|
||||||
|
SetSymbols(hwndDlg, symbols);
|
||||||
|
if(symbols) {
|
||||||
|
hMem = GlobalHandle(symbols);
|
||||||
|
GlobalUnlock(hMem);
|
||||||
|
GlobalFree(hMem);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WM_MAKENSIS_SAVESYMBOLSET:
|
||||||
|
{
|
||||||
|
char *name = (char *)wParam;
|
||||||
|
char **symbols = GetSymbols(hwndDlg);
|
||||||
|
HGLOBAL hMem;
|
||||||
|
|
||||||
|
if(symbols) {
|
||||||
|
SaveSymbolSet(name, symbols);
|
||||||
|
hMem = GlobalHandle(symbols);
|
||||||
|
GlobalUnlock(hMem);
|
||||||
|
GlobalFree(hMem);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
|
@ -829,19 +897,10 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
ResetInputScript();
|
ResetInputScript();
|
||||||
ResetDefines();
|
ResetSymbols();
|
||||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCOUNT, 0, 0);
|
g_sdata.symbols = GetSymbols(hwndDlg);
|
||||||
if(n > 0) {
|
|
||||||
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *));
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
int len = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)i, 0);
|
|
||||||
g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char));
|
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)i, (LPARAM)g_sdata.defines[i]);
|
|
||||||
}
|
|
||||||
g_sdata.defines[n] = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
|
int n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
|
||||||
if (n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) {
|
if (n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) {
|
||||||
g_sdata.default_compressor = (NCOMPRESSOR)n;
|
g_sdata.default_compressor = (NCOMPRESSOR)n;
|
||||||
}
|
}
|
||||||
|
@ -862,7 +921,7 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
||||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXT, n+1, (LPARAM)buf);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXT, n+1, (LPARAM)buf);
|
||||||
if(my_strstr(buf," ") || my_strstr(buf,"\t")) {
|
if(my_strstr(buf," ") || my_strstr(buf,"\t")) {
|
||||||
MessageBox(hwndDlg,DEFINESERROR,"Error",MB_OK|MB_ICONSTOP);
|
MessageBox(hwndDlg,SYMBOLSERROR,"Error",MB_OK|MB_ICONSTOP);
|
||||||
GlobalFree(buf);
|
GlobalFree(buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -877,21 +936,22 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
buf = buf3;
|
buf = buf3;
|
||||||
GlobalFree(buf2);
|
GlobalFree(buf2);
|
||||||
}
|
}
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)buf);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_ADDSTRING, 0, (LPARAM)buf);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, 0);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, 0);
|
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, 0);
|
||||||
GlobalFree(buf);
|
GlobalFree(buf);
|
||||||
|
EnableSymbolSetButtons(hwndDlg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IDLEFT:
|
case IDLEFT:
|
||||||
{
|
{
|
||||||
int index = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
|
int index = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETCURSEL, 0, 0);
|
||||||
if(index != LB_ERR) {
|
if(index != LB_ERR) {
|
||||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)index, 0);
|
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXTLEN, (WPARAM)index, 0);
|
||||||
if(n > 0) {
|
if(n > 0) {
|
||||||
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)index, (LPARAM)buf);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXT, (WPARAM)index, (LPARAM)buf);
|
||||||
char *p = my_strstr(buf,"=");
|
char *p = my_strstr(buf,"=");
|
||||||
if(p) {
|
if(p) {
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1));
|
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1));
|
||||||
|
@ -899,12 +959,44 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf);
|
||||||
GlobalFree(buf);
|
GlobalFree(buf);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_DELETESTRING, (WPARAM)index, (LPARAM)buf);
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)index, 0);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
EnableSymbolSetButtons(hwndDlg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case IDCLEAR:
|
||||||
|
{
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_RESETCONTENT , 0, 0);
|
||||||
|
EnableSymbolSetButtons(hwndDlg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case IDLOAD:
|
||||||
|
{
|
||||||
|
g_symbol_set_mode=1;
|
||||||
|
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_SYMBOLSET),hwndDlg,(DLGPROC)SymbolSetProc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case IDSAVE:
|
||||||
|
{
|
||||||
|
g_symbol_set_mode=2;
|
||||||
|
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_SYMBOLSET),hwndDlg,(DLGPROC)SymbolSetProc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case IDDEL:
|
||||||
|
{
|
||||||
|
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0);
|
||||||
|
int *items = (int *)GlobalAlloc(GPTR, n*sizeof(int));
|
||||||
|
int rv = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELITEMS, (WPARAM)n, (LPARAM)items);
|
||||||
|
int i;
|
||||||
|
for(i=n-1;i>=0;i--) {
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)items[i], 0);
|
||||||
|
}
|
||||||
|
EnableSymbolSetButtons(hwndDlg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case IDC_SYMBOL:
|
case IDC_SYMBOL:
|
||||||
if(HIWORD(wParam) == EN_CHANGE)
|
if(HIWORD(wParam) == EN_CHANGE)
|
||||||
{
|
{
|
||||||
|
@ -917,15 +1009,21 @@ BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IDC_DEFINES:
|
case IDC_SYMBOLS:
|
||||||
if(HIWORD(wParam) == LBN_SELCHANGE)
|
if(HIWORD(wParam) == LBN_SELCHANGE)
|
||||||
{
|
{
|
||||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
|
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0);
|
||||||
if(n != LB_ERR) {
|
if(n == 0) {
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
}
|
||||||
|
else if(n == 1) {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), TRUE);
|
||||||
|
}
|
||||||
|
else if(n > 1) {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -980,6 +1078,114 @@ BOOL CALLBACK CompressorProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPara
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL CALLBACK SymbolSetProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
|
switch(msg) {
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
HWND hwndEdit;
|
||||||
|
HKEY hKey;
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
|
||||||
|
HKEY hSubKey;
|
||||||
|
|
||||||
|
if (RegCreateKey(hKey,REGSYMSUBKEY,&hSubKey) == ERROR_SUCCESS) {
|
||||||
|
char subkey[1024];
|
||||||
|
int i=0;
|
||||||
|
|
||||||
|
while (RegEnumKey(hSubKey,i,subkey,sizeof(subkey)) == ERROR_SUCCESS) {
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_ADDSTRING, 0, (LPARAM)subkey);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
hwndEdit = FindWindowEx(GetDlgItem(hwndDlg, IDC_NAMES), 0, 0, 0); // Handle of list
|
||||||
|
hwndEdit = FindWindowEx(GetDlgItem(hwndDlg, IDC_NAMES), hwndEdit, 0, 0); //Handle of edit box
|
||||||
|
SendMessage(hwndEdit, EM_LIMITTEXT, (WPARAM)SYMBOL_SET_NAME_MAXLEN, 0);
|
||||||
|
if(g_symbol_set_mode == 1) { //Load
|
||||||
|
SetWindowText(hwndDlg, LOAD_SYMBOL_SET_DLG_NAME);
|
||||||
|
SendMessage(hwndEdit, EM_SETREADONLY, (WPARAM)TRUE, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SetWindowText(hwndDlg, SAVE_SYMBOL_SET_DLG_NAME);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WM_COMMAND:
|
||||||
|
{
|
||||||
|
switch (LOWORD(wParam)) {
|
||||||
|
case IDOK:
|
||||||
|
{
|
||||||
|
HWND hwndEdit;
|
||||||
|
char name[SYMBOL_SET_NAME_MAXLEN+1];
|
||||||
|
|
||||||
|
hwndEdit = FindWindowEx(GetDlgItem(hwndDlg, IDC_NAMES), 0, 0, 0); // Handle of list
|
||||||
|
hwndEdit = FindWindowEx(GetDlgItem(hwndDlg, IDC_NAMES), hwndEdit, 0, 0); //Handle of edit box
|
||||||
|
SendMessage(hwndEdit, WM_GETTEXT, (WPARAM)SYMBOL_SET_NAME_MAXLEN+1, (LPARAM)name);
|
||||||
|
if(!lstrlen(name)) {
|
||||||
|
if(g_symbol_set_mode == 1) { //Load
|
||||||
|
MessageBox(hwndDlg,LOAD_SYMBOL_SET_MESSAGE,LOAD_SYMBOL_SET_DLG_NAME,MB_OK|MB_ICONEXCLAMATION);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MessageBox(hwndDlg,SAVE_SYMBOL_SET_MESSAGE,SAVE_SYMBOL_SET_DLG_NAME,MB_OK|MB_ICONEXCLAMATION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
HWND hwndParent = GetParent(hwndDlg);
|
||||||
|
if(g_symbol_set_mode == 1) { //Load
|
||||||
|
SendMessage(hwndParent, WM_MAKENSIS_LOADSYMBOLSET, (WPARAM)name, NULL);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SendMessage(hwndParent, WM_MAKENSIS_SAVESYMBOLSET, (WPARAM)name, NULL);
|
||||||
|
}
|
||||||
|
EndDialog(hwndDlg, TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IDCANCEL:
|
||||||
|
{
|
||||||
|
EndDialog(hwndDlg, TRUE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IDDEL:
|
||||||
|
{
|
||||||
|
int n = SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_GETCURSEL, 0, 0);
|
||||||
|
if(n != CB_ERR) {
|
||||||
|
long len = SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_GETLBTEXTLEN, (WPARAM)n, 0);
|
||||||
|
char *buf = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char));
|
||||||
|
if(SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_GETLBTEXT, (WPARAM)n, (LPARAM)buf) != CB_ERR) {
|
||||||
|
SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_DELETESTRING, n, 0);
|
||||||
|
DeleteSymbolSet(buf);
|
||||||
|
}
|
||||||
|
GlobalFree(buf);
|
||||||
|
}
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IDC_NAMES:
|
||||||
|
{
|
||||||
|
if(HIWORD(wParam) == CBN_SELCHANGE)
|
||||||
|
{
|
||||||
|
int n = SendDlgItemMessage(hwndDlg, IDC_NAMES, CB_GETCURSEL, 0, 0);
|
||||||
|
if(n == CB_ERR) {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDDEL), TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void SetCompressor(NCOMPRESSOR compressor)
|
void SetCompressor(NCOMPRESSOR compressor)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -39,14 +39,13 @@
|
||||||
#define LOCALDOCS "\\NSIS.chm"
|
#define LOCALDOCS "\\NSIS.chm"
|
||||||
#define NSISERROR "Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe."
|
#define NSISERROR "Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe."
|
||||||
#define DLGERROR "Unable to intialize MakeNSISW."
|
#define DLGERROR "Unable to intialize MakeNSISW."
|
||||||
#define DEFINESERROR "Symbol cannot contain whitespace characters"
|
#define SYMBOLSERROR "Symbol cannot contain whitespace characters"
|
||||||
#define NSISUPDATEPROMPT "Running NSIS Update will close MakeNSISW.\nContinue?"
|
#define NSISUPDATEPROMPT "Running NSIS Update will close MakeNSISW.\nContinue?"
|
||||||
#define REGSEC HKEY_LOCAL_MACHINE
|
#define REGSEC HKEY_LOCAL_MACHINE
|
||||||
#define REGKEY "Software\\NSIS"
|
#define REGKEY "Software\\NSIS"
|
||||||
#define REGLOC "MakeNSISWPlacement"
|
#define REGLOC "MakeNSISWPlacement"
|
||||||
#define REGCOMPRESSOR "MakeNSISWCompressor"
|
#define REGCOMPRESSOR "MakeNSISWCompressor"
|
||||||
#define REGDEFSUBKEY "Defines"
|
#define REGSYMSUBKEY "Symbols"
|
||||||
#define REGDEFCOUNT "MakeNSISWDefinesCount"
|
|
||||||
#define REGMRUSUBKEY "MRU"
|
#define REGMRUSUBKEY "MRU"
|
||||||
#define EXENAME "makensis.exe"
|
#define EXENAME "makensis.exe"
|
||||||
#define MAX_STRING 256
|
#define MAX_STRING 256
|
||||||
|
@ -61,8 +60,15 @@
|
||||||
#define RESTORED_COMPRESSOR_MESSAGE "\n\nThe %s compressor (%d bytes) created the smallest installer which was restored."
|
#define RESTORED_COMPRESSOR_MESSAGE "\n\nThe %s compressor (%d bytes) created the smallest installer which was restored."
|
||||||
#define EXE_HEADER_COMPRESSOR_STAT "EXE header size:"
|
#define EXE_HEADER_COMPRESSOR_STAT "EXE header size:"
|
||||||
#define TOTAL_SIZE_COMPRESSOR_STAT "Total size:"
|
#define TOTAL_SIZE_COMPRESSOR_STAT "Total size:"
|
||||||
|
#define SYMBOL_SET_NAME_MAXLEN 40
|
||||||
|
#define LOAD_SYMBOL_SET_DLG_NAME "Load Symbol Definitions Set"
|
||||||
|
#define SAVE_SYMBOL_SET_DLG_NAME "Save Symbol Definitions Set"
|
||||||
|
#define LOAD_SYMBOL_SET_MESSAGE "Please select a name for the Symbol Definitions Set to load."
|
||||||
|
#define SAVE_SYMBOL_SET_MESSAGE "Please enter a name for the Symbol Definitions Set to save."
|
||||||
|
|
||||||
#define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
|
#define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
|
||||||
|
#define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002)
|
||||||
|
#define WM_MAKENSIS_SAVESYMBOLSET (WM_USER+1003)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAKENSIS_NOTIFY_SCRIPT,
|
MAKENSIS_NOTIFY_SCRIPT,
|
||||||
|
@ -120,12 +126,16 @@ BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused*/);
|
||||||
BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
|
BOOL CALLBACK SymbolSetProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL CALLBACK CompressorProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK CompressorProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
void CompileNSISScript();
|
void CompileNSISScript();
|
||||||
char* BuildDefines();
|
char* BuildSymbols();
|
||||||
void SetCompressor(NCOMPRESSOR);
|
void SetCompressor(NCOMPRESSOR);
|
||||||
void RestoreDefines();
|
void RestoreSymbols();
|
||||||
void SaveDefines();
|
void SaveSymbols();
|
||||||
|
void DeleteSymbolSet(char *);
|
||||||
|
char** LoadSymbolSet(char *);
|
||||||
|
void SaveSymbolSet(char *, char **);
|
||||||
void RestoreMRUList();
|
void RestoreMRUList();
|
||||||
void SaveMRUList();
|
void SaveMRUList();
|
||||||
|
|
||||||
|
@ -136,7 +146,7 @@ typedef struct NSISScriptData {
|
||||||
char *input_script;
|
char *input_script;
|
||||||
char *branding;
|
char *branding;
|
||||||
char *brandingv;
|
char *brandingv;
|
||||||
char **defines;
|
char **symbols;
|
||||||
int retcode;
|
int retcode;
|
||||||
DWORD logLength;
|
DWORD logLength;
|
||||||
DWORD warnings;
|
DWORD warnings;
|
||||||
|
|
|
@ -5,8 +5,11 @@
|
||||||
#define IDS_LOADSCRIPT 1
|
#define IDS_LOADSCRIPT 1
|
||||||
#define IDS_SAVE 2
|
#define IDS_SAVE 2
|
||||||
#define IDS_EXIT 3
|
#define IDS_EXIT 3
|
||||||
|
#define IDLOAD 3
|
||||||
#define IDS_COPY 4
|
#define IDS_COPY 4
|
||||||
|
#define IDSAVE 4
|
||||||
#define IDS_FIND 5
|
#define IDS_FIND 5
|
||||||
|
#define IDCLEAR 5
|
||||||
#define IDS_RECOMPILE 6
|
#define IDS_RECOMPILE 6
|
||||||
#define IDS_SETTINGS 7
|
#define IDS_SETTINGS 7
|
||||||
#define IDS_COMPRESSOR 8
|
#define IDS_COMPRESSOR 8
|
||||||
|
@ -35,6 +38,7 @@
|
||||||
#define IDB_BITMAP1 120
|
#define IDB_BITMAP1 120
|
||||||
#define IDB_TOOLBAR 122
|
#define IDB_TOOLBAR 122
|
||||||
#define DLG_COMPRESSOR 124
|
#define DLG_COMPRESSOR 124
|
||||||
|
#define DLG_SYMBOLSET 125
|
||||||
#define IDC_LOGWIN 402
|
#define IDC_LOGWIN 402
|
||||||
#define IDC_VERSION 405
|
#define IDC_VERSION 405
|
||||||
#define IDC_CLOSE 406
|
#define IDC_CLOSE 406
|
||||||
|
@ -56,9 +60,11 @@
|
||||||
#define IDC_VALUE 1018
|
#define IDC_VALUE 1018
|
||||||
#define IDRIGHT 1019
|
#define IDRIGHT 1019
|
||||||
#define IDLEFT 1020
|
#define IDLEFT 1020
|
||||||
#define IDC_DEFINES 1021
|
#define IDC_SYMBOLS 1021
|
||||||
#define IDC_RECOMPILE_TEST 1022
|
#define IDC_RECOMPILE_TEST 1022
|
||||||
#define IDC_COMPRESSOR 1025
|
#define IDC_COMPRESSOR 1025
|
||||||
|
#define IDC_NAMES 1027
|
||||||
|
#define IDDEL 1028
|
||||||
#define IDM_COMPRESSOR 40001
|
#define IDM_COMPRESSOR 40001
|
||||||
#define IDM_TEST 40002
|
#define IDM_TEST 40002
|
||||||
#define IDM_EDITSCRIPT 40003
|
#define IDM_EDITSCRIPT 40003
|
||||||
|
@ -81,12 +87,12 @@
|
||||||
#define IDM_SETTINGS 40033
|
#define IDM_SETTINGS 40033
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 125
|
#define _APS_NEXT_RESOURCE_VALUE 126
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40034
|
#define _APS_NEXT_COMMAND_VALUE 40034
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1027
|
#define _APS_NEXT_CONTROL_VALUE 1029
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -175,27 +175,32 @@ BEGIN
|
||||||
CONTROL 115,IDC_STATIC,"Static",SS_BITMAP,0,0,20,20
|
CONTROL 115,IDC_STATIC,"Static",SS_BITMAP,0,0,20,20
|
||||||
END
|
END
|
||||||
|
|
||||||
DLG_SETTINGS DIALOGEX 0, 0, 250, 190
|
DLG_SETTINGS DIALOGEX 0, 0, 284, 214
|
||||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "MakeNSISW Settings"
|
CAPTION "MakeNSISW Settings"
|
||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "&OK",IDOK,145,168,48,14
|
DEFPUSHBUTTON "&OK",IDOK,177,193,48,14
|
||||||
PUSHBUTTON "&Cancel",IDCANCEL,195,168,48,14
|
PUSHBUTTON "&Cancel",IDCANCEL,228,193,48,14
|
||||||
EDITTEXT IDC_SYMBOL,11,98,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
EDITTEXT IDC_SYMBOL,13,117,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
||||||
EDITTEXT IDC_VALUE,11,124,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
EDITTEXT IDC_VALUE,13,143,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
||||||
PUSHBUTTON ">",IDRIGHT,95,102,14,14
|
PUSHBUTTON "Update >>",IDRIGHT,98,121,49,12
|
||||||
PUSHBUTTON "<",IDLEFT,95,117,14,14
|
PUSHBUTTON "Edit <<",IDLEFT,98,137,49,12
|
||||||
LTEXT "Symbol",IDC_STATIC,11,89,24,8
|
LTEXT "Symbol",IDC_STATIC,13,108,24,8
|
||||||
LTEXT "Value (optional)",IDC_STATIC,11,115,50,8
|
LTEXT "Value (optional)",IDC_STATIC,13,134,50,8
|
||||||
LISTBOX IDC_DEFINES,117,77,121,79,LBS_NOINTEGRALHEIGHT |
|
LISTBOX IDC_SYMBOLS,154,98,121,79,LBS_NOINTEGRALHEIGHT |
|
||||||
WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,WS_EX_CLIENTEDGE
|
LBS_EXTENDEDSEL | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,
|
||||||
GROUPBOX "Symbol Definitions",IDC_STATIC,7,58,236,103
|
WS_EX_CLIENTEDGE
|
||||||
LTEXT "Symbol List",IDC_STATIC,117,67,118,9
|
GROUPBOX "Symbol Definitions",IDC_STATIC,7,58,270,121
|
||||||
GROUPBOX "Compressor Setting",IDC_STATIC,7,7,236,41
|
LTEXT "Symbol List",IDC_STATIC,154,86,118,9
|
||||||
|
GROUPBOX "Compressor Setting",IDC_STATIC,7,7,270,41
|
||||||
LTEXT "Compressor:",IDC_STATIC,11,27,41,11
|
LTEXT "Compressor:",IDC_STATIC,11,27,41,11
|
||||||
COMBOBOX IDC_COMPRESSOR,55,26,184,94,CBS_DROPDOWNLIST |
|
COMBOBOX IDC_COMPRESSOR,55,26,184,94,CBS_DROPDOWNLIST |
|
||||||
WS_VSCROLL | WS_TABSTOP
|
WS_VSCROLL | WS_TABSTOP
|
||||||
|
PUSHBUTTON "Delete",IDDEL,98,153,49,12
|
||||||
|
PUSHBUTTON "&Load",IDLOAD,178,63,48,14
|
||||||
|
PUSHBUTTON "&Save",IDSAVE,228,63,48,14
|
||||||
|
PUSHBUTTON "Clea&r",IDCLEAR,128,63,48,14
|
||||||
END
|
END
|
||||||
|
|
||||||
DLG_COMPRESSOR DIALOG DISCARDABLE 0, 0, 250, 47
|
DLG_COMPRESSOR DIALOG DISCARDABLE 0, 0, 250, 47
|
||||||
|
@ -210,6 +215,19 @@ BEGIN
|
||||||
WS_TABSTOP
|
WS_TABSTOP
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DLG_SYMBOLSET DIALOG DISCARDABLE 0, 0, 186, 124
|
||||||
|
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
|
CAPTION "Dialog"
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,76,103,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,129,103,50,14
|
||||||
|
COMBOBOX IDC_NAMES,7,17,172,80,CBS_SIMPLE | CBS_AUTOHSCROLL |
|
||||||
|
CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
|
LTEXT "Symbol Definitions Set Name:",IDC_STATIC,7,7,101,10
|
||||||
|
PUSHBUTTON "&Delete",IDDEL,23,103,50,14
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -233,9 +251,9 @@ BEGIN
|
||||||
DLG_SETTINGS, DIALOG
|
DLG_SETTINGS, DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
RIGHTMARGIN, 243
|
RIGHTMARGIN, 277
|
||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 183
|
BOTTOMMARGIN, 207
|
||||||
END
|
END
|
||||||
|
|
||||||
DLG_COMPRESSOR, DIALOG
|
DLG_COMPRESSOR, DIALOG
|
||||||
|
@ -245,6 +263,14 @@ BEGIN
|
||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 40
|
BOTTOMMARGIN, 40
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DLG_SYMBOLSET, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 179
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 117
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,7 @@ void CompileNSISScript() {
|
||||||
}
|
}
|
||||||
if (!g_sdata.appended) {
|
if (!g_sdata.appended) {
|
||||||
if (s) GlobalFree(s);
|
if (s) GlobalFree(s);
|
||||||
char *defines = BuildDefines();
|
char *symbols = BuildSymbols();
|
||||||
|
|
||||||
char compressor[40];
|
char compressor[40];
|
||||||
if(lstrlen(g_sdata.compressor_name)) {
|
if(lstrlen(g_sdata.compressor_name)) {
|
||||||
|
@ -277,9 +277,9 @@ void CompileNSISScript() {
|
||||||
lstrcpy(compressor,"");
|
lstrcpy(compressor,"");
|
||||||
}
|
}
|
||||||
|
|
||||||
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(defines)+lstrlen(compressor)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+20);
|
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(symbols)+lstrlen(compressor)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+20);
|
||||||
wsprintf(s,"%s %s%s /NOTIFYHWND %d %s",EXENAME,compressor,defines,g_sdata.hwnd,g_sdata.script);
|
wsprintf(s,"%s %s%s /NOTIFYHWND %d %s",EXENAME,compressor,symbols,g_sdata.hwnd,g_sdata.script);
|
||||||
GlobalFree(defines);
|
GlobalFree(symbols);
|
||||||
if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
|
if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
|
||||||
g_sdata.script_alloced = true;
|
g_sdata.script_alloced = true;
|
||||||
g_sdata.script = s;
|
g_sdata.script = s;
|
||||||
|
@ -322,62 +322,131 @@ void SaveWindowPos(HWND hwnd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RestoreDefines()
|
void RestoreSymbols()
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
g_sdata.symbols = LoadSymbolSet(NULL);
|
||||||
HKEY hSubKey;
|
}
|
||||||
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
|
|
||||||
int n = 0;
|
void SaveSymbols()
|
||||||
DWORD l = sizeof(n);
|
{
|
||||||
DWORD t;
|
SaveSymbolSet(NULL, g_sdata.symbols);
|
||||||
if ((RegQueryValueEx(hKey,REGDEFCOUNT,NULL,&t,(unsigned char*)&n,&l)==ERROR_SUCCESS)&&(t == REG_DWORD)&&(l==sizeof(n))) {
|
}
|
||||||
if(n > 0) {
|
|
||||||
if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) {
|
void DeleteSymbolSet(char *name)
|
||||||
char buf[8];
|
{
|
||||||
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *));
|
if(name) {
|
||||||
if (g_sdata.defines)
|
HKEY hKey;
|
||||||
{
|
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
|
||||||
for(int i = 0; i < n; i++) {
|
char subkey[1024];
|
||||||
wsprintf(buf,"%d",i);
|
wsprintf(subkey,"%s\\%s",REGSYMSUBKEY,name);
|
||||||
l = 0;
|
RegDeleteKey(hKey,subkey);
|
||||||
if ((RegQueryValueEx(hSubKey,buf,NULL,&t,NULL,&l)==ERROR_SUCCESS)&&(t == REG_SZ)) {
|
RegCloseKey(hKey);
|
||||||
l++;
|
|
||||||
g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, l*sizeof(char));
|
|
||||||
if (g_sdata.defines[i])
|
|
||||||
RegQueryValueEx(hSubKey,buf,NULL,&t,(unsigned char*)g_sdata.defines[i],&l);
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
g_sdata.defines[n] = NULL;
|
|
||||||
}
|
|
||||||
RegCloseKey(hSubKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
RegCloseKey(hKey);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveDefines()
|
char** LoadSymbolSet(char *name)
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
HKEY hSubKey;
|
||||||
|
char **symbols = NULL;
|
||||||
|
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
|
||||||
|
char subkey[1024];
|
||||||
|
if(name) {
|
||||||
|
wsprintf(subkey,"%s\\%s",REGSYMSUBKEY,name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lstrcpy(subkey,REGSYMSUBKEY);
|
||||||
|
}
|
||||||
|
if (RegCreateKey(hKey,subkey,&hSubKey) == ERROR_SUCCESS) {
|
||||||
|
char buf[8];
|
||||||
|
DWORD l;
|
||||||
|
DWORD t;
|
||||||
|
DWORD bufSize;
|
||||||
|
DWORD i = 0;
|
||||||
|
HGLOBAL hMem;
|
||||||
|
|
||||||
|
while(TRUE) {
|
||||||
|
l = 0;
|
||||||
|
bufSize = sizeof(buf);
|
||||||
|
if ((RegEnumValue(hSubKey,i, buf, &bufSize,NULL,&t,NULL,&l)==ERROR_SUCCESS)&&(t == REG_SZ)) {
|
||||||
|
if(symbols) {
|
||||||
|
GlobalUnlock(hMem);
|
||||||
|
hMem = GlobalReAlloc(hMem, (i+2)*sizeof(char *), GMEM_MOVEABLE|GMEM_ZEROINIT);
|
||||||
|
symbols = (char **)GlobalLock(hMem);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT, (i+2)*sizeof(char *));
|
||||||
|
symbols = (char **)GlobalLock(hMem);
|
||||||
|
}
|
||||||
|
if(symbols) {
|
||||||
|
l++;
|
||||||
|
symbols[i] = (char *)GlobalAlloc(GPTR, l*sizeof(char));
|
||||||
|
if (symbols[i]) {
|
||||||
|
RegQueryValueEx(hSubKey,buf,NULL,&t,(unsigned char*)symbols[i],&l);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
symbols[i] = NULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
return symbols;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SaveSymbolSet(char *name, char **symbols)
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
|
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
|
||||||
RegDeleteKey(hKey,REGDEFSUBKEY);
|
char subkey[1024];
|
||||||
if(g_sdata.defines) {
|
if(name) {
|
||||||
if (RegCreateKey(hKey,REGDEFSUBKEY,&hSubKey) == ERROR_SUCCESS) {
|
wsprintf(subkey,"%s\\%s",REGSYMSUBKEY,name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lstrcpy(subkey,REGSYMSUBKEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (RegOpenKey(hKey,subkey,&hSubKey) == ERROR_SUCCESS) {
|
||||||
|
char buf[8];
|
||||||
|
DWORD l;
|
||||||
|
while(TRUE) {
|
||||||
|
l = sizeof(buf);
|
||||||
|
if (RegEnumValue(hSubKey,0, buf, &l,NULL,NULL,NULL,NULL)==ERROR_SUCCESS) {
|
||||||
|
RegDeleteValue(hSubKey,buf);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
if(symbols) {
|
||||||
|
if (RegCreateKey(hKey,subkey,&hSubKey) == ERROR_SUCCESS) {
|
||||||
char buf[8];
|
char buf[8];
|
||||||
while(g_sdata.defines[n]) {
|
n = 0;
|
||||||
|
while(symbols[n]) {
|
||||||
wsprintf(buf,"%d",n);
|
wsprintf(buf,"%d",n);
|
||||||
RegSetValueEx(hSubKey,buf,0,REG_SZ,(CONST BYTE *)g_sdata.defines[n],lstrlen(g_sdata.defines[n])+1);
|
RegSetValueEx(hSubKey,buf,0,REG_SZ,(CONST BYTE *)symbols[n],lstrlen(symbols[n])+1);
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RegSetValueEx(hKey,REGDEFCOUNT,0,REG_DWORD,(CONST BYTE *)&n,sizeof(n));
|
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -389,15 +458,18 @@ void ResetObjects() {
|
||||||
g_sdata.thread = NULL;
|
g_sdata.thread = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResetDefines() {
|
void ResetSymbols() {
|
||||||
if(g_sdata.defines) {
|
if(g_sdata.symbols) {
|
||||||
|
HGLOBAL hMem;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while(g_sdata.defines[i]) {
|
while(g_sdata.symbols[i]) {
|
||||||
GlobalFree(g_sdata.defines[i]);
|
GlobalFree(g_sdata.symbols[i]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
GlobalFree(g_sdata.defines);
|
hMem = GlobalHandle(g_sdata.symbols);
|
||||||
g_sdata.defines = NULL;
|
GlobalUnlock(hMem);
|
||||||
|
GlobalFree(hMem);
|
||||||
|
g_sdata.symbols = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,22 +579,22 @@ void ShowDocs() {
|
||||||
ShellExecute(g_sdata.hwnd,"open",DOCPATH,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",DOCPATH,NULL,NULL,SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
char* BuildDefines()
|
char* BuildSymbols()
|
||||||
{
|
{
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
|
|
||||||
if(g_sdata.defines) {
|
if(g_sdata.symbols) {
|
||||||
int i=0;
|
int i=0;
|
||||||
while(g_sdata.defines[i]) {
|
while(g_sdata.symbols[i]) {
|
||||||
if(buf) {
|
if(buf) {
|
||||||
char *buf3 = (char *)GlobalAlloc(GPTR,(lstrlen(buf)+lstrlen(g_sdata.defines[i])+6)*sizeof(char));
|
char *buf3 = (char *)GlobalAlloc(GPTR,(lstrlen(buf)+lstrlen(g_sdata.symbols[i])+6)*sizeof(char));
|
||||||
wsprintf(buf3,"%s \"/D%s\"",buf,g_sdata.defines[i]);
|
wsprintf(buf3,"%s \"/D%s\"",buf,g_sdata.symbols[i]);
|
||||||
GlobalFree(buf);
|
GlobalFree(buf);
|
||||||
buf = buf3;
|
buf = buf3;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
buf = (char *)GlobalAlloc(GPTR,(lstrlen(g_sdata.defines[i])+5)*sizeof(char));
|
buf = (char *)GlobalAlloc(GPTR,(lstrlen(g_sdata.symbols[i])+5)*sizeof(char));
|
||||||
wsprintf(buf,"\"/D%s\"",g_sdata.defines[i]);
|
wsprintf(buf,"\"/D%s\"",g_sdata.symbols[i]);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ void EnableItems(HWND hwnd);*/
|
||||||
void RestoreWindowPos(HWND hwnd);
|
void RestoreWindowPos(HWND hwnd);
|
||||||
void SaveWindowPos(HWND hwnd);
|
void SaveWindowPos(HWND hwnd);
|
||||||
void ResetObjects();
|
void ResetObjects();
|
||||||
void ResetDefines();
|
void ResetSymbols();
|
||||||
int InitBranding();
|
int InitBranding();
|
||||||
void InitTooltips(HWND h);
|
void InitTooltips(HWND h);
|
||||||
void DestroyTooltips();
|
void DestroyTooltips();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue