From f558c99c2c422f455ef05312c45e58cf9f63302d Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 14 Jan 2005 15:13:47 +0000 Subject: [PATCH] use new section name space git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3868 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/exehead/Ui.c | 53 ++++++++++++++++++++++++------------------- Source/exehead/exec.c | 10 +++++--- Source/script.cpp | 2 +- 3 files changed, 38 insertions(+), 27 deletions(-) diff --git a/Source/exehead/Ui.c b/Source/exehead/Ui.c index fc36ae24..64c888c4 100644 --- a/Source/exehead/Ui.c +++ b/Source/exehead/Ui.c @@ -303,6 +303,20 @@ FORCE_INLINE int NSISCALL ui_doinstall(void) set_language(); #endif + { + section *sec = g_sections; + int x = num_sections; + + while (x--) + { + if (sec->name_ptr) + { + GetNSISString(sec->name, sec->name_ptr); + } + sec++; + } + } + #ifdef NSIS_CONFIG_VISIBLE_SUPPORT #ifdef NSIS_CONFIG_SILENT_SUPPORT @@ -951,23 +965,32 @@ static void NSISCALL RefreshComponents(HWND hwTree, HTREEITEM *items) { TVITEM item; int i, flags, state; + section *sec; - item.mask = TVIF_STATE; item.stateMask = TVIS_STATEIMAGEMASK | TVIS_EXPANDED | TVIS_BOLD; - for (i = 0; i < num_sections; i++) + for (i = 0, sec = g_sections; i < num_sections; i++, sec++) { if (!items[i]) { continue; } - flags = g_sections[i].flags; + flags = sec->flags; item.hItem = items[i]; + + item.mask = TVIF_STATE; item.state = (flags & SF_BOLD) << 1; // (SF_BOLD << 1) == 16 == TVIS_BOLD item.state |= flags & SF_EXPAND; // TVIS_EXPANDED == SF_EXPAND + if (flags & SF_NAMECHG) + { + item.mask |= TVIF_TEXT; + item.pszText = sec->name; + sec->flags &= ~SF_NAMECHG; + } + if (flags & SF_PSELECTED) { state = 3; @@ -1111,7 +1134,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar { section *sec=sections+x; - if (sec->name_ptr) + if (sec->name[0]) { TVINSERTSTRUCT tv; @@ -1120,7 +1143,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar tv.item.mask = TVIF_PARAM | TVIF_TEXT | TVIF_STATE; tv.item.stateMask = TVIS_EXPANDED; tv.item.lParam = x; - tv.item.pszText = GetNSISStringTT(sec->name_ptr); + tv.item.pszText = sec->name; tv.item.state = sec->flags & SF_EXPAND; // TVIS_EXPANDED == SF_EXPAND @@ -1165,22 +1188,6 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar uMsg = WM_IN_UPDATEMSG; } - if (uMsg == WM_NOTIFY_SECTEXT) // update text - { - int x = wParam; - int ns = lParam; - TVITEM tv; - - tv.hItem = hTreeItems[x]; - - if (tv.hItem) - { - tv.mask = TVIF_TEXT; - tv.pszText = GetNSISStringTT(ns); - TreeView_SetItem(hwndTree1, &tv); - } - } - if (uMsg == WM_NOTIFY || uMsg == WM_TREEVIEW_KEYHACK) { LPNMHDR lpnmh = (LPNMHDR) lParam; @@ -1403,7 +1410,7 @@ static DWORD WINAPI install_thread(LPVOID p) if (s->flags&SF_SELECTED) #endif { - log_printf2("Section: \"%s\"",GetNSISStringTT(s->name_ptr)); + log_printf2("Section: \"%s\"",s->name); if (ExecuteCodeSegment(s->code,progresswnd)) { g_exec_flags.abort++; @@ -1413,7 +1420,7 @@ static DWORD WINAPI install_thread(LPVOID p) #ifdef NSIS_CONFIG_COMPONENTPAGE else { - log_printf2("Skipping section: \"%s\"",GetNSISStringTT(s->name_ptr)); + log_printf2("Skipping section: \"%s\"",name); } #endif s++; diff --git a/Source/exehead/exec.c b/Source/exehead/exec.c index c21d740a..d001e421 100644 --- a/Source/exehead/exec.c +++ b/Source/exehead/exec.c @@ -1461,7 +1461,7 @@ static int NSISCALL ExecuteEntry(entry *entry_) if (!parm2) { // getting text - GetNSISString(var1,res); + mystrcpy(var1,sec->name); } else { @@ -1479,9 +1479,13 @@ static int NSISCALL ExecuteEntry(entry *entry_) } else { - // setting text, send the message to do it - SendMessage(g_SectionHack,WM_NOTIFY_SECTEXT,x,parm1); + // setting text + GetNSISString(sec->name,parm4); + sec->flags|=SF_NAMECHG; + // parm1 is zero so name_ptr will be set to zero + // if name_ptr is zero, it won't be used after .onInit } + ((int*)sec)[parm2]=parm1; if (parm3) // update flags diff --git a/Source/script.cpp b/Source/script.cpp index 6279b055..f538aaf6 100644 --- a/Source/script.cpp +++ b/Source/script.cpp @@ -5193,8 +5193,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) case TOK_SECTIONSETTEXT: ent.which=EW_SECTIONSET; ent.offsets[0]=add_string(line.gettoken_str(1)); - ent.offsets[1]=add_string(line.gettoken_str(2)); ent.offsets[2]=SECTION_FIELD_SET(name_ptr); + ent.offsets[4]=add_string(line.gettoken_str(2)); SCRIPT_MSG("SectionSetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); return add_entry(&ent); case TOK_SECTIONGETTEXT: