void NewClassDlg::GetNewClassInfo(NewClassInfo& info) { info.name = this->GetClassName(); this->GetNamespacesList(info.namespacesList); this->GetInheritance(info.parents); if(this->IsInline()) { info.isInline = true; info.isSingleton = false; } else { info.isInline = false; info.isSingleton = this->IsSingleton(); } info.hppHeader = this->HppHeader(); info.path = this->GetClassPath().Trim().Trim(false); info.isAssingable = this->IsCopyableClass(); info.fileName = wxFileName(GetClassFile()).GetName(); // Ommit any suffix the user might have typed in info.isVirtualDtor = m_checkBoxVirtualDtor->IsChecked(); info.implAllPureVirtual = m_checkBoxImplPureVirtual->IsChecked(); info.implAllVirtual = m_checkBoxImplVirtual->IsChecked(); info.usePragmaOnce = m_checkBoxPragmaOnce->IsChecked(); info.virtualDirectory = m_textCtrlVD->GetValue().Trim().Trim(false); info.blockGuard = m_textCtrlBlockGuard->GetValue().Trim().Trim(false); }
/****************************************************************************** * FileMoniker_BindToObject */ static HRESULT WINAPI FileMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult) { FileMonikerImpl *This = impl_from_IMoniker(iface); HRESULT res=E_FAIL; CLSID clsID; IUnknown* pObj=0; IRunningObjectTable *prot=0; IPersistFile *ppf=0; IClassFactory *pcf=0; IClassActivator *pca=0; *ppvResult=0; TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult); if(pmkToLeft==NULL){ res=IBindCtx_GetRunningObjectTable(pbc,&prot); if (SUCCEEDED(res)){ /* if the requested class was loaded before ! we don't need to reload it */ res = IRunningObjectTable_GetObject(prot,iface,&pObj); if (res==S_FALSE){ /* first activation of this class */ res=GetClassFile(This->filePathName,&clsID); if (SUCCEEDED(res)){ res=CoCreateInstance(&clsID,NULL,CLSCTX_ALL,&IID_IPersistFile,(void**)&ppf); if (SUCCEEDED(res)){ res=IPersistFile_Load(ppf,This->filePathName,STGM_READ); if (SUCCEEDED(res)){ pObj=(IUnknown*)ppf; IUnknown_AddRef(pObj); } } } } } } else{ res=IMoniker_BindToObject(pmkToLeft,pbc,NULL,&IID_IClassFactory,(void**)&pcf); if (res==E_NOINTERFACE){ res=IMoniker_BindToObject(pmkToLeft,pbc,NULL,&IID_IClassActivator,(void**)&pca); if (res==E_NOINTERFACE) return MK_E_INTERMEDIATEINTERFACENOTSUPPORTED; } if (pcf!=NULL){ IClassFactory_CreateInstance(pcf,NULL,&IID_IPersistFile,(void**)&ppf); res=IPersistFile_Load(ppf,This->filePathName,STGM_READ); if (SUCCEEDED(res)){ pObj=(IUnknown*)ppf; IUnknown_AddRef(pObj); } } if (pca!=NULL){ FIXME("()\n"); /*res=GetClassFile(This->filePathName,&clsID); if (SUCCEEDED(res)){ res=IClassActivator_GetClassObject(pca,&clsID,CLSCTX_ALL,0,&IID_IPersistFile,(void**)&ppf); if (SUCCEEDED(res)){ pObj=(IUnknown*)ppf; IUnknown_AddRef(pObj); } }*/ } } if (pObj!=NULL){ /* get the requested interface from the loaded class */ res= IUnknown_QueryInterface(pObj,riid,ppvResult); IBindCtx_RegisterObjectBound(pbc,*ppvResult); IUnknown_Release(pObj); } if (prot!=NULL) IRunningObjectTable_Release(prot); if (ppf!=NULL) IPersistFile_Release(ppf); if (pca!=NULL) IClassActivator_Release(pca); if (pcf!=NULL) IClassFactory_Release(pcf); return res; }
void NewClassDlg::OnOkUpdateUI(wxUpdateUIEvent& event) { event.Enable(!(GetClassFile().IsEmpty() || GetVirtualDirectoryPath().IsEmpty())); }
/** * \brief */ bool NewClassDlg::ValidateInput() { // validate the class name if(!IsValidCppIndetifier(m_textClassName->GetValue())) { wxString msg; msg << wxT("'") << m_textClassName->GetValue() << _("' is not a valid C++ qualifier"); wxMessageBox(msg, _("CodeLite"), wxOK | wxICON_WARNING); return false; } // validate the namespace if(!m_textCtrlNamespace->GetValue().IsEmpty()) { wxArrayString namespacesList; this->GetNamespacesList(namespacesList); // validate each namespace for(unsigned int i = 0; i < namespacesList.Count(); i++) { if(!IsValidCppIndetifier(namespacesList[i])) { wxString msg; msg << wxT("'") << namespacesList[i] << _("' is not a valid C++ qualifier"); wxMessageBox(msg, _("CodeLite"), wxOK | wxICON_WARNING); return false; } } } // validate the path of the class wxString path(m_textCtrlGenFilePath->GetValue()); if(!wxDir::Exists(path)) { wxString msg; msg << wxT("'") << path << _("': directory does not exist"); wxMessageBox(msg, _("CodeLite"), wxOK | wxICON_WARNING); return false; } if(GetClassFile().IsEmpty()) { wxMessageBox(_("Empty file name"), _("CodeLite"), wxOK | wxICON_WARNING); return false; } wxString cpp_file; cpp_file << GetClassPath() << wxFileName::GetPathSeparator() << GetClassFile() << wxT(".cpp"); if(wxFileName::FileExists(cpp_file)) { if(wxMessageBox( wxString::Format(_("A file with this name: '%s' already exists, continue anyway?"), cpp_file.GetData()), _("CodeLite"), wxYES_NO | wxICON_WARNING) == wxNO) { return false; } } wxString h_file; h_file << GetClassPath() << wxFileName::GetPathSeparator() << GetClassFile() << wxT(".h"); if(wxFileName::FileExists(h_file)) { if(wxMessageBox( wxString::Format(_("A file with this name: '%s' already exists, continue anyway?"), h_file.GetData()), _("CodeLite"), wxYES_NO | wxICON_WARNING) == wxNO) { return false; } } if(GetVirtualDirectoryPath().IsEmpty()) { wxMessageBox(_("Please select a virtual directory"), _("CodeLite"), wxOK | wxICON_WARNING); return false; } return true; }