From a993efb0503615efb7a3bcdce1ce91575448e789 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 10 Jul 2012 12:33:30 +0000 Subject: - tooltips for TopToolbar buttons - replaceStr/replaceStrW moved to mir_core git-svn-id: http://svn.miranda-ng.org/main/trunk@886 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TopToolBar/common.h | 12 ++++---- plugins/TopToolBar/toolbar.cpp | 61 +++++++++++++++------------------------- plugins/TopToolBar/topbutton.cpp | 54 ++++++++++++++++++++--------------- plugins/TopToolBar/ttbopt.cpp | 22 +++++++-------- 4 files changed, 70 insertions(+), 79 deletions(-) (limited to 'plugins/TopToolBar') diff --git a/plugins/TopToolBar/common.h b/plugins/TopToolBar/common.h index 82060ac458..82fad3485f 100644 --- a/plugins/TopToolBar/common.h +++ b/plugins/TopToolBar/common.h @@ -69,18 +69,18 @@ struct TopButtonInt HICON hIconUp, hIconDn; HANDLE hIconHandleUp, hIconHandleDn; - char *pszService; - TCHAR *program; - char *name; - TCHAR *tooltip; + char *pszService; + TCHAR *ptszProgram; + char *pszName; + TCHAR *ptszTooltip; LPARAM lParamUp; WPARAM wParamUp; LPARAM lParamDown; WPARAM wParamDown; - int hLangpack; - char *szTooltipUp, *szTooltipDn; + int hLangpack; + TCHAR *ptszTooltipUp, *ptszTooltipDn; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/plugins/TopToolBar/toolbar.cpp b/plugins/TopToolBar/toolbar.cpp index 5e0e2a02f7..48957e9171 100644 --- a/plugins/TopToolBar/toolbar.cpp +++ b/plugins/TopToolBar/toolbar.cpp @@ -77,7 +77,7 @@ INT_PTR LaunchService(WPARAM wParam, LPARAM lParam) STARTUPINFO si = {0}; si.cb = sizeof(si); - if ( CreateProcess(NULL, Buttons[lParam]->program, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { + if ( CreateProcess(NULL, Buttons[lParam]->ptszProgram, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } @@ -188,7 +188,7 @@ static bool nameexists(const char *name) return false; for (int i = 0; i < Buttons.getCount(); i++) - if ( !lstrcmpA(Buttons[i]->name, name)) + if ( !lstrcmpA(Buttons[i]->pszName, name)) return true; return false; @@ -219,11 +219,11 @@ static void ReloadIcons() char buf[256]; if (b->hIconHandleUp) { - sprintf(buf, "%s_up", b->name); + sprintf(buf, "%s_up", b->pszName); b->hIconUp = LoadIconFromLibrary(buf, b->hIconUp, b->hIconHandleUp); } if (b->hIconHandleDn) { - sprintf(buf, "%s_dn", b->name); + sprintf(buf, "%s_dn", b->pszName); b->hIconDn = LoadIconFromLibrary(buf, b->hIconDn, b->hIconHandleDn); } } @@ -245,22 +245,15 @@ TopButtonInt* CreateButton(TTBButton* but) b->bPushed = (but->dwFlags & TTBBF_PUSHED) ? TRUE : FALSE; if (but->dwFlags & TTBBF_ISLBUTTON) { - if (but->program != NULL) - b->program = _tcsdup(but->program); - b->pszService = _strdup(TTB_LAUNCHSERVICE); + b->ptszProgram = mir_tstrdup(but->program); + b->pszService = mir_strdup(TTB_LAUNCHSERVICE); } else { - b->program = NULL; - if (but->pszService != NULL) - b->pszService = _strdup(but->pszService); - else - b->pszService = NULL; + b->ptszProgram = NULL; + b->pszService = mir_strdup(but->pszService); } - if (but->name != NULL) - b->name = _strdup(but->name); - else - b->name = NULL; + b->pszName = mir_strdup(but->name); if (b->dwFlags & TTBBF_ICONBYHANDLE) { b->hIconUp = Skin_GetIconByHandle(b->hIconHandleUp = but->hIconHandleUp); @@ -271,17 +264,17 @@ TopButtonInt* CreateButton(TTBButton* but) } else { char buf[256]; - mir_snprintf(buf, SIZEOF(buf), (b->hIconDn) ? "%s_up" : "%s", b->name); + mir_snprintf(buf, SIZEOF(buf), (b->hIconDn) ? "%s_up" : "%s", b->pszName); b->hIconUp = LoadIconFromLibrary(buf, but->hIconUp, b->hIconHandleUp); if (b->hIconDn) { - mir_snprintf(buf, SIZEOF(buf), "%s_dn", b->name); + mir_snprintf(buf, SIZEOF(buf), "%s_dn", b->pszName); b->hIconDn = LoadIconFromLibrary(buf, but->hIconDn, b->hIconHandleDn); } } if (but->cbSize > OLD_TBBUTTON_SIZE) { - b->szTooltipUp = but->pszTooltipUp; - b->szTooltipDn = but->pszTooltipDn; + b->ptszTooltipUp = mir_a2t(but->pszTooltipUp); + b->ptszTooltipDn = mir_a2t(but->pszTooltipDn); } } return b; @@ -418,7 +411,7 @@ INT_PTR TTBGetOptions(WPARAM wParam, LPARAM lParam) break; case TTBO_TIPNAME: - retval = (INT_PTR)b->tooltip; + retval = (INT_PTR)b->ptszTooltip; break; case TTBO_ALLDATA: @@ -440,9 +433,9 @@ INT_PTR TTBGetOptions(WPARAM wParam, LPARAM lParam) lpTTB->wParamDown = b->wParamDown; if (b->dwFlags & TTBBF_ISLBUTTON) - lpTTB->program = _tcsdup(b->program); + replaceStrT(lpTTB->program, b->ptszProgram); else - lpTTB->pszService = _strdup(b->pszService); + replaceStr(lpTTB->pszService, b->pszService); retval = ( INT_PTR )lpTTB; } @@ -486,10 +479,8 @@ INT_PTR TTBSetOptions(WPARAM wParam, LPARAM lParam) if (lParam == 0) break; - if (b->tooltip != NULL) - free(b->tooltip); - b->tooltip = _tcsdup( TranslateTS( _A2T((LPCSTR)lParam))); - SendMessage(b->hwnd,BUTTONADDTOOLTIP,(WPARAM)b->tooltip,BATF_UNICODE); + replaceStrT(b->ptszTooltip, TranslateTS( _A2T((LPCSTR)lParam))); + SendMessage(b->hwnd,BUTTONADDTOOLTIP,(WPARAM)b->ptszTooltip,BATF_UNICODE); retval = 1; break; @@ -518,18 +509,10 @@ INT_PTR TTBSetOptions(WPARAM wParam, LPARAM lParam) b->SaveSettings(0,0); } - if (b->dwFlags & TTBBF_ISLBUTTON) { - if (b->program != NULL) - free(b->program); - b->program = _tcsdup(lpTTB->program); -// don't save program changing in use buttons -// changed = 1; // for launch buttons from user, not options (options don't share handles) - } - else { - if (b->pszService != NULL) - free(b->pszService); - b->pszService = _strdup(lpTTB->pszService); - } + if (b->dwFlags & TTBBF_ISLBUTTON) + replaceStrT(b->ptszProgram, lpTTB->program); + else + replaceStr(b->pszService, lpTTB->pszService); b->lParamUp = lpTTB->lParamUp; b->wParamUp = lpTTB->wParamUp; diff --git a/plugins/TopToolBar/topbutton.cpp b/plugins/TopToolBar/topbutton.cpp index 9a1cbe0200..5bcab82017 100644 --- a/plugins/TopToolBar/topbutton.cpp +++ b/plugins/TopToolBar/topbutton.cpp @@ -8,16 +8,15 @@ static int maxid = 10000; TopButtonInt::~TopButtonInt() { if (dwFlags & TTBBF_ISLBUTTON) { - if (program != NULL) - free(program); + mir_free(ptszProgram); } else if (pszService != NULL) - free(pszService); + mir_free(pszService); - if (name != NULL) - free(name); - if (tooltip != NULL) - free(tooltip); + mir_free(pszName); + mir_free(ptszTooltip); + mir_free(ptszTooltipDn); + mir_free(ptszTooltipUp); } DWORD TopButtonInt::CheckFlags(DWORD Flags) @@ -34,7 +33,7 @@ DWORD TopButtonInt::CheckFlags(DWORD Flags) if ( BitChanged(TTBBF_SHOWTOOLTIP)) { dwFlags ^= TTBBF_SHOWTOOLTIP; SendMessage(hwnd,BUTTONADDTOOLTIP, - (WPARAM)((dwFlags & TTBBF_SHOWTOOLTIP)?tooltip:L""),BATF_UNICODE); + (WPARAM)((dwFlags & TTBBF_SHOWTOOLTIP) ? ptszTooltip : _T("")), BATF_TCHAR); } // next settings changing visual side, requires additional actions if ( BitChanged(TTBBF_VISIBLE)) { @@ -96,18 +95,19 @@ void TopButtonInt::LoadSettings() char buf2[20]; AS(buf2, "Launch", buf1); - if (name != NULL) free(name); - name = DBGetString(0, TTB_OPTDIR, AS(buf, buf2, "_name")); - if (program != NULL) free(program); - program = DBGetStringT(0, TTB_OPTDIR, AS(buf, buf2, "_lpath")); + mir_free(pszName); + pszName = DBGetString(0, TTB_OPTDIR, AS(buf, buf2, "_name")); + + mir_free(ptszProgram); + ptszProgram = DBGetStringT(0, TTB_OPTDIR, AS(buf, buf2, "_lpath")); arrangedpos = DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, buf2, "_Position"), Buttons.getCount()); if ( DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, buf2, "_Visible"), oldv) > 0 ) dwFlags |= TTBBF_VISIBLE; } else { - arrangedpos = DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, name, "_Position"), Buttons.getCount()); - if ( DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, name, "_Visible"), oldv) > 0 ) + arrangedpos = DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, pszName, "_Position"), Buttons.getCount()); + if ( DBGetContactSettingByte(0, TTB_OPTDIR, AS(buf, pszName, "_Visible"), oldv) > 0 ) dwFlags |= TTBBF_VISIBLE; } @@ -134,14 +134,14 @@ void TopButtonInt::SaveSettings(int *SepCnt, int *LaunchCnt) char buf2[20]; AS(buf2, "Launch", buf1); - DBWriteContactSettingString(0, TTB_OPTDIR, AS(buf, buf2, "_name"), name); - DBWriteContactSettingTString(0, TTB_OPTDIR, AS(buf, buf2, "_lpath"), program); + DBWriteContactSettingString(0, TTB_OPTDIR, AS(buf, buf2, "_name"), pszName); + DBWriteContactSettingTString(0, TTB_OPTDIR, AS(buf, buf2, "_lpath"), ptszProgram); DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, buf2, "_Position"), arrangedpos); DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, buf2, "_Visible"), dwFlags & TTBBF_VISIBLE); } else { - DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, name, "_Position"), arrangedpos); - DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, name, "_Visible"), dwFlags & TTBBF_VISIBLE); + DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, pszName, "_Position"), arrangedpos); + DBWriteContactSettingByte(0, TTB_OPTDIR, AS(buf, pszName, "_Visible"), dwFlags & TTBBF_VISIBLE); } } @@ -160,9 +160,19 @@ void TopButtonInt::SetBitmap() if (GetWindowLongPtr(hwnd, GWL_STYLE) & SS_ICON) SetWindowLongPtr(hwnd, GWL_STYLE, curstyle | SS_ICON); - HICON bicon = (hIconDn)?hIconDn:hIconUp; - - SendMessage(hwnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)((bPushed)?(bicon):(hIconUp))); - SendMessage(hwnd, BM_SETCHECK, bPushed?BST_CHECKED:BST_UNCHECKED ,0); + TCHAR* pTooltip; + if (bPushed) { + SendMessage(hwnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)((hIconDn) ? hIconDn : hIconUp)); + SendMessage(hwnd, BM_SETCHECK, BST_CHECKED, 0); + + pTooltip = (ptszTooltipDn) ? ptszTooltipDn : ptszTooltipUp; + } + else { + SendMessage(hwnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIconUp); + SendMessage(hwnd, BM_SETCHECK, BST_UNCHECKED, 0); + pTooltip = ptszTooltipUp; + } + if (pTooltip) + SendMessage(hwnd, BUTTONADDTOOLTIP, (WPARAM)TranslateTH(hLangpack, pTooltip), BATF_TCHAR); } } diff --git a/plugins/TopToolBar/ttbopt.cpp b/plugins/TopToolBar/ttbopt.cpp index 2662a44eef..5fd2edef80 100644 --- a/plugins/TopToolBar/ttbopt.cpp +++ b/plugins/TopToolBar/ttbopt.cpp @@ -32,7 +32,7 @@ static HTREEITEM AddLine(HWND hTree,TopButtonInt *b, HTREEITEM hItem, HIMAGELIST } else index = ImageList_AddIcon(il, b->hIconUp); - tmp = mir_a2t( b->name ); + tmp = mir_a2t( b->pszName ); tvis.item.pszText = TranslateTS(tmp); } tvis.item.iImage = tvis.item.iSelectedImage = index; @@ -273,17 +273,15 @@ static INT_PTR CALLBACK ButOrderOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR TreeView_SetItem(hTree, &tvi); } - if (btn->name) free(btn->name); GetDlgItemText(hwndDlg, IDC_ENAME, buf, 255); - btn->name = _strdup( _T2A(buf)); - - if (btn->program) free(btn->program); - GetDlgItemText(hwndDlg, IDC_EPATH, buf, 255); - btn->program = _tcsdup(buf); + replaceStr(btn->pszName, _T2A(buf)); tvi.mask = TVIF_TEXT; - tvi.pszText = mir_a2t( btn->name ); + tvi.pszText = buf; TreeView_SetItem(hTree, &tvi); + + GetDlgItemText(hwndDlg, IDC_EPATH, buf, 255); + replaceStrT(btn->ptszProgram, buf); } break; } @@ -415,13 +413,13 @@ static INT_PTR CALLBACK ButOrderOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR EnableWindow(GetDlgItem(hwndDlg, IDC_EPATH), enable); EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEBUTTON), enable); EnableWindow(GetDlgItem(hwndDlg, IDC_LBUTTONSET), enable); - if (btn->name != NULL) - SetDlgItemTextA(hwndDlg, IDC_ENAME, btn->name); + if (btn->pszName != NULL) + SetDlgItemTextA(hwndDlg, IDC_ENAME, btn->pszName); else SetDlgItemTextA(hwndDlg, IDC_ENAME, ""); - if (btn->program != NULL) - SetDlgItemText(hwndDlg, IDC_EPATH, btn->program); + if (btn->ptszProgram != NULL) + SetDlgItemText(hwndDlg, IDC_EPATH, btn->ptszProgram); else SetDlgItemTextA(hwndDlg, IDC_EPATH, ""); } -- cgit v1.2.3