BOOL CLanguagesDlg::OnInitDialog() { CDialog::OnInitDialog(); NewGUI_TranslateCWnd(this); EnumChildWindows(this->m_hWnd, NewGUI_TranslateWindowCb, 0); NewGUI_XPButton(m_btClose, IDB_CANCEL, IDB_CANCEL); NewGUI_XPButton(m_btGetLang, IDB_LANGUAGE, IDB_LANGUAGE); NewGUI_XPButton(m_btOpenFolder, IDB_TB_OPEN, IDB_TB_OPEN); NewGUI_ConfigSideBanner(&m_banner, this); m_banner.SetIcon(AfxGetApp()->LoadIcon(IDI_WORLD), KCSB_ICON_LEFT | KCSB_ICON_VCENTER); m_banner.SetTitle(TRL("Select Language")); m_banner.SetCaption(TRL("Here you can change the user interface language.")); RECT rcList; m_listLang.GetClientRect(&rcList); const int wList = rcList.right - rcList.left - GetSystemMetrics(SM_CXVSCROLL); const int w2 = (wList * 2) / 20; const int w3 = (wList * 3) / 20; const int w5 = (wList * 5) / 20; m_listLang.InsertColumn(0, TRL("Installed Languages"), LVCFMT_LEFT, w5, 0); m_listLang.InsertColumn(1, TRL("Version"), LVCFMT_LEFT, w2, 1); m_listLang.InsertColumn(2, TRL("Author"), LVCFMT_LEFT, w5, 2); m_listLang.InsertColumn(3, TRL("Contact"), LVCFMT_LEFT, w5, 3); m_listLang.InsertColumn(4, TRL("File"), LVCFMT_LEFT, w3, 4); // m_ilIcons.Create(CPwSafeApp::GetClientIconsResourceID(), 16, 1, RGB(255,0,255)); CPwSafeApp::CreateHiColorImageList(&m_ilIcons, IDB_CLIENTICONS_EX, 16); m_listLang.SetImageList(&m_ilIcons, LVSIL_SMALL); m_listLang.PostMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SI_REPORT | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT | LVS_EX_INFOTIP); m_listLang.DeleteAllItems(); LV_ITEM lvi; ZeroMemory(&lvi, sizeof(LV_ITEM)); lvi.iItem = m_listLang.InsertItem(LVIF_TEXT | LVIF_IMAGE, m_listLang.GetItemCount(), _T("English"), 0, 0, 1, NULL); CString strTemp; strTemp = PWM_VERSION_STR; lvi.iSubItem = 1; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = PWMX_ENGLISH_AUTHOR; lvi.iSubItem = 2; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = PWMX_ENGLISH_CONTACT; lvi.iSubItem = 3; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = TRL("Built-in"); lvi.iSubItem = 4; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); const std_string strActive = GetCurrentTranslationTable(); std_string strFilter = SU_DriveLetterToUpper(Executable::instance().getPathOnly()); strFilter += PWM_DIR_LANGUAGES; strFilter += _T("\\*.lng"); CFileFind ff; BOOL bMore = ff.FindFile(strFilter.c_str(), 0); while(bMore != FALSE) { bMore = ff.FindNextFile(); // Ignore KeePass 2.x LNGX files (these are found even though // "*.lng" is specified as file mask) CString strFileName = ff.GetFileName(); strFileName = strFileName.MakeLower(); if((strFileName.GetLength() >= 5) && (strFileName.Right(5) == _T(".lngx"))) continue; CString strID = ff.GetFileTitle(); strID = strID.MakeLower(); if((strID != _T("standard")) && (strID != _T("english"))) { VERIFY(LoadTranslationTable((LPCTSTR)ff.GetFileTitle())); strTemp = (LPCTSTR)ff.GetFileTitle(); // strTemp += _T(" - "); // Name is used as identifier // strTemp += TRL("~LANGUAGENAME"); lvi.iItem = m_listLang.InsertItem(LVIF_TEXT | LVIF_IMAGE, m_listLang.GetItemCount(), strTemp, 0, 0, 1, NULL); strTemp = TRL("~LANGUAGEVERSION"); if(strTemp == _T("~LANGUAGEVERSION")) strTemp.Empty(); lvi.iSubItem = 1; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = TRL("~LANGUAGEAUTHOR"); if(strTemp == _T("~LANGUAGEAUTHOR")) strTemp.Empty(); lvi.iSubItem = 2; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = TRL("~LANGUAGEAUTHOREMAIL"); if(strTemp == _T("~LANGUAGEAUTHOREMAIL")) strTemp.Empty(); lvi.iSubItem = 3; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = ff.GetFilePath(); lvi.iSubItem = 4; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); } } ff.Close(); VERIFY(LoadTranslationTable(strActive.c_str())); return TRUE; }
BOOL CLanguagesDlg::OnInitDialog() { CDialog::OnInitDialog(); NewGUI_TranslateCWnd(this); EnumChildWindows(this->m_hWnd, NewGUI_TranslateWindowCb, 0); NewGUI_XPButton(m_btClose, IDB_CANCEL, IDB_CANCEL); NewGUI_XPButton(m_btGetLang, IDB_LANGUAGE, IDB_LANGUAGE); NewGUI_ConfigSideBanner(&m_banner, this); m_banner.SetIcon(AfxGetApp()->LoadIcon(IDI_WORLD), KCSB_ICON_LEFT | KCSB_ICON_VCENTER); m_banner.SetTitle(TRL("Load a Language File")); m_banner.SetCaption(TRL("Select one of the languages in the list below.")); RECT rcList; m_listLang.GetWindowRect(&rcList); const int nColSize = (rcList.right - rcList.left - GetSystemMetrics(SM_CXVSCROLL) - 8) / 4; m_listLang.InsertColumn(0, TRL("Available Languages"), LVCFMT_LEFT, nColSize, 0); m_listLang.InsertColumn(1, TRL("Language File Version"), LVCFMT_LEFT, nColSize, 1); m_listLang.InsertColumn(2, TRL("Author"), LVCFMT_LEFT, nColSize, 2); m_listLang.InsertColumn(3, TRL("Translation Author Contact"), LVCFMT_LEFT, nColSize, 3); // m_ilIcons.Create(CPwSafeApp::GetClientIconsResourceID(), 16, 1, RGB(255,0,255)); CPwSafeApp::CreateHiColorImageList(&m_ilIcons, IDB_CLIENTICONS_EX, 16); m_listLang.SetImageList(&m_ilIcons, LVSIL_SMALL); m_listLang.PostMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SI_REPORT | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT | LVS_EX_INFOTIP); m_listLang.DeleteAllItems(); LV_ITEM lvi; ZeroMemory(&lvi, sizeof(LV_ITEM)); lvi.iItem = m_listLang.InsertItem(LVIF_TEXT | LVIF_IMAGE, m_listLang.GetItemCount(), _T("English"), 0, 0, 1, NULL); CString strTemp; strTemp = PWM_VERSION_STR; lvi.iSubItem = 1; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = PWMX_ENGLISH_AUTHOR; lvi.iSubItem = 2; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = PWMX_ENGLISH_CONTACT; lvi.iSubItem = 3; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); CFileFind ff; CString csTmp; BOOL chk_w = FALSE; TCHAR szCurrentlyLoaded[MAX_PATH * 2]; _tcscpy_s(szCurrentlyLoaded, _countof(szCurrentlyLoaded), GetCurrentTranslationTable()); std_string strFilter = Executable::instance().getPathOnly(); strFilter += _T("*.lng"); chk_w = ff.FindFile(strFilter.c_str(), 0); while(chk_w == TRUE) { chk_w = ff.FindNextFile(); csTmp = ff.GetFileTitle(); csTmp = csTmp.MakeLower(); if((csTmp != _T("standard")) && (csTmp != _T("english"))) { VERIFY(LoadTranslationTable((LPCTSTR)ff.GetFileTitle())); strTemp = (LPCTSTR)ff.GetFileTitle(); // strTemp += _T(" - "); // strTemp += TRL("~LANGUAGENAME"); lvi.iItem = m_listLang.InsertItem(LVIF_TEXT | LVIF_IMAGE, m_listLang.GetItemCount(), strTemp, 0, 0, 1, NULL); strTemp = TRL("~LANGUAGEVERSION"); if(strTemp == _T("~LANGUAGEVERSION")) strTemp.Empty(); lvi.iSubItem = 1; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = TRL("~LANGUAGEAUTHOR"); if(strTemp == _T("~LANGUAGEAUTHOR")) strTemp.Empty(); lvi.iSubItem = 2; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); strTemp = TRL("~LANGUAGEAUTHOREMAIL"); if(strTemp == _T("~LANGUAGEAUTHOREMAIL")) strTemp.Empty(); lvi.iSubItem = 3; lvi.mask = LVIF_TEXT; lvi.pszText = (LPTSTR)(LPCTSTR)strTemp; m_listLang.SetItem(&lvi); } } ff.Close(); VERIFY(LoadTranslationTable(szCurrentlyLoaded)); return TRUE; }