Added MRU file list
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2806 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
f432054bd9
commit
8658fc2a06
6 changed files with 167 additions and 8 deletions
|
@ -41,10 +41,12 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd
|
||||||
g_sdata.script_alloced=false;
|
g_sdata.script_alloced=false;
|
||||||
g_sdata.defines = NULL;
|
g_sdata.defines = NULL;
|
||||||
RestoreDefines();
|
RestoreDefines();
|
||||||
|
RestoreMRUList();
|
||||||
g_sdata.script=GetCommandLine();
|
g_sdata.script=GetCommandLine();
|
||||||
if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); }
|
if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); }
|
||||||
else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++;
|
else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++;
|
||||||
while (*g_sdata.script==' ') g_sdata.script++;
|
while (*g_sdata.script==' ') g_sdata.script++;
|
||||||
|
PushMRUFile(g_sdata.script);
|
||||||
if (!InitBranding()) {
|
if (!InitBranding()) {
|
||||||
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -112,6 +114,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
SaveDefines();
|
SaveDefines();
|
||||||
|
SaveMRUList();
|
||||||
SaveWindowPos(g_sdata.hwnd);
|
SaveWindowPos(g_sdata.hwnd);
|
||||||
DestroyTooltips();
|
DestroyTooltips();
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
|
@ -143,6 +146,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
g_sdata.script_alloced = true;
|
g_sdata.script_alloced = true;
|
||||||
g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7);
|
g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7);
|
||||||
wsprintf(g_sdata.script,"\"%s\"",szTmp);
|
wsprintf(g_sdata.script,"\"%s\"",szTmp);
|
||||||
|
PushMRUFile(g_sdata.script);
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
}
|
}
|
||||||
|
@ -246,6 +250,17 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
case WM_MENUSELECT:
|
||||||
|
{
|
||||||
|
HMENU hMenu = (HMENU)lParam;
|
||||||
|
UINT id = (UINT)LOWORD(wParam);
|
||||||
|
UINT flags = (UINT)HIWORD(wParam);
|
||||||
|
if(hMenu == g_sdata.menu && id == 0 && (flags & MF_POPUP) == MF_POPUP) {
|
||||||
|
hMenu = GetSubMenu(hMenu, id);
|
||||||
|
BuildMRUMenu(hMenu);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
|
@ -317,12 +332,20 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
if (GetOpenFileName(&l)) {
|
if (GetOpenFileName(&l)) {
|
||||||
g_sdata.script = (char *)GlobalAlloc(GPTR,lstrlen(buf)+3);
|
g_sdata.script = (char *)GlobalAlloc(GPTR,lstrlen(buf)+3);
|
||||||
wsprintf(g_sdata.script,"\"%s\"",buf);
|
wsprintf(g_sdata.script,"\"%s\"",buf);
|
||||||
|
PushMRUFile(g_sdata.script);
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
case IDM_MRU_FILE:
|
||||||
|
case IDM_MRU_FILE+1:
|
||||||
|
case IDM_MRU_FILE+2:
|
||||||
|
case IDM_MRU_FILE+3:
|
||||||
|
case IDM_MRU_FILE+4:
|
||||||
|
LoadMRUFile(LOWORD(wParam)-IDM_MRU_FILE);
|
||||||
|
return TRUE;
|
||||||
#ifdef COMPRESSOR_OPTION
|
#ifdef COMPRESSOR_OPTION
|
||||||
case IDM_COMPRESSOR:
|
case IDM_COMPRESSOR:
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#define REGLOC "MakeNSISWPlacement"
|
#define REGLOC "MakeNSISWPlacement"
|
||||||
#define REGDEFSUBKEY "Defines"
|
#define REGDEFSUBKEY "Defines"
|
||||||
#define REGDEFCOUNT "MakeNSISWDefinesCount"
|
#define REGDEFCOUNT "MakeNSISWDefinesCount"
|
||||||
|
#define REGMRUSUBKEY "MRU"
|
||||||
#define EXENAME "makensis.exe"
|
#define EXENAME "makensis.exe"
|
||||||
#define MAX_STRING 256
|
#define MAX_STRING 256
|
||||||
#define TIMEOUT 100
|
#define TIMEOUT 100
|
||||||
|
@ -85,6 +86,8 @@ BOOL SetCompressor(WORD);
|
||||||
#endif
|
#endif
|
||||||
void RestoreDefines();
|
void RestoreDefines();
|
||||||
void SaveDefines();
|
void SaveDefines();
|
||||||
|
void RestoreMRUList();
|
||||||
|
void SaveMRUList();
|
||||||
|
|
||||||
typedef struct NSISScriptData {
|
typedef struct NSISScriptData {
|
||||||
bool script_alloced;
|
bool script_alloced;
|
||||||
|
|
|
@ -9,9 +9,6 @@
|
||||||
#define IDS_FIND 5
|
#define IDS_FIND 5
|
||||||
#define IDS_RECOMPILE 6
|
#define IDS_RECOMPILE 6
|
||||||
#define IDS_DEFINES 7
|
#define IDS_DEFINES 7
|
||||||
#ifdef COMPRESSOR_OPTION
|
|
||||||
#define IDS_COMPRESSOR 8
|
|
||||||
#endif
|
|
||||||
#define IDS_TEST 9
|
#define IDS_TEST 9
|
||||||
#define IDS_EDITSCRIPT 10
|
#define IDS_EDITSCRIPT 10
|
||||||
#define IDS_BROWSESCR 11
|
#define IDS_BROWSESCR 11
|
||||||
|
@ -55,9 +52,6 @@
|
||||||
#define IDRIGHT 1019
|
#define IDRIGHT 1019
|
||||||
#define IDLEFT 1020
|
#define IDLEFT 1020
|
||||||
#define IDC_DEFINES 1021
|
#define IDC_DEFINES 1021
|
||||||
#ifdef COMPRESSOR_OPTION
|
|
||||||
#define IDM_COMPRESSOR 40001
|
|
||||||
#endif
|
|
||||||
#define IDM_TEST 40002
|
#define IDM_TEST 40002
|
||||||
#define IDM_EDITSCRIPT 40003
|
#define IDM_EDITSCRIPT 40003
|
||||||
#define IDM_DOCS 40004
|
#define IDM_DOCS 40004
|
||||||
|
@ -72,13 +66,14 @@
|
||||||
#define IDM_DEFAULT 40020
|
#define IDM_DEFAULT 40020
|
||||||
#define IDM_ZLIB 40021
|
#define IDM_ZLIB 40021
|
||||||
#define IDM_GZIP 40022
|
#define IDM_GZIP 40022
|
||||||
|
#define IDM_MRU_FILE 40023
|
||||||
|
|
||||||
// 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 124
|
#define _APS_NEXT_RESOURCE_VALUE 124
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40023
|
#define _APS_NEXT_COMMAND_VALUE 40029
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1023
|
#define _APS_NEXT_CONTROL_VALUE 1023
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -70,6 +70,8 @@ BEGIN
|
||||||
MENUITEM "&Load Script...\tCtrl+L", IDM_LOADSCRIPT
|
MENUITEM "&Load Script...\tCtrl+L", IDM_LOADSCRIPT
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "E&xit\tAlt+X", IDM_EXIT
|
MENUITEM "E&xit\tAlt+X", IDM_EXIT
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "", IDM_MRU_FILE
|
||||||
END
|
END
|
||||||
POPUP "&Edit"
|
POPUP "&Edit"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
NTOOLTIP g_tip;
|
NTOOLTIP g_tip;
|
||||||
LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam);
|
LRESULT CALLBACK TipHookProc(int nCode, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
|
char g_mru_files[MRU_SIZE][MAX_PATH] = { NULL, NULL, NULL, NULL, NULL };
|
||||||
|
|
||||||
extern NSCRIPTDATA g_sdata;
|
extern NSCRIPTDATA g_sdata;
|
||||||
|
|
||||||
void SetTitle(HWND hwnd,char *substr) {
|
void SetTitle(HWND hwnd,char *substr) {
|
||||||
|
@ -406,4 +408,133 @@ char* BuildDefines()
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL PopMRUFile(char* fname)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i=0; i<MRU_SIZE; i++) {
|
||||||
|
if(!lstrcmpi(g_mru_files[i], fname)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i < MRU_SIZE) {
|
||||||
|
int j;
|
||||||
|
for(j = i; j < MRU_SIZE-1; j++) {
|
||||||
|
lstrcpy(g_mru_files[j],g_mru_files[j+1]);
|
||||||
|
}
|
||||||
|
g_mru_files[MRU_SIZE-1][0]='\0';
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PushMRUFile(char* fname)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char buf[MAX_PATH+1];
|
||||||
|
|
||||||
|
if(!fname || fname[0] == '\0') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fname[0] == '"') {
|
||||||
|
fname++;
|
||||||
|
}
|
||||||
|
lstrcpy(buf,fname);
|
||||||
|
if(buf[lstrlen(buf)-1] == '"') {
|
||||||
|
buf[lstrlen(buf)-1] = '\0';
|
||||||
|
}
|
||||||
|
PopMRUFile(buf);
|
||||||
|
for(i = MRU_SIZE - 2; i >= 0; i--) {
|
||||||
|
lstrcpy(g_mru_files[i+1], g_mru_files[i]);
|
||||||
|
}
|
||||||
|
lstrcpy(g_mru_files[0],buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BuildMRUMenu(HMENU hMenu)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
MENUITEMINFO mii;
|
||||||
|
|
||||||
|
for(i = 0; i < MRU_SIZE; i++) {
|
||||||
|
DeleteMenu(hMenu, IDM_MRU_FILE+i, MF_BYCOMMAND);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < MRU_SIZE; i++) {
|
||||||
|
if(g_mru_files[i][0]) {
|
||||||
|
my_memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
|
||||||
|
mii.wID = IDM_MRU_FILE+i;
|
||||||
|
mii.fType = MFT_STRING;
|
||||||
|
mii.dwTypeData = g_mru_files[i];
|
||||||
|
mii.cch = sizeof(g_mru_files[i]);
|
||||||
|
mii.fState = MFS_ENABLED;
|
||||||
|
InsertMenuItem(hMenu, IDM_MRU_FILE+i, TRUE, &mii);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMRUFile(int position)
|
||||||
|
{
|
||||||
|
if (!g_sdata.thread && position >=0 && position < MRU_SIZE && g_mru_files[position][0]) {
|
||||||
|
g_sdata.script = (char *)GlobalAlloc(GPTR,lstrlen(g_mru_files[position])+3);
|
||||||
|
wsprintf(g_sdata.script,"\"%s\"",g_mru_files[position]);
|
||||||
|
PushMRUFile(g_sdata.script);
|
||||||
|
ResetObjects();
|
||||||
|
CompileNSISScript();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RestoreMRUList()
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
HKEY hSubKey;
|
||||||
|
int n = 0;
|
||||||
|
int i;
|
||||||
|
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
|
||||||
|
if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) {
|
||||||
|
char buf[8];
|
||||||
|
DWORD l;
|
||||||
|
for(int i=0; i<MRU_SIZE; i++) {
|
||||||
|
wsprintf(buf,"%d",i);
|
||||||
|
l = sizeof(g_mru_files[n]);
|
||||||
|
RegQueryValueEx(hSubKey,buf,NULL,NULL,(unsigned char*)g_mru_files[n],&l);
|
||||||
|
if(g_mru_files[n][0] != '\0') {
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
for(i = n; i < MRU_SIZE; i++) {
|
||||||
|
g_mru_files[i][0] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SaveMRUList()
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
HKEY hSubKey;
|
||||||
|
int i = 0;
|
||||||
|
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
|
||||||
|
if (RegCreateKey(hKey,REGMRUSUBKEY,&hSubKey) == ERROR_SUCCESS) {
|
||||||
|
char buf[8];
|
||||||
|
for(i = 0; i < MRU_SIZE; i++) {
|
||||||
|
wsprintf(buf,"%d",i);
|
||||||
|
RegSetValueEx(hSubKey,buf,0,REG_SZ,(const unsigned char *)g_mru_files[i],lstrlen(g_mru_files[i]));
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#ifndef UTILS_H
|
#ifndef UTILS_H
|
||||||
#define UTILS_H
|
#define UTILS_H
|
||||||
|
|
||||||
|
#define MRU_SIZE 5
|
||||||
|
|
||||||
void SetTitle(HWND hwnd,char *substr);
|
void SetTitle(HWND hwnd,char *substr);
|
||||||
void SetBranding(HWND hwnd);
|
void SetBranding(HWND hwnd);
|
||||||
void CopyToClipboard(HWND hwnd);
|
void CopyToClipboard(HWND hwnd);
|
||||||
|
@ -41,4 +43,7 @@ void DestroyTooltips();
|
||||||
void AddTip(HWND hWnd,LPSTR lpszToolTip);
|
void AddTip(HWND hWnd,LPSTR lpszToolTip);
|
||||||
void ShowDocs();
|
void ShowDocs();
|
||||||
|
|
||||||
|
void PushMRUFile(char* fname);
|
||||||
|
void BuildMRUMenu(HMENU hMenu);
|
||||||
|
void LoadMRUFile(int position);
|
||||||
#endif
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue