bool PHPWorkspaceView::IsFolderItem(const wxTreeItemId& item) { ItemData* data = DoGetItemData(item); if(!data) return false; return data->IsFolder(); }
void PHPWorkspaceView::OnNewFolder(wxCommandEvent& e) { wxUnusedVar(e); wxString name = wxGetTextFromUser(_("New Folder Name:"), _("New Folder")); if(name.IsEmpty()) return; wxString project = DoGetSelectedProject(); if(project.IsEmpty()) return; wxTreeItemId parent = m_treeCtrlView->GetSelection(); CHECK_ITEM_RET(parent); ItemData* itemData = DoGetItemData(parent); CHECK_PTR_RET(itemData); if(!itemData->IsFolder() && !itemData->IsProject()) return; PHPProject::Ptr_t proj = PHPWorkspace::Get()->GetProject(project); CHECK_PTR_RET(proj); wxString folder; if(itemData->IsFolder()) { folder << itemData->GetFolderPath() << "/" << name; } else { folder << name; } PHPFolder::Ptr_t pFolder = proj->AddFolder(folder); proj->Save(); // Update the UI DoAddFolder(parent, pFolder, proj); }
void PHPWorkspaceView::DoAddFolderFiles(const wxString& project, const wxString& folder, const wxTreeItemId& folderTreeItemId, wxStringSet_t* filesAdded) { PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project); CHECK_PTR_RET(pProject); PHPFolder::Ptr_t pFolder = pProject->Folder(folder); CHECK_PTR_RET(pFolder); wxArrayString files; pFolder->GetFiles(files, pProject->GetFilename().GetPath()); files.Sort(); for(size_t i = 0; i < files.GetCount(); ++i) { wxFileName fn(files.Item(i)); // create the user data ItemData* itemData = new ItemData(ItemData::Kind_File); itemData->SetFile(fn.GetFullPath()); itemData->SetFolderPath(folder); itemData->SetProjectName(project); int imgId = DoGetItemImgIdx(fn.GetFullName()); m_treeCtrlView->AppendItem(folderTreeItemId, fn.GetFullName(), imgId, imgId, itemData); if(filesAdded) { filesAdded->insert(fn.GetFullPath()); } } }
void PHPWorkspaceView::DoOpenFile(const wxTreeItemId& item) { ItemData* data = DoGetItemData(item); if(data && data->IsFile()) { m_mgr->OpenFile(data->GetFile()); } }
void DialogProvinceDetails::UpdateProvinceItem( ProvinceItem * val ) { if( val == nullptr ) { return; } int rowCount = ui.listWidget->rowCount(); for( int i=0; i < rowCount; i++ ) { QString valueName = ui.listWidget->item(i,0)->text(); ItemData toUpdate = val->FindItem(valueName); if( toUpdate.IsNull() == true ) { continue; } if( toUpdate.GetData().type() == QVariant::StringList ) { QStringList list = ui.listWidget->item(i,1)->text().split(",",QString::SkipEmptyParts); val->SetItem(valueName,list); } else { QString value = ui.listWidget->item(i,1)->text(); val->SetItem(valueName,value); } } }
wxTreeItemId luProjTree::findItemByData(const wxTreeItemId& parent, const wxString& data) { if (!parent.IsOk()) return parent; ItemData* item = dynamic_cast<ItemData*>(GetItemData(parent)); if (item && item->GetName() == data) return parent; if (item) gkPrintf("%s", (const char*)item->GetName()); if (HasChildren(parent)) { wxTreeItemIdValue cookie; wxTreeItemId item = GetFirstChild(parent, cookie); while (item.IsOk()) { wxTreeItemId find = findItemByData(item, data); //find is item self or children. if (find.IsOk()) return find; item = GetNextChild(item, cookie); } } return wxTreeItemId(); //not found }
void PHPWorkspaceView::OnNewClass(wxCommandEvent& e) { wxTreeItemId folderId = DoGetSingleSelection(); ItemData* data = DoGetItemData(folderId); if(!data || !data->IsFolder()) { return; } PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(data->GetProjectName()); CHECK_PTR_RET(pProject); PHPFolder::Ptr_t pFolder = pProject->Folder(data->GetFolderPath()); CHECK_PTR_RET(pFolder); NewPHPClass dlg(wxTheApp->GetTopWindow(), pFolder->GetFullPath(pProject->GetFilename().GetPath(), false)); if(dlg.ShowModal() == wxID_OK) { PHPClassDetails pcd = dlg.GetDetails(); pFolder = pProject->AddFolder(PHPFolder::GetFolderPathFromFileFullPath(pcd.GetFilepath().GetFullPath(), pProject->GetFilename().GetPath())); CHECK_PTR_RET(pFolder); folderId = EnsureFolderExists( DoGetProjectItem(pProject->GetName()), pFolder->GetPathRelativeToProject(), pProject->GetName()); DoAddFileWithContent( folderId, pcd.GetFilepath(), pcd.ToString(EditorConfigST::Get()->GetOptions()->GetEOLAsString(), " ")); } }
wxTreeItemId PHPWorkspaceView::EnsureFolderExists(const wxTreeItemId& projectItem, const wxString& path, const wxString& project) { PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project); wxASSERT_MSG(pProject, wxString::Format("Could not locate project %s", project)); int imgId = m_mgr->GetStdIcons()->GetMimeImageId(FileExtManager::TypeFolder); wxString curpath; wxTreeItemId parent = projectItem; wxArrayString parts = ::wxStringTokenize(path, "/", wxTOKEN_STRTOK); for(size_t i = 0; i < parts.GetCount(); ++i) { if(!curpath.IsEmpty()) { curpath << "/"; } curpath << parts.Item(i); if(!HasFolderWithName(parent, parts.Item(i), parent)) { ItemData* itemData = new ItemData(ItemData::Kind_Folder); itemData->SetFolderPath(curpath); itemData->SetProjectName(project); itemData->SetFolderName(parts.Item(i)); parent = m_treeCtrlView->AppendItem(parent, parts.Item(i) == "." ? pProject->GetFilename().GetPath() : parts.Item(i), imgId, imgId, itemData); } } m_treeCtrlView->SortChildren(projectItem); return parent; }
void DemoKeeper::notifyStartDrop(wraps::BaseLayout* _sender, wraps::DDItemInfo _info, bool& _result) { if (_info.sender_index != MyGUI::ITEM_NONE) { ItemData* data = *static_cast<ItemBox*>(_info.sender)->getItemDataAt<ItemData*>(_info.sender_index); _result = !data->isEmpty(); } }
void PHPWorkspaceView::OnItemActivated(wxTreeEvent& event) { ItemData* itemData = DoGetItemData(event.GetItem()); if(itemData && itemData->IsFile()) { DoOpenFile(event.GetItem()); } else { event.Skip(); } }
wxString PHPWorkspaceView::DoGetSelectedProject() { wxTreeItemId item = m_treeCtrlView->GetSelection(); if(!item.IsOk()) { return wxEmptyString; } ItemData* id = DoGetItemData(item); if(!id) return wxEmptyString; return id->GetProjectName(); }
void luProjTree::OnItemActivated(wxTreeEvent& event) { wxTreeItemId itemId = event.GetItem(); ItemData* item = (ItemData*)GetItemData(itemId); luMainFrame* frame = getLuMainFrame(); if (!item || !frame) return; int data = item->GetData(); wxString name = item->GetName(); }
void PHPWorkspaceView::DoAddFilesToTreeView(const wxTreeItemId& folderId, PHPProject::Ptr_t pProject, PHPFolder::Ptr_t pFolder, const wxArrayString& files) { for(size_t i=0; i<files.GetCount(); ++i) { ItemData *itemData = new ItemData(ItemData::Kind_File); itemData->SetFile( files.Item(i) ); itemData->SetProjectName( pProject->GetName() ); itemData->SetFolderPath( pFolder->GetPathRelativeToProject() ); int imgId = DoGetItemImgIdx(files.Item(i)); m_treeCtrlView->AppendItem(folderId, wxFileName(files.Item(i)).GetFullName(), imgId, imgId, itemData); } m_treeCtrlView->SortChildren( folderId ); }
void PHPWorkspaceView::DoDeleteSelectedFileItem() { wxTreeItemId item = DoGetSingleSelection(); CHECK_ITEM_RET(item); ItemData* itemData = DoGetItemData(item); if(!itemData || !itemData->IsFile()) return; wxString msg, caption; caption << _("Removing file '") << wxFileName(itemData->GetFile()).GetFullName() << "'"; msg << _("Removing file '") << wxFileName(itemData->GetFile()).GetFullName() << "' from project '" << itemData->GetProjectName() << "'\n" << _("You can select to remove the file from the project and optionally from the file system\n") << _("From where should codelite remove the file?"); wxMessageDialog dlg(EventNotifier::Get()->TopFrame(), msg, caption, wxYES_NO | wxCANCEL | wxCANCEL_DEFAULT); dlg.SetYesNoCancelLabels("File system && project", "Project only", "Cancel"); int answer = dlg.ShowModal(); if(answer == wxID_YES || answer == wxID_NO) { wxString fileName = itemData->GetFile(); // Remove from from project if(PHPWorkspace::Get()->DelFile(itemData->GetProjectName(), itemData->GetFolderPath(), fileName)) { m_treeCtrlView->Delete(item); } else { return; } if(answer == wxID_YES) { ::wxRemoveFile(fileName); } } }
void PHPWorkspaceView::DoAddFolder(const wxTreeItemId& parent, PHPFolder::Ptr_t folder, PHPProject::Ptr_t project) { // add the folder itself ItemData* itemData = new ItemData(ItemData::Kind_Folder); itemData->SetFolderPath(folder->GetPathRelativeToProject()); itemData->SetProjectName(project->GetName()); itemData->SetFolderName(folder->GetName()); // display name wxTreeItemId folderItem = EnsureFolderExists( DoGetProjectItem(project->GetName()), folder->GetPathRelativeToProject(), project->GetName()); // Get list of folders const PHPFolder::List_t& children = folder->GetChildren(); PHPFolder::List_t::const_iterator iter = children.begin(); for(; iter != children.end(); ++iter) { DoAddFolder(folderItem, *iter, project); } wxArrayString folderFiles; folder->GetFiles(folderFiles, project->GetFilename().GetPath(), 0); // Add the files for(size_t i = 0; i < folderFiles.GetCount(); ++i) { ItemData* itemData = new ItemData(ItemData::Kind_File); itemData->SetFile(folderFiles.Item(i)); itemData->SetProjectName(project->GetName()); itemData->SetFolderPath(folder->GetPathRelativeToProject()); int imgId = DoGetItemImgIdx(folderFiles.Item(i)); m_treeCtrlView->AppendItem(folderItem, wxFileName(folderFiles.Item(i)).GetFullName(), imgId, imgId, itemData); } }
/** Maps to what groups the source row belongs by returning the data of those groups. * * @returns a list of data for the rows the argument belongs to. In common cases this list will * contain only one entry. An empty list means that the source item will be placed in the root of * this proxyModel. There is no support for hiding source items. * * Group data can be pre-loaded in the return value so it's added to the cache maintained by this * class. This is required if you want to have data that is not present in the source model. */ QList<RowData> QtGroupingProxy::belongsTo( const QModelIndex &idx ) { //qDebug() << __FILE__ << __FUNCTION__; QList<RowData> rowDataList; //get all the data for this index from the model ItemData itemData = sourceModel()->itemData( idx ); QMapIterator<int, QVariant> i( itemData ); while( i.hasNext() ) { i.next(); int role = i.key(); QVariant variant = i.value(); // qDebug() << "role " << role << " : (" << variant.typeName() << ") : "<< variant; if( variant.type() == QVariant::List ) { //a list of variants get's expanded to multiple rows QVariantList list = variant.toList(); for( int i = 0; i < list.length(); i++ ) { //take an existing row data or create a new one RowData rowData = (rowDataList.count() > i) ? rowDataList.takeAt( i ) : RowData(); //we only gather data for the first column ItemData indexData = rowData.contains( 0 ) ? rowData.take( 0 ) : ItemData(); indexData.insert( role, list.value( i ) ); rowData.insert( 0, indexData ); //for the grouped column the data should not be gathered from the children //this will allow filtering on the content of this column with a //QSortFilterProxyModel rowData.insert( m_groupedColumn, indexData ); rowDataList.insert( i, rowData ); } } else if( !variant.isNull() ) { //it's just a normal item. Copy all the data and break this loop. RowData rowData; rowData.insert( 0, itemData ); rowDataList << rowData; break; } } return rowDataList; }
void PHPWorkspaceView::OnDeleteProject(wxCommandEvent& e) { // Prompt user wxTreeItemId selection = m_treeCtrlView->GetSelection(); if(selection.IsOk()) { ItemData* itemData = DoGetItemData(selection); if ( itemData && itemData->IsProject() ) { if(wxMessageBox(wxString() << _("Are you sure you want to delete\nproject '") << itemData->GetProjectName() << "'?", _("CodeLite"), wxYES_NO| wxCANCEL, wxTheApp->GetTopWindow()) == wxYES) { PHPWorkspace::Get()->DeleteProject(itemData->GetProjectName()); m_treeCtrlView->Delete( selection ); } } } }
void PHPWorkspaceView::OnSetProjectActive(wxCommandEvent& e) { wxString project = DoGetSelectedProject(); if(project.IsEmpty()) return; PHPWorkspace::Get()->SetProjectActive(project); wxTreeItemIdValue cookie; wxTreeItemId child = m_treeCtrlView->GetFirstChild(m_treeCtrlView->GetRootItem(), cookie); while(child.IsOk()) { ItemData* id = DoGetItemData(child); if(id && id->IsProject()) { id->SetActive(id->GetProjectName() == project); m_treeCtrlView->SetItemBold(child, id->IsActive()); } child = m_treeCtrlView->GetNextChild(m_treeCtrlView->GetRootItem(), cookie); } }
void PHPWorkspaceView::OnRenameFile(wxCommandEvent& e) { wxTreeItemId item = DoGetSingleSelection(); CHECK_ITEM_RET(item); ItemData *data = DoGetItemData(item); CHECK_PTR_RET(data); CHECK_ID_FILE(data); wxFileName old_file_name = data->GetFile(); wxString new_name = ::wxGetTextFromUser(_("New file name:"), _("Rename file"), old_file_name.GetFullName() ); if ( new_name.IsEmpty() ) return; if ( new_name == old_file_name.GetFullName() ) return; // Check to see if we got a file with the old path opened bool reopenFile = false; IEditor *editor = m_mgr->FindEditor(old_file_name.GetFullPath()); if ( editor ) { m_mgr->ClosePage( editor->GetFileName().GetFullName() ); reopenFile = true; editor = NULL; } PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(DoGetSelectedProject()); CHECK_PTR_RET(pProject); if ( pProject->RenameFile(old_file_name.GetFullPath(), new_name) ) { // Locate the folder pProject->Save(); m_treeCtrlView->SetItemText(item, new_name); // Update the item data old_file_name.SetFullName(new_name); data->SetFile( old_file_name.GetFullPath() ); // Open the file if it was opened earlier // old_file_name now contains the new full path to the new file if ( reopenFile ) { m_mgr->OpenFile( old_file_name.GetFullPath() ); } } }
ItemData *OCheckListItem :: ProvideNew (logical is_first_item ) { ItemData *pItemData = NULL; int iRow = 0; int nRow = 0; BEGINSEQ pItemData = new OCheckListItem((OListView *)listView(),this); if(!pItemData) ERROR if ( !is_first_item ) { iRow = Index(); nRow = pItemData->Index(); listView()->InsertItem(iRow+1,listView()->TakeItem(nRow)); } RECOVER pItemData = NULL; ENDSEQ return( pItemData ); }
void PHPWorkspaceView::OnMakeIndexPHP(wxCommandEvent& e) { e.Skip(); wxTreeItemId item = DoGetSingleSelection(); CHECK_ITEM_RET(item); ItemData* itemData = DoGetItemData(item); CHECK_PTR_RET(itemData); CHECK_ID_FILE(itemData); wxString projectName = itemData->GetProjectName(); if(projectName.IsEmpty()) return; PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(projectName); CHECK_PTR_RET(pProject); PHPProjectSettingsData& settings = pProject->GetSettings(); settings.SetIndexFile(itemData->GetFile()); pProject->Save(); }
void PHPWorkspaceView::OnAddFile(wxCommandEvent& e) { wxTreeItemId folderItem = DoGetSingleSelection(); CHECK_ITEM_RET(folderItem); ItemData* data = DoGetItemData(folderItem); CHECK_PTR_RET(data); if(!data->IsFolder()) return; PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(data->GetProjectName()); CHECK_PTR_RET(pProject); PHPFolder::Ptr_t pFolder = pProject->Folder(data->GetFolderPath()); CHECK_PTR_RET(pFolder); wxFileDialog dlg(wxTheApp->GetTopWindow(), _("Add file"), pFolder->GetFullPath(pProject->GetFilename().GetPath()), wxT(""), wxT("PHP Files (*.php)|*.php|PHP include files (*.inc)|*.inc|All files (*)|*"), wxFD_FILE_MUST_EXIST | wxFD_OPEN | wxFD_MULTIPLE); if(dlg.ShowModal() == wxID_OK) { wxArrayString paths; dlg.GetPaths(paths); if(paths.IsEmpty()) return; // if the file is not under the project's tree - do not add it // Use the folder taken from the file's full path and the pFolder as the base folder for adding the file if(!paths.Item(0).StartsWith(pProject->GetFilename().GetPath())) { ::wxMessageBox(_("Can not add file to project. File must be under the project directory tree"), "CodeLite", wxOK | wxCENTER | wxICON_WARNING); return; } DoAddFilesToFolder(paths, pProject, true); pProject->Save(); } }
void PHPWorkspaceView::LoadWorkspace() { wxString workspaceName; workspaceName << PHPWorkspace::Get()->GetFilename().GetName(); wxWindowUpdateLocker locker(m_treeCtrlView); m_treeCtrlView->DeleteAllItems(); // Add the root item BitmapLoader* bl = m_mgr->GetStdIcons(); wxTreeItemId root = m_treeCtrlView->AddRoot(workspaceName, bl->GetMimeImageId(PHPWorkspace::Get()->GetFilename().GetFullName()), bl->GetMimeImageId(PHPWorkspace::Get()->GetFilename().GetFullName()), new ItemData(ItemData::Kind_Workspace)); const PHPProject::Map_t& projects = PHPWorkspace::Get()->GetProjects(); // add projects wxStringSet_t files; PHPProject::Map_t::const_iterator iter_project = projects.begin(); for(; iter_project != projects.end(); ++iter_project) { ItemData* data = new ItemData(ItemData::Kind_Project); data->SetProjectName(iter_project->first); data->SetActive(iter_project->second->IsActive()); wxTreeItemId projectItemId = m_treeCtrlView->AppendItem(root, iter_project->second->GetName(), bl->GetMimeImageId(FileExtManager::TypeProject), bl->GetMimeImageId(FileExtManager::TypeProject), data); if(data->IsActive()) { m_treeCtrlView->SetItemBold(projectItemId, true); } DoBuildProjectNode(projectItemId, iter_project->second); } if(m_treeCtrlView->HasChildren(root)) { m_treeCtrlView->Expand(root); } }
void PHPWorkspaceView::OnDeleteFolder(wxCommandEvent& e) { wxTreeItemId folderItem = DoGetSingleSelection(); if(!IsFolderItem(folderItem)) return; ItemData* data = DoGetItemData(folderItem); wxString folder = data->GetFolderPath(); wxString project = DoGetSelectedProject(); if(folder.IsEmpty() || project.IsEmpty()) return; wxString msg = wxString() << _("Are you sure you want to delete folder '") << folder << ("'?\nNote: selecting 'Yes' will NOT remove any file from the file system"); if(wxMessageBox(msg, wxT("CodeLite"), wxYES_NO | wxCANCEL | wxICON_QUESTION | wxCENTER) != wxYES) return; PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProject(project); CHECK_PTR_RET(pProject); pProject->DeleteFolder(folder); pProject->Save(); // Update the UI m_treeCtrlView->Delete(folderItem); }
//========================================================================================= MultiList::ItemData* MultiList::Item::FindItemData( const MultiList* list ) const { ItemData* foundItemData = 0; for( ItemData* itemData = ( ItemData* )itemDataList.LeftMost(); itemData && !foundItemData; itemData = ( ItemData* )itemData->Right() ) if( itemData->list == list ) foundItemData = itemData; if( foundItemData ) { // Make sure that a subsequent query for the same thing is done in O(1) time. itemDataList.Remove( foundItemData, false ); itemDataList.InsertLeftOf( itemDataList.LeftMost(), foundItemData ); } return foundItemData; }
void PHPWorkspaceView::OnNewFile(wxCommandEvent& e) { wxTreeItemId folderId = DoGetSingleSelection(); ItemData *data = DoGetItemData( folderId ); if( data->IsFolder() ) { PHPProject::Ptr_t pProj = PHPWorkspace::Get()->GetProject(data->GetProjectName()); CHECK_PTR_RET(pProj); PHPFolder::Ptr_t pFolder = pProj->Folder(data->GetFolderPath()); CHECK_PTR_RET(pFolder); NewFileDlg dlg(wxTheApp->GetTopWindow(), pFolder->GetFullPath( pProj->GetFilename().GetPath() ) ); if(dlg.ShowModal() == wxID_OK) { wxFileName filename = dlg.GetPath(); 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; } DoAddFileWithContent(folderId, filename, ""); } } }
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); }
wxString luProjTree::getSelectedItemName() { ItemData* itemData = _getSelectedItemData(); return itemData ? itemData->GetName() : ""; }
int luProjTree::getSelectedItemData() { ItemData* itemData = _getSelectedItemData(); return itemData ? itemData->GetData() : 0; }
void PHPWorkspaceView::OnMenu(wxTreeEvent& event) { wxTreeItemId item = event.GetItem(); if(item.IsOk()) { // Ensure that the item is selected m_treeCtrlView->SelectItem(event.GetItem()); ItemData* data = DoGetItemData(item); if(data) { switch(data->GetKind()) { case ItemData::Kind_File: { wxMenu menu; menu.Append(wxID_OPEN, _("Open")); menu.Append(XRCID("rename_php_file"), _("Rename")); menu.AppendSeparator(); menu.Append(wxID_REMOVE, _("Remove file")); menu.AppendSeparator(); menu.Append(XRCID("make_index"), _("Set as Index file")); m_treeCtrlView->PopupMenu(&menu); } break; case ItemData::Kind_Workspace: { wxMenu menu; menu.Append(XRCID("php_reload_workspace"), _("Reload workspace")); menu.Append(XRCID("php_close_workspace"), _("Close workspace")); menu.AppendSeparator(); menu.Append(XRCID("new_project"), _("Add a new project...")); // This will trigger codelite's "New Project Wizard" menu.AppendSeparator(); menu.Append(XRCID("php_reparse_workspace"), _("Retag workspace...")); menu.AppendSeparator(); menu.Append(XRCID("rename_php_workspace"), _("Rename")); m_treeCtrlView->PopupMenu(&menu); } break; case ItemData::Kind_Project: { wxMenu menu; menu.Append(XRCID("php_set_project_active"), _("Set as active project")); menu.AppendSeparator(); menu.Append(XRCID("php_delete_project"), _("Delete project")); menu.AppendSeparator(); menu.Append(XRCID("php_add_folder"), _("Add a folder...")); menu.Append(XRCID("php_import_files"), _("Import files from a directory...")); menu.AppendSeparator(); menu.Append(XRCID("php_run_project"), _("Run project...")); menu.AppendSeparator(); menu.Append(XRCID("php_project_settings"), _("Project settings...")); m_treeCtrlView->PopupMenu(&menu); } break; case ItemData::Kind_Folder: { wxMenu menu; menu.Append(XRCID("php_new_class"), _("New Class...")); menu.Append(XRCID("php_new_file"), _("Add a new file...")); menu.Append(XRCID("php_add_existing_file"), _("Add an existing file...")); menu.AppendSeparator(); menu.Append(XRCID("php_add_folder"), _("Add a folder...")); menu.AppendSeparator(); menu.Append(XRCID("php_delete_folder"), _("Delete this folder")); m_treeCtrlView->PopupMenu(&menu); } break; default: break; } } } }