예제 #1
0
void AddJobDialog::dropEvent(QDropEvent *event)
{
	QString droppedFile;
	QList<QUrl> urls = event->mimeData()->urls();

	if(urls.count() > 1)
	{
		QDragEnterEvent dragEvent(event->pos(), event->proposedAction(), event->mimeData(), Qt::NoButton, Qt::NoModifier);
		if(qApp->notify(parent(), &dragEvent))
		{
			qApp->notify(parent(), event);
			reject(); return;
		}
	}

	while((!urls.isEmpty()) && droppedFile.isEmpty())
	{
		QUrl currentUrl = urls.takeFirst();
		QFileInfo file(currentUrl.toLocalFile());
		if(file.exists() && file.isFile())
		{
			qDebug("AddJobDialog::dropEvent: %s", file.canonicalFilePath().toUtf8().constData());
			droppedFile = file.canonicalFilePath();
		}
	}
	
	if(!droppedFile.isEmpty())
	{
		const QString outFileName = generateOutputFileName(droppedFile, currentOutputPath(), currentOutputIndx(), m_preferences->getSaveToSourcePath());
		ui->editSource->setText(QDir::toNativeSeparators(droppedFile));
		ui->editOutput->setText(QDir::toNativeSeparators(outFileName));
	}
}
예제 #2
0
void PlayListWidget::dropEvent(QDropEvent *event){
    PlayListWidget *source = qobject_cast<PlayListWidget *>(event->source());
    if(source && source == this){
        QListWidgetItem *dst = itemAt(event->pos());                    // 获取终点的列表项
        QListWidgetItem *src = itemAt(startPos);                            // 起点列表项
        emit dragEvent(row(src), row(dst));                                     // 通知窗口:文本位置改变
        insertItem(row(dst)+1, event->mimeData()->text());          //  将拖动的列表项放入终点列表的下方
        event->setDropAction(Qt::MoveAction);
        event->accept();
    }
}
예제 #3
0
void ofApp::setup()
{
    mediaTypeMap = ofx::MediaTypeMap::getDefault();

    instructions = "Drag file onto the window for more info.";
    mediaType = "";

    // simulate a drag event for platforms that don't yet support drag events
    ofDragInfo simulatedDrag;
    simulatedDrag.files.push_back(ofToDataPath("automat.ttf"));
    dragEvent(simulatedDrag);
}
예제 #4
0
void CTimeBarFrame::OnTreeItemEndDrag(wxTreeEvent& event)
{
    wxTreeItemId draggingItemId = m_pItemTreeCtrl->GetSelection();
    wxTreeItemId targetItemId = event.GetItem();
    BEATS_ASSERT(draggingItemId.IsOk() && targetItemId.IsOk());
    if (draggingItemId != targetItemId && !IsParentOfItem(draggingItemId, targetItemId))
    {
        m_pEndDragData = static_cast<CTimeBarFrameData*>(m_pItemTreeCtrl->GetItemData(event.GetItem()));
        wxCommandEvent dragEvent(TIMTBAR_DRAGITEMEND_EVENT, GetId());
        dragEvent.SetEventObject(this);
        ProcessWindowEvent(dragEvent);
    }
}
예제 #5
0
void CTimeBarFrame::OnTreeItemStartDrag(wxTreeEvent& event)
{
    m_pBeginDragData = static_cast<CTimeBarFrameData*>(m_pItemTreeCtrl->GetItemData(event.GetItem()));
    BEATS_ASSERT(m_pBeginDragData != NULL)
    if (m_pBeginDragData->GetId() != m_pItemTreeCtrl->GetRootItem())
    {
        m_pItemTreeCtrl->SelectItem(event.GetItem());
        if (m_bEnableDrag)
        {
            wxCommandEvent dragEvent(TIMTBAR_DRAGITEMBEGIN_EVENT, GetId());
            dragEvent.SetEventObject(this);
            ProcessWindowEvent(dragEvent);
            event.Allow();
        }
    }
}
예제 #6
0
void OccView::onMouseMove( const int theFlags, const QPoint thePoint )
{
    // Draw the rubber band.
    if (theFlags & Qt::LeftButton)
    {
        drawRubberBand(myXmin, myYmin, thePoint.x(), thePoint.y());

        dragEvent(thePoint.x(), thePoint.y());
    }

    // Ctrl for multi selection.
    if (theFlags & Qt::ControlModifier)
    {
        multiMoveEvent(thePoint.x(), thePoint.y());
    }
    else
    {
        moveEvent(thePoint.x(), thePoint.y());
    }

    // Middle button.
    if (theFlags & Qt::MidButton)
    {
        switch (myCurrentMode)
        {
        case CurAction3d_DynamicRotation:
            myView->Rotation(thePoint.x(), thePoint.y());
            break;

        case CurAction3d_DynamicZooming:
            myView->Zoom(myXmin, myYmin, thePoint.x(), thePoint.y());
            break;

        case CurAction3d_DynamicPanning:
            myView->Pan(thePoint.x() - myXmax, myYmax - thePoint.y());
            myXmax = thePoint.x();
            myYmax = thePoint.y();
            break;

         default:
            break;
        }
    }

}
예제 #7
0
void FloatyWnd::dropEvent(QDropEvent *e)
{
    dragEvent(e, true);
}
예제 #8
0
void FloatyWnd::dragEnterEvent(QDragEnterEvent *e)
{
    dragEvent(e, false);
}
예제 #9
0
void SelectionManager::MouseMotion(int x, int y)
{
	// Mouse Dragging
	if( (m_foundComponent != 0) && (m_foundComponent == m_firstClickedComponent) && (m_bPressed) )
	{
		if(m_lastX == 0 && m_lastY == 0)
		{
			m_lastX = x;
			m_lastY = y;
		}

		int draggedX = x - m_lastX;
		int draggedY = y - m_lastY;

		MouseEvent dragEvent(m_foundComponent, MOUSE_DRAGGED, draggedX, draggedY, m_buttonPressed);
		m_foundComponent->ProcessMouseEvent(dragEvent);
	}
	else
	{
		// HACK - For components to work 'outside' of their boundaries
		if(m_firstClickedComponent && m_bPressed)
		{
			MouseEvent dragEvent(m_firstClickedComponent, MOUSE_DRAGGED_OUTSIDE, x, y, m_buttonPressed);
			m_firstClickedComponent->ProcessMouseEvent(dragEvent);
		}
	}


	// Mouse motion
	if(m_foundComponent != 0)
	{
		MouseEvent motionEvent(m_foundComponent, MOUSE_MOTION, x, y, 0);
		m_foundComponent->ProcessMouseEvent(motionEvent);
	}

	// Mouse enter and exit
	if(m_foundComponent != m_hoverOverComponent)
	{
		// Exit the current component that is set as hover
		if(m_hoverOverComponent != 0)
		{
			MouseEvent exitEvent(m_hoverOverComponent, MOUSE_EXITED, m_mouseX, m_mouseY, 0);
			m_hoverOverComponent->ProcessMouseEvent(exitEvent);
		}

		// Enter the new component
		if(m_foundComponent != 0)
		{
			MouseEvent enterEvent(m_foundComponent, MOUSE_ENTERED, m_mouseX, m_mouseY, 0);
			m_foundComponent->ProcessMouseEvent(enterEvent);

			if(m_foundComponent == m_firstClickedComponent && m_bPressed)
			{
				MouseEvent pressedEvent(m_foundComponent, MOUSE_PRESSED, m_mouseX, m_mouseY, 0);
				m_foundComponent->ProcessMouseEvent(pressedEvent);
			}
		}

		m_hoverOverComponent = m_foundComponent;
	}
	else if(m_foundComponent == 0)
	{
		// Exit the current component that is set as hover
		if(m_hoverOverComponent != 0)
		{
			MouseEvent exitEvent(m_hoverOverComponent, MOUSE_EXITED, m_mouseX, m_mouseY, 0);
			m_hoverOverComponent->ProcessMouseEvent(exitEvent);
		}
	}

	m_lastX = x;
	m_lastY = y;
}
예제 #10
0
void BorderlessToolButton::mouseMoveEvent(QMouseEvent *event) {
    if(movingActivated && draggingEnabled) {
        emit(dragEvent(event));
    }
    QToolButton::mouseMoveEvent(event);
}