//--------------------------------------------------------------------------- void MainWindow::scrollSliderReleased() { QAbstractSlider *slider = (QAbstractSlider *) QObject::sender(); int ScrollPos = slider->sliderPosition(); bool reset_slider; calc_scroll(QAbstractSlider::SliderMove + 100, ScrollPos, reset_slider); slider->setSliderPosition(ScrollPos); }
//--------------------------------------------------------------------------- void MainWindow::scrollAction(int action) { if ( action == QAbstractSlider::SliderNoAction ) return; QAbstractSlider *slider = (QAbstractSlider *) QObject::sender(); int ScrollPos = slider->sliderPosition(); bool reset_slider; int code = calc_scroll(action, ScrollPos, reset_slider); if ( code != 0 ) { if ( reset_slider ) slider->setSliderPosition(ScrollPos); if ( slider == (QAbstractSlider *) canvas->verticalScrollBar() ) move_focus(0, code); else move_focus(code, 0); canvas->viewport()->update(); } }
bool MainWindow::eventFilter(QObject *obj, QEvent *event) { QClipboard * clipboard = QApplication::clipboard(); //added by AiO if ( obj == canvas->viewport() ) { // paint if ( event->type() == QEvent::Paint ) { set_drawing_rectangle(canvas->viewport()->size().width(), canvas->viewport()->size().height()); QPainter p(canvas->viewport()); p.setPen(Qt::black); p.setBrush(Qt::green); PaintStruct ps; ps.p = &p; ps.border = 2; drawGraph(&ps); } // mouse else if ( event->type() == QEvent::MouseMove ) { QMouseEvent *mevent = (QMouseEvent *) event; if ( qApp->overrideCursor() ) { //cursor is overridden, we are panning if ( mevent->x() != ox || mevent->y() != oy ) { move_focus(ox - mevent->x(), oy - mevent->y()); ox = mevent->x(); oy = mevent->y(); canvas->viewport()->update(); //update(); } } } else if ( event->type() == QEvent::MouseButtonPress ) { QMouseEvent *mevent = (QMouseEvent *) event; if ( mevent->button() == Qt::LeftButton ) { Qt::KeyboardModifiers mods = mevent->modifiers(); if (mods & Qt::ShiftModifier) zoomIn(); else if (mods & Qt::ControlModifier) zoomOut(); if ( !sticky ) { qApp->setOverrideCursor(*MOVING_CURSOR); } else { if ( qApp->overrideCursor() ) { //cursor is already overridden, release it qApp->restoreOverrideCursor(); canvas->setMouseTracking(false); } else { qApp->setOverrideCursor(*MOVING_CURSOR); canvas->setMouseTracking(true); } } ox = mevent->x(); oy = mevent->y(); } else if(mevent->button() == Qt::RightButton ) //Added by AiO { //query the cordinates of the mouse for node char curNodeTitle[1024]; char * curNode; char *index; //used for search QMessageBox msgBox; curNode = node_xy_title(mevent->x(),mevent->y()); if(curNode == 0) return true; strncpy(curNodeTitle, curNode, 1024-1); curNodeTitle[1024-1] = 0; //label ends with ':' //test for color characters format sym num num TEXT sym : // replace : -1 with 0 and use &curNodeTitle[3] //test with popup if(curNodeTitle[0] == 0x0c) { index = strchr(curNodeTitle, ':'); if(index == 0) goto nocolon; //test for no label but color --index; --index; --index; *index = 0; msgBox.setText(&curNodeTitle[3]); clipboard->setText(&curNodeTitle[3]); } else { nocolon: msgBox.setText(curNodeTitle); clipboard->setText(curNodeTitle); } msgBox.exec(); } } else if ( event->type() == QEvent::MouseButtonRelease ) { if ( !sticky ) qApp->restoreOverrideCursor(); } // wheel else if ( event->type() == QEvent::Wheel ) { QWheelEvent *wevent = (QWheelEvent *) event; if ( (qApp->keyboardModifiers() & Qt::ControlModifier) != 0 ) { wevent->accept(); int numDegrees = wevent->delta() / 8; int numSteps = numDegrees / 15; if ( numSteps < 0) { numSteps = -numSteps; for ( int x = 0; x < numSteps; x++ ) zoomOut(); } else { for ( int x = 0; x < numSteps; x++ ) zoomIn(); } return true; } else { bool ret = QMainWindow::eventFilter(obj, event); QAbstractSlider *slider = (QAbstractSlider *) (wevent->orientation() == Qt::Vertical? canvas->verticalScrollBar() : canvas->horizontalScrollBar()); int ScrollPos = slider->sliderPosition(); bool reset_slider; calc_scroll(QAbstractSlider::SliderMove + 100, ScrollPos, reset_slider); slider->setSliderPosition(ScrollPos); return ret; } } // keyboard else if ( event->type() == QEvent::KeyPress ) { QKeyEvent *kevent = (QKeyEvent *) event; int key = kevent->key(); KeyDown(key, kevent->modifiers()); if ( key == 0 ) { event->accept(); return true; } } } return QMainWindow::eventFilter(obj, event); }