From b9ecd8f65cb68e5a3bf2a27a7499d002e7ce8a31 Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 25 Feb 2005 15:28:37 +0000 Subject: [PATCH] size optimizations git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3912 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/exehead/Ui.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Source/exehead/Ui.c b/Source/exehead/Ui.c index e5c9ff19..9035db8b 100644 --- a/Source/exehead/Ui.c +++ b/Source/exehead/Ui.c @@ -778,22 +778,25 @@ static BOOL CALLBACK UninstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l #endif -static char * NSISCALL inttosizestr(unsigned kb, char *str) +static void NSISCALL SetSizeText(int dlgItem, int prefix, unsigned kb) { char scalestr[32], byte[32]; - char sh=20; + unsigned sh=20; int scale=LANG_GIGA; + if (kb < 1024) { sh=0; scale=LANG_KILO; } else if (kb < 1024*1024) { sh=10; scale=LANG_MEGA; } + wsprintf( - str+mystrlen(str), + GetNSISString(g_tmp,prefix)+mystrlen(g_tmp), "%u.%u%s%s", kb>>sh, ((kb*10)>>sh)%10, GetNSISString(scalestr,scale), GetNSISString(byte,LANG_BYTE) ); - return str; + + my_SetDialogItemText(m_curwnd,dlgItem,g_tmp); } static int NSISCALL _sumsecsfield(int idx) @@ -941,9 +944,9 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar error = NSIS_INSTDIR_NOT_ENOUGH_SPACE; if (LANG_STR_TAB(LANG_SPACE_REQ)) { - SetUITextNT(IDC_SPACEREQUIRED,inttosizestr(total,GetNSISString(s,LANG_SPACE_REQ))); + SetSizeText(IDC_SPACEREQUIRED,LANG_SPACE_REQ,total); if (available_set) - SetUITextNT(IDC_SPACEAVAILABLE,inttosizestr(available,GetNSISString(s,LANG_SPACE_AVAIL))); + SetSizeText(IDC_SPACEAVAILABLE,LANG_SPACE_AVAIL,available); else SetUITextNT(IDC_SPACEAVAILABLE,""); } @@ -1350,7 +1353,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar RefreshComponents(hwndTree1, hTreeItems); if (LANG_STR_TAB(LANG_SPACE_REQ)) { - SetUITextNT(IDC_SPACEREQUIRED,inttosizestr(sumsecsfield(size_kb),GetNSISString(g_tmp,LANG_SPACE_REQ))); + SetSizeText(IDC_SPACEREQUIRED,LANG_SPACE_REQ,sumsecsfield(size_kb)); } }