CProjectNewDialog::CProjectNewDialog(CWnd* pParent /*=NULL*/) : CTemplateDialog(CProjectNewDialog::IDD, pParent), m_wndBrowseButton(IDC_EDIT_PROJECTPATH, CString((LPCTSTR)STE_SELECT_PROJECT_PATH)), m_bIgnoreProjectPathChange(FALSE) { //{{AFX_DATA_INIT(CProjectNewDialog) m_strProjectName = _T(""); m_bUseBibTex = FALSE; m_bUseMakeIndex = FALSE; //}}AFX_DATA_INIT // Add template for empty project std::unique_ptr<CTemplateItem> pItem(new CEmptyProjectTemplateItem); AddTemplateItem(CString((LPCTSTR)STE_EMPTYPROJECT_CATEGORY), std::move(pItem)); //Get Project base path m_strProjectBasePath = AfxGetDefaultDirectory(true, true); if (m_strProjectBasePath.IsEmpty()) { LPITEMIDLIST lpidl; if (SHGetSpecialFolderLocation(AfxGetMainWnd()->m_hWnd, CSIDL_PERSONAL, &lpidl) == NOERROR) { SHGetPathFromIDList(lpidl, m_strProjectBasePath.GetBuffer(MAX_PATH)); m_strProjectBasePath.ReleaseBuffer(); //free memory LPMALLOC lpMalloc; SHGetMalloc(&lpMalloc); if (lpMalloc) lpMalloc->Free(lpidl); } } m_strProjectPath = m_strProjectBasePath; m_nFileFormat = CConfiguration::GetInstance()->m_nStandardFileFormat; //Set the info about the first tab to be activated m_nFirstTab = CConfiguration::GetInstance()->m_nLastTabProjectTemplateDlg; }
BPopUpMenu * BuildPopUp(BDirectory &dir) { BPopUpMenu *menu = new BPopUpMenu("menu", false); //BMenuItem *item; //BMessage *msg; //status_t err; //menu->SetFont(be_plain_font); AddTemplateItem(menu, B_UTF8_COPYRIGHT " Haiku", sHaikuHeaderTemplate); /* AddTemplateItem(menu, B_UTF8_COPYRIGHT " Haiku (Add me)", sHaikuAddMeHeaderTemplate, sHaikuAddMeHeaderMatch); */ AddTemplateItem(menu, B_UTF8_COPYRIGHT " Me (Haiku)", sHaikuMeHeaderTemplate); AddTemplateItem(menu, B_UTF8_COPYRIGHT " Me (Haiku) + Rights Reserved", sHaikuMeRightsHeaderTemplate); AddTemplateItem(menu, "Id + " B_UTF8_COPYRIGHT "Me + MIT + Created", sIdMeMITCreatedHeaderTemplate); AddTemplateItem(menu, "Id + " B_UTF8_COPYRIGHT "Me + Full MIT + Created", sIdMeFullMITCreatedHeaderTemplate); AddTemplateItem(menu, "Id + " B_UTF8_COPYRIGHT "Me + Full MIT Revised + Created", sIdMeFullMITRevisedCreatedHeaderTemplate); if (dir.InitCheck() < B_OK) return menu; entry_ref ref; while (dir.GetNextRef(&ref) == B_OK) { BFile file(&ref, B_READ_ONLY); if (file.InitCheck() < B_OK) continue; BString str; char *p = str.LockBuffer(1024); memset(p, 0, 1024); if (file.Read(p, 1024) <= 0) continue; str.UnlockBuffer(); AddTemplateItem(menu, ref.name, str.String()); } menu->AddSeparatorItem(); menu->AddItem(new BMenuItem("Open template folder"B_UTF8_ELLIPSIS, new BMessage('optf'))); menu->AddItem(new BMenuItem("Set author"B_UTF8_ELLIPSIS, new BMessage('seta'))); menu->AddItem(new BMenuItem("About"B_UTF8_ELLIPSIS, new BMessage(B_ABOUT_REQUESTED))); return menu; }