void PHPEditorContextMenu::OnGenerateSettersGetters(wxCommandEvent& e) { // CHeck the current context IEditor* editor = m_manager->GetActiveEditor(); if(editor) { // determine the scope name at the current position // Parse until the current position wxString text = editor->GetTextRange(0, editor->GetCurrentPosition()); PHPSourceFile sourceFile(text); sourceFile.SetParseFunctionBody(true); sourceFile.SetFilename(editor->GetFileName()); sourceFile.Parse(); const PHPEntityClass* scopeAtPoint = sourceFile.Class()->Cast<PHPEntityClass>(); if(!scopeAtPoint) { // Could not determine the scope at the give location return; } // get the class name wxString className = scopeAtPoint->GetShortName(); // generate the code to generate wxString textToAdd; PHPSettersGettersDialog dlg(EventNotifier::Get()->TopFrame(), editor, m_manager); if(dlg.ShowModal() == wxID_OK) { PHPSetterGetterEntry::Vec_t members = dlg.GetMembers(); for(size_t i = 0; i < members.size(); ++i) { textToAdd << members.at(i).GetSetter(dlg.GetScope(), dlg.GetFlags()) << "\n"; textToAdd << members.at(i).GetGetter(dlg.GetFlags()) << "\n"; } if(!textToAdd.IsEmpty()) { int line = PHPCodeCompletion::Instance()->GetLocationForSettersGetters( editor->GetTextRange(0, editor->GetLength()), className); if(!textToAdd.IsEmpty() && line != wxNOT_FOUND) { editor->GetCtrl()->InsertText(editor->PosFromLine(line), textToAdd); } } } } }
void PHPCodeCompletion::OnInsertDoxyBlock(clCodeCompletionEvent& e) { e.Skip(); // Do we have a workspace open? CHECK_COND_RET(PHPWorkspace::Get()->IsOpen()); // Sanity IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor()); CHECK_PTR_RET(editor); // Is this a PHP editor? CHECK_COND_RET(IsPHPFile(editor)); // Get the text from the caret current position // until the end of file wxString unsavedBuffer = editor->GetTextRange(editor->GetCurrentPosition(), editor->GetLength()); unsavedBuffer.Trim().Trim(false); PHPSourceFile source("<?php " + unsavedBuffer); source.SetParseFunctionBody(false); source.Parse(); PHPEntityBase::Ptr_t ns = source.Namespace(); if(ns) { const PHPEntityBase::List_t& children = ns->GetChildren(); for(PHPEntityBase::List_t::const_iterator iter = children.begin(); iter != children.end(); ++iter) { PHPEntityBase::Ptr_t match = *iter; if(match->GetLine() == 0 && match->Is(kEntityTypeFunction)) { e.Skip(false); // notify codelite to stop processing this event wxString phpdoc = match->FormatPhpDoc(); phpdoc.Trim(); e.SetTooltip(phpdoc); } } } }
void PHPWorkspaceView::DoAddFileWithContent(const wxTreeItemId& folderId, const wxFileName& filename, const wxString& content) { // file can only be added to a folder ItemData* data = DoGetItemData(folderId); if(!data || !data->IsFolder()) { return; } if(filename.FileExists()) { // a file with this name already exists wxMessageBox(_("A file with same name already exists!"), wxT("CodeLite"), wxOK | wxCENTER | wxICON_WARNING); return; } FileExtManager::FileType type = FileExtManager::GetType(filename.GetFullName()); // Create the file const wxString __EOL__ = EditorConfigST::Get()->GetOptions()->GetEOLAsString(); // Make sure that the path exists filename.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); wxFFile fp; if(fp.Open(filename.GetFullPath(), wxT("w+"))) { // if its is a PHP file, write the php tag at to the top of the file if(type == FileExtManager::TypePhp) { fp.Write(wxString() << "<?php " << __EOL__ << __EOL__ << content); } fp.Close(); } // add the new file wxString project_name = DoGetSelectedProject(); wxString folder_name = data->GetFolderPath(); PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project_name); CHECK_PTR_RET(pProject); PHPFolder::Ptr_t pFolder = pProject->Folder(folder_name); CHECK_PTR_RET(pFolder); if(PHPWorkspace::Get()->AddFile(project_name, folder_name, filename.GetFullPath())) { wxArrayString filesToAdd; filesToAdd.Add(filename.GetFullPath()); DoAddFilesToTreeView(folderId, pProject, pFolder, filesToAdd); } // Open the newly added file m_mgr->OpenFile(filename.GetFullPath()); IEditor* editor = m_mgr->GetActiveEditor(); if(editor) { editor->SetCaretAt(editor->GetLength()); } // Notify plugins about new files was added to workspace wxArrayString files; files.Add(filename.GetFullPath()); // Notify the plugins clCommandEvent evtFilesAdded(wxEVT_PROJ_FILE_ADDED); evtFilesAdded.SetStrings(files); EventNotifier::Get()->AddPendingEvent(evtFilesAdded); }
void WebTools::OnTimer(wxTimerEvent& event) { event.Skip(); time_t curtime = time(NULL); if((curtime - m_lastColourUpdate) < 5) return; IEditor* editor = m_mgr->GetActiveEditor(); // Sanity CHECK_PTR_RET(editor); CHECK_PTR_RET(editor->IsModified()); if(!IsJavaScriptFile(editor->GetFileName())) return; // This file is a modified JS file m_lastColourUpdate = time(NULL); m_jsColourThread->QueueBuffer(editor->GetFileName().GetFullPath(), editor->GetTextRange(0, editor->GetLength())); }