void DataListCtrl::OnSave(wxCommandEvent& event) { long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item != -1) { wxString name = GetText(item, 1); if (GetItemText(item) == "Volume") { wxFileDialog *fopendlg = new wxFileDialog( m_frame, "Save Volume Data", "", "", "Muti-page Tiff file (*.tif, *.tiff)|*.tif;*.tiff|"\ "Single-page Tiff sequence (*.tif)|*.tif;*.tiff|"\ "Nrrd file (*.nrrd)|*.nrrd", wxFD_SAVE|wxFD_OVERWRITE_PROMPT); fopendlg->SetExtraControlCreator(CreateExtraControl); int rval = fopendlg->ShowModal(); if (rval == wxID_OK) { wxString filename = fopendlg->GetPath(); VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { VolumeData* vd = vr_frame->GetDataManager()->GetVolumeData(name); if (vd) { vd->Save(filename, fopendlg->GetFilterIndex(), false, VRenderFrame::GetCompression()); wxString str = vd->GetPath(); SetText(item, 2, str); } } } delete fopendlg; } else if (GetItemText(item) == "Mesh") { wxFileDialog *fopendlg = new wxFileDialog( m_frame, "Save Mesh Data", "", "", "OBJ file (*.obj)|*.obj", wxFD_SAVE|wxFD_OVERWRITE_PROMPT); int rval = fopendlg->ShowModal(); if (rval == wxID_OK) { wxString filename = fopendlg->GetPath(); VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if(vr_frame) { MeshData* md = vr_frame->GetDataManager()->GetMeshData(name); if (md) { md->Save(filename); wxString str = md->GetPath(); SetText(item, 2, str); } } } delete fopendlg; } else if (GetItemText(item) == "Annotations") { wxFileDialog *fopendlg = new wxFileDialog( m_frame, "Save Annotations", "", "", "Text file (*.txt)|*.txt", wxFD_SAVE|wxFD_OVERWRITE_PROMPT); int rval = fopendlg->ShowModal(); if (rval == wxID_OK) { wxString filename = fopendlg->GetPath(); VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if(vr_frame) { Annotations* ann = vr_frame->GetDataManager()->GetAnnotations(name); if (ann) { ann->Save(filename); wxString str = ann->GetPath(); SetText(item, 2, str); } } } delete fopendlg; } } }
void DataListCtrl::OnContextMenu(wxContextMenuEvent &event ) { if (GetSelectedItemCount()>0) { wxPoint point = event.GetPosition(); // If from keyboard if (point.x == -1 && point.y == -1) { wxSize size = GetSize(); point.x = size.x / 2; point.y = size.y / 2; } else { point = ScreenToClient(point); } VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { wxMenu menu; wxMenu *add_to_menu = new wxMenu; for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { add_to_menu->Append(Menu_View_start+i, (*vr_frame->GetViewList())[i]->GetName()); } menu.Append(Menu_AddTo, "Add to", add_to_menu); if (GetSelectedItemCount()==1) { menu.Append(Menu_Del, "Delete"); menu.Append(Menu_Rename, "Rename"); //save/save as long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item!=-1) { if (GetItemText(item) == "Volume") { wxString name = GetText(item, 1); VolumeData* vd = vr_frame->GetDataManager()->GetVolumeData(name); if (vd) { if (vd->GetPath() == "") menu.Append(Menu_Save, "Save..."); else menu.Append(Menu_Save, "Save As..."); menu.Append(Menu_Bake, "Bake..."); } } else if (GetItemText(item) == "Mesh") { wxString name = GetText(item, 1); MeshData* md = vr_frame->GetDataManager()->GetMeshData(name); if (md) { if (md->GetPath() == "") menu.Append(Menu_Save, "Save..."); else menu.Append(Menu_Save, "Save As..."); } } else if (GetItemText(item) == "Annotations") { wxString name = GetText(item, 1); Annotations* ann = vr_frame->GetDataManager()->GetAnnotations(name); if (ann) { if (ann->GetPath() == "") menu.Append(Menu_Save, "Save..."); else menu.Append(Menu_Save, "Save As..."); } } } } PopupMenu( &menu, point.x, point.y); } } }