void gqbBrowser::OnBeginDrag(wxTreeEvent &event) { wxTreeItemId itemId = event.GetItem(); // Simplest solution, simulate DnD but actually don't do it gqbObject *object = (gqbObject *) GetItemData(itemId); if(object != NULL && (object->getType() == GQB_TABLE || object->getType() == GQB_VIEW)) { gqbTable *item = (gqbTable *) object; wxString tableName = item->getName(); wxTextDataObject textData(tableName); wxDropSource dragSource(this); dragSource.SetData(textData); wxDragResult result = dragSource.DoDragDrop(wxDrag_CopyOnly); if(result == wxDragCopy) { controller->getView()->CalcUnscrolledPosition(xx, yy, &xx, &yy); gqbQueryObject *queryObj = controller->addTableToModel(item, wxPoint(xx, yy)); controller->getView()->Refresh(); if (queryObj) { controller->getView()->Update(); controller->getView()->updateModelSize(queryObj, false); } } } }
void DragEffectBitmapButton::OnMouseLeftDown (wxMouseEvent& event) { if (mEffect == nullptr) { return; } wxString data; wxTextDataObject dragData(data); //unselect any running effect to make sure the notebook change won't effect it wxCommandEvent unselectEffect(EVT_UNSELECTED_EFFECT); wxPostEvent(GetParent(), unselectEffect); int id = mEffect->GetId(); // Change the Choicebook to correct page wxCommandEvent eventEffectChanged(EVT_SELECTED_EFFECT_CHANGED); eventEffectChanged.SetInt(id); // We are only changing choicebook not populating effect panel with settings eventEffectChanged.SetClientData(nullptr); wxPostEvent(GetParent(), eventEffectChanged); #ifdef __linux__ wxIcon dragCursor; dragCursor.CopyFromBitmap(mEffect->GetEffectIcon(16, true)); #else wxCursor dragCursor(mEffect->GetEffectIcon(16, true).ConvertToImage()); #endif wxDropSource dragSource(this,dragCursor,dragCursor,dragCursor ); dragSource.SetData( dragData ); dragSource.DoDragDrop( wxDragMove ); }
void CSourcesListBox::BeginDrag( wxListEvent &WXUNUSED(event) ) { long n = m_CurSel; if ( n != -1 ) { //-------------------------// //--- get selected item ---// //-------------------------// EMUSIK_SOURCES_TYPE Type = GetType(n); if(( Type == MUSIK_SOURCES_NONE) || (Type == MUSIK_SOURCES_NOW_PLAYING) || (Type == MUSIK_SOURCES_LIBRARY)) { return;//not allowed to be dragged. } m_DragIndex = n; const wxString & sDrop = m_SourcesList.Item( m_DragIndex ); //------------------------------------------------------// //--- initialize drag and drop ---// //--- SourcesDropTarget should take care of the rest ---// //------------------------------------------------------// wxDropSource dragSource( this ); CMusikSourcesDataObject sources_data( sDrop ); dragSource.SetData( sources_data ); dragSource.DoDragDrop( TRUE ); Update(); m_DragIndex = -1; } }
void wxGxContentView::OnBeginDrag(wxListEvent& event) { //TODO: wxDELETE(pDragData) somethere wxDataObjectComposite *pDragData = new wxDataObjectComposite(); wxGISStringDataObject *pNamesData = new wxGISStringDataObject(wxDataFormat(wxGIS_DND_NAME)); pDragData->Add(pNamesData, true); wxFileDataObject *pFileData = new wxFileDataObject(); pDragData->Add(pFileData, false); //wxGISDecimalDataObject *pIDsData = new wxGISDecimalDataObject(wxDataFormat(wxT("application/x-vnd.wxgis.gxobject-id"))); //pDragData->Add(pIDsData, false); //TODO: create dataobject for QGIS // wxDataObjectSimple* pDataObjectSimple = new wxDataObjectSimple(wxDataFormat(wxT("application/x-vnd.qgis.qgis.uri"))); // my_data->Add(pDataObjectSimple); // // wxMemoryOutputStream *pstream = new wxMemoryOutputStream(); // wxDataOutputStream dostr(*pstream); // long nItem = wxNOT_FOUND; int nCount(0); for ( ;; ) { nItem = GetNextItem(nItem, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if ( nItem == wxNOT_FOUND ) break; LPITEMDATA pItemData = (LPITEMDATA)GetItemData(nItem); if(pItemData == NULL) continue; wxGxObject* pGxObject = m_pCatalog->GetRegisterObject(pItemData->nObjectID); if(pGxObject == NULL) continue; wxString sSystemPath(pGxObject->GetPath(), wxConvUTF8); pFileData->AddFile(sSystemPath); pNamesData->AddString(pGxObject->GetFullName()); //pIDsData->AddDecimal(pGxObject->GetId()); } wxDropSource dragSource( this ); dragSource.SetData( *pDragData ); wxDragResult result = dragSource.DoDragDrop( wxDrag_DefaultMove ); }
void sfxFrame::OnResultsListCtrlBeginDrag(wxListEvent& event) { // First find index of selected item (if any). int index = ResultsListCtrl->GetNextItem ( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if(index < 0) { return; } wxFileDataObject* data = new wxFileDataObject(); wxString fileName = m_model.searchedFileNameAt(index); StatusBar1->SetLabel(fileName); data->AddFile(fileName); wxDropSource dragSource(this); dragSource.SetData(*data); wxDragResult dragResult = dragSource.DoDragDrop(); wxDELETE(data); if(dragResult == wxDragCopy) { // If they drag a file, they are sure they wanna use 'em. // No need to keep pestering a user with more of the same. m_sound.Stop(); // Auto copy file if a directory is defined for this and user actually copied something. if(m_saveFolder.Length()) { wxFileName fileNameParser(fileName); wxString destination = m_saveFolder + fileNameParser.GetName() + _(".wav"); wxCopyFile(fileName, destination, true); } } }
void InstanceCtrl::OnInstDragged(InstanceCtrlEvent& event) { // No DnD in single column mode. if (GetWindowStyle() & wxINST_SINGLE_COLUMN) return; Instance *selectedInst = m_instList->GetSelectedInstance(); if (!selectedInst) return; wxTextDataObject instDataObj(selectedInst->GetInstID()); wxDropSource dragSource(instDataObj, this); dragSource.DoDragDrop(wxDrag_AllowMove); // Make sure we reset the group highlighting when the DnD operation is done. HighlightGroup(VisualCoord()); }
void ExtImportPrefs::OnPluginBeginDrag(wxListEvent& event) { wxDropSource dragSource(this); dragtext2->SetText(wxT("")); dragSource.SetData(*dragtext2); mDragFocus = PluginList; wxDragResult result = dragSource.DoDragDrop(TRUE); mDragFocus = NULL; switch (result) { case wxDragCopy: case wxDragMove: case wxDragNone: return; break; default: break; } }
void TrackPickerDlg::onTrackCellLeftClick( wxGridEvent& event ) { wxString str = ((wxGrid*)event.GetEventObject())->GetCellValue( event.GetRow(), 0 ); ((wxGrid*)event.GetEventObject())->SetGridCursor(event.GetRow(), 0); CellRenderer* renderer = (CellRenderer*)((wxGrid*)event.GetEventObject())->GetCellRenderer(event.GetRow(),0); if( renderer->GetTip() != NULL) { TraceOp.trc( "trackpicker", TRCLEVEL_DEBUG, __LINE__, 9999, "cell tip is [%s] at row %d", renderer->GetTip(), event.GetRow()); m_Tip->SetValue(wxGetApp().getMsg( renderer->GetTip() )); } else m_Tip->SetValue(str); wxString my_text = wxT("addsymbol:") + str; TraceOp.trc( "trackpicker", TRCLEVEL_DEBUG, __LINE__, 9999, "drag [%s]", (const char*)my_text.mb_str(wxConvUTF8) ); wxTextDataObject my_data(my_text); wxDropSource dragSource( this ); dragSource.SetData( my_data ); wxDragResult result = dragSource.DoDragDrop(wxDrag_CopyOnly); Raise(); event.Skip(); }
void ddModelBrowser::OnBeginDrag(wxTreeEvent &event) { wxTreeItemId itemId = event.GetItem(); // Simplest solution, simulate DnD but actually don't do it ddBrowserDataContainer *object = (ddBrowserDataContainer *) GetItemData(itemId); if(object != NULL && (object->getFigureKindId() == DDTABLEFIGURE)) { ddTableFigure *item = (ddTableFigure *) object->getFigure(); wxString tableName = item->getTableName(); wxTextDataObject textData(tableName); wxDropSource dragSource(this); dragSource.SetData(textData); wxDragResult result = dragSource.DoDragDrop(wxDrag_CopyOnly); if(result != wxDragCopy) { wxMessageBox(wxT("Invalid kind of data during drag and drop operation"), wxT("Drag and drop error"), wxICON_ERROR); } } }
void ElementsCtrlBase::OnBeginDrag( wxListEvent& ev ) { ev.Allow(); wxTextDataObject my_data(wxT("ruelps")); wxDropSource dragSource( this ); dragSource.SetData( my_data ); wxDragResult result = dragSource.DoDragDrop( TRUE ); wxGetApp().mainframe()->statusbar()->SetStatusText(_("Ready"), (SB_MSG)); /* wxString pc; switch ( result ) { case wxDragError: pc = _T("Error!"); break; case wxDragNone: pc = _T("Nothing"); break; case wxDragCopy: pc = _T("Copied"); break; case wxDragMove: pc = _T("Moved"); break; case wxDragCancel: pc = _T("Cancelled"); break; default: pc = _T("Huh?"); break; } wxLogDebug(pc); */ }
void ProjectWindow::OnTreeDrag(wxTreeEvent& evt) { if (evt.GetId() == ASSET_LIST) { AssetTreeItemData* data = dynamic_cast<AssetTreeItemData*>(mAssetsTab->assetList->GetItemData(evt.GetItem())); if (data) { const AssetDefinition* asset = data->objPtr; wxString command("Asset->"); command.Append(asset->mAssetType); command.Append("->"); command.Append(asset->mAssetId); wxTextDataObject dragData(command); wxDropSource dragSource(mProjectPanel); dragSource.SetData(dragData); wxDragResult result = dragSource.DoDragDrop(TRUE); return; } } }
void BFBackupTree::OnBeginDrag (wxTreeEvent& event) { // get data behind the item BFBackupTreeItemData* pItemData = dynamic_cast<BFBackupTreeItemData*>(GetItemData(event.GetItem())); if (pItemData == NULL) return; // selected the currently draging item SelectItem(event.GetItem()); // init wxFileDataObject my_data; wxDropSource dragSource ( this ); // drag a task or a directory? if (pItemData->GetOID() == BFInvalidOID) { my_data.AddFile(pItemData->GetPath()); } else { // remember the currently draged task BFTask* pTask = BFProject::Instance().GetTask(pItemData->GetOID()); if (pTask == NULL) return; oidCurrentDrag_ = pTask->GetOID(); // just set dummy data my_data.AddFile("<oid>"); } // start dragging dragSource.SetData(my_data); dragSource.DoDragDrop( TRUE ); }
void ResourceLibraryDialog::OnlistCtrlBeginDrag(wxListEvent& event) { wxString fullList = "COPYANDADDRESOURCES;"+insertionFolderEdit->GetValue()+";"; //The resource editor is expecting a specifically formatted string long itemIndex = -1; for (;;) { itemIndex = listCtrl->GetNextItem(itemIndex, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (itemIndex == -1) break; if ( (listCtrl->GetItemText(itemIndex) == _("Parent folder") && itemIndex == 0) || wxDirExists(currentDir+"/"+listCtrl->GetItemText(itemIndex)) ) { //Folder: Do nothing } else fullList += currentDir+"/"+listCtrl->GetItemText(itemIndex)+";"; } wxTextDataObject data(fullList); wxDropSource dragSource( this ); dragSource.SetData( data ); dragSource.DoDragDrop( true ); }
void wxGISToolExecuteView::OnBeginDrag(wxListEvent& event) { wxGxObject* pGxObject = m_pCatalog->GetRegisterObject(m_nParentGxObjectId); if(!pGxObject) return; wxGISTaskDataObject DragData(wxThread::GetMainId(), wxDataFormat(wxGIS_DND_ID)); long nItem = wxNOT_FOUND; int nCount(0); for ( ;; ) { nItem = GetNextItem(nItem, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if ( nItem == wxNOT_FOUND ) break; DragData.AddDecimal(GetItemData(nItem)); } wxDropSource dragSource( this ); dragSource.SetData( DragData ); wxDragResult result = dragSource.DoDragDrop( wxDrag_DefaultMove ); }
void wxPageContainer::OnMouseMove(wxMouseEvent& event) { if (!m_pagesInfoVec.empty() && IsShown()) { const int xButtonStatus = m_nXButtonStatus; const int xTabButtonStatus = m_nTabXButtonStatus; const int rightButtonStatus = m_nRightButtonStatus; const int leftButtonStatus = m_nLeftButtonStatus; const int dropDownButtonStatus = m_nArrowDownButtonStatus; /// Patch (savePreviewId) ---- Ti-R ---- Enable to show next tab selected if user click const int savePreviewId = m_nTabPreviewId; long style = GetParent()->GetWindowStyleFlag(); m_nXButtonStatus = wxFNB_BTN_NONE; m_nRightButtonStatus = wxFNB_BTN_NONE; m_nLeftButtonStatus = wxFNB_BTN_NONE; m_nTabXButtonStatus = wxFNB_BTN_NONE; m_nArrowDownButtonStatus = wxFNB_BTN_NONE; /// Patch (m_nTabStatus) ---- Ti-R ---- Enable to show next tab selected if user click m_nTabStatus = wxFNB_BTN_NONE; wxPageInfo pgInfo; int tabIdx; int where = HitTest(event.GetPosition(), pgInfo, tabIdx); switch ( where ) { case wxFNB_X: if (event.LeftIsDown()) { m_nXButtonStatus = (m_nLeftClickZone==wxFNB_X) ? wxFNB_BTN_PRESSED : wxFNB_BTN_NONE; } else { m_nXButtonStatus = wxFNB_BTN_HOVER; } break; case wxFNB_DROP_DOWN_ARROW: if (event.LeftIsDown()) { m_nArrowDownButtonStatus = (m_nLeftClickZone == wxFNB_DROP_DOWN_ARROW) ? wxFNB_BTN_PRESSED : wxFNB_BTN_NONE; } else { m_nArrowDownButtonStatus = wxFNB_BTN_HOVER; } break; case wxFNB_TAB_X: if (event.LeftIsDown()) { m_nTabXButtonStatus = (m_nLeftClickZone==wxFNB_TAB_X) ? wxFNB_BTN_PRESSED : wxFNB_BTN_NONE; } else { m_nTabXButtonStatus = wxFNB_BTN_HOVER; } break; case wxFNB_RIGHT_ARROW: if (event.LeftIsDown()) { m_nRightButtonStatus = (m_nLeftClickZone==wxFNB_RIGHT_ARROW) ? wxFNB_BTN_PRESSED : wxFNB_BTN_NONE; } else { m_nRightButtonStatus = wxFNB_BTN_HOVER; } break; case wxFNB_LEFT_ARROW: if (event.LeftIsDown()) { m_nLeftButtonStatus = (m_nLeftClickZone==wxFNB_LEFT_ARROW) ? wxFNB_BTN_PRESSED : wxFNB_BTN_NONE; } else { m_nLeftButtonStatus = wxFNB_BTN_HOVER; } break; case wxFNB_TAB: // Call virtual method for showing tooltip ShowTabTooltip(tabIdx); if(!GetEnabled((size_t)tabIdx)) { // Set the cursor to be 'No-entry' ::wxSetCursor(wxCURSOR_NO_ENTRY); } #if wxUSE_DRAG_AND_DROP // Support for drag and drop if(event.Dragging() && !(style & wxFNB_NODRAG)) { wxFNBDragInfo draginfo(this, tabIdx); wxFNBDragInfoDataObject dataobject(wxDataFormat(wxT("wxFNB"))); dataobject.SetData(sizeof(wxFNBDragInfo), &draginfo); wxFNBDropSource dragSource(this); dragSource.SetData(dataobject); dragSource.DoDragDrop(wxDrag_DefaultMove); } #endif // wxUSE_DRAG_AND_DROP /// Patch ---- Ti-R ---- Enable to show next tab selected if user click if(style & wxFNB_PREVIEW_SELECT_TAB) { m_nTabStatus = wxFNB_BTN_HOVER; m_nTabPreviewId = tabIdx; } break; default: m_nTabXButtonStatus = wxFNB_BTN_NONE; break; } /// Patch (bRedrawTab) ---- Ti-R ---- Enable to show next tab selected if user click if(m_nTabStatus != wxFNB_BTN_HOVER) m_nTabPreviewId=-1; const bool bRedrawTab = (m_nTabPreviewId != savePreviewId); const bool bRedrawX = m_nXButtonStatus != xButtonStatus; const bool bRedrawDropArrow = m_nArrowDownButtonStatus != dropDownButtonStatus; const bool bRedrawRight = m_nRightButtonStatus != rightButtonStatus; const bool bRedrawLeft = m_nLeftButtonStatus != leftButtonStatus; const bool bRedrawTabX = m_nTabXButtonStatus != xTabButtonStatus; wxFNBRendererPtr render = wxFNBRendererMgrST::Get()->GetRenderer( GetParent()->GetWindowStyleFlag() ); if (bRedrawTab || bRedrawX || bRedrawRight || bRedrawLeft || bRedrawTabX || bRedrawDropArrow) { wxClientDC dc(this); if (bRedrawTab) { Refresh(); } if (bRedrawX) { render->DrawX(this, dc); } if (bRedrawLeft) { render->DrawLeftArrow(this, dc); } if (bRedrawRight) { render->DrawRightArrow(this, dc); } if (bRedrawTabX) { render->DrawTabX(this, dc, pgInfo.GetXRect(), tabIdx, m_nTabXButtonStatus); } if (bRedrawDropArrow) { render->DrawDropDownArrow(this, dc); } } } event.Skip(); }
void wxGxTreeView::OnBeginDrag(wxTreeEvent& event) { //event.Skip(); wxTreeItemId item = event.GetItem(); if(!item.IsOk()) return; SelectItem(item); //TODO: wxDELETE(pDragData) somethere wxDataObjectComposite *pDragData = new wxDataObjectComposite(); wxGISStringDataObject *pNamesData = new wxGISStringDataObject(wxDataFormat(wxT("application/x-vnd.wxgis.gxobject-name"))); pDragData->Add(pNamesData, true); wxFileDataObject *pFileData = new wxFileDataObject(); pDragData->Add(pFileData, false); //wxGISDecimalDataObject *pIDsData = new wxGISDecimalDataObject(wxDataFormat(wxT("application/x-vnd.wxgis.gxobject-id"))); //pDragData->Add(pIDsData, false); //TODO: create dataobject for QGIS // wxDataObjectSimple* pDataObjectSimple = new wxDataObjectSimple(wxDataFormat(wxT("application/x-vnd.qgis.qgis.uri"))); // my_data->Add(pDataObjectSimple); // // wxMemoryOutputStream *pstream = new wxMemoryOutputStream(); // wxDataOutputStream dostr(*pstream); // wxArrayTreeItemIds treearray; size_t count = GetSelections(treearray); if(count == 0) return; //first is catalog memory address to prevent different app drop //pIDsData->AddDecimal((long)GetGxCatalog()); for(size_t i = 0; i < count; ++i) { wxGxTreeItemData* pData = (wxGxTreeItemData*)GetItemData(treearray[i]); if(pData == NULL) continue; wxGxObject* pGxObject = m_pCatalog->GetRegisterObject(pData->m_nObjectID); if(pGxObject == NULL) continue; wxString sSystemPath(pGxObject->GetPath(), wxConvUTF8); pFileData->AddFile(sSystemPath); pNamesData->AddString(pGxObject->GetFullName()); //pIDsData->AddDecimal(pGxObject->GetId()); } wxDropSource dragSource( this ); dragSource.SetData( *pDragData ); wxDragResult result = dragSource.DoDragDrop( wxDrag_DefaultMove ); // IGxObject* pParentGxObject(NULL); // for(size_t i = 0; i < count; ++i) // { // wxGxTreeItemData* pData = (wxGxTreeItemData*)GetItemData(treearray[i]); // if(pData == NULL) // continue; // // IGxObjectSPtr pGxObject = m_pCatalog->GetRegisterObject(pData->m_nObjectID); // pParentGxObject = pGxObject->GetParent(); // wxString sSystemPath(pGxObject->GetInternalName(), wxConvUTF8); // pFileData->AddFile(sSystemPath); // dostr.WriteString(sSystemPath); // wxStreamBuffer* theBuffer = pstream->GetOutputStreamBuffer(); // // pDataObjectSimple->SetData(theBuffer->GetBufferSize(), theBuffer->GetBufferStart()); // } //// IGxObjectUI* pGxObjectUI = dynamic_cast<IGxObjectUI*>(pGxObject.get()); ////if(pGxObjectUI) ////{ //// wxDataFormat frm = pGxObjectUI->GetDataFormat(); //// if(frm.GetType() != wxDF_INVALID) //// my_data.SetFormat(frm); ////} // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // wxFileDataObject my_data; // wxArrayTreeItemIds treearray; // size_t count = GetSelections(treearray); // if(count == 0) // return; // wxGxObject* pParentGxObject(NULL); // for(size_t i = 0; i < count; ++i) // { // wxGxTreeItemData* pData = (wxGxTreeItemData*)GetItemData(treearray[i]); // if(pData == NULL) // continue; // wxGxObject* pGxObject = m_pCatalog->GetRegisterObject(pData->m_nObjectID); // pParentGxObject = pGxObject->GetParent(); // wxString sSystemPath(pGxObject->GetPath(), wxConvUTF8); // my_data.AddFile(sSystemPath); // } // wxDropSource dragSource( this ); //dragSource.SetData( my_data ); //wxDragResult result = dragSource.DoDragDrop( ); }