void Document::addFunction(const QString &name, const Rpn::Function &function) { if (BuiltIn::Function::functions().contains(name)) { THROW(EBuiltInRedifinition(name, EBuiltInRedifinition::Function)); } if (isFunctionUsed(name, function.codeThread)) { THROW(ERecursiveFunction(name)); } m_functions.insert(name, function); emit functionsChanged(); }
VisualNavbar::VisualNavbar(MainWindow *main, QWidget *parent) : QToolBar(main), graphicsView(new QGraphicsView), cursorGraphicsItem(nullptr), main(main) { Q_UNUSED(parent); setObjectName("visualNavbar"); setWindowTitle(tr("Visual navigation bar")); // setMovable(false); setContentsMargins(0, 0, 0, 0); // If line below is used, with the dark theme the paintEvent is not called // and the result is wrong. Something to do with overwriting the style sheet :/ //setStyleSheet("QToolBar { border: 0px; border-bottom: 0px; border-top: 0px; border-width: 0px;}"); /* QComboBox *addsCombo = new QComboBox(); addsCombo->addItem(""); addsCombo->addItem("Entry points"); addsCombo->addItem("Marks"); */ addWidget(this->graphicsView); //addWidget(addsCombo); connect(Core(), SIGNAL(seekChanged(RVA)), this, SLOT(on_seekChanged(RVA))); connect(Core(), SIGNAL(refreshAll()), this, SLOT(fetchAndPaintData())); connect(Core(), SIGNAL(functionsChanged()), this, SLOT(updateMetadataAndPaint())); connect(Core(), SIGNAL(flagsChanged()), this, SLOT(updateMetadataAndPaint())); graphicsScene = new QGraphicsScene(this); const QBrush bg = QBrush(QColor(74, 74, 74)); graphicsScene->setBackgroundBrush(bg); this->graphicsView->setAlignment(Qt::AlignLeft); this->graphicsView->setMinimumHeight(20); this->graphicsView->setMaximumHeight(20); this->graphicsView->setFrameShape(QFrame::NoFrame); this->graphicsView->setRenderHints(0); this->graphicsView->setScene(graphicsScene); this->graphicsView->setRenderHints(QPainter::Antialiasing); this->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // So the graphicsView doesn't intercept mouse events. this->graphicsView->setEnabled(false); this->graphicsView->setMouseTracking(true); setMouseTracking(true); }
bool Collection::addFunction(quint32 fid) { if (fid != this->id() && m_functions.contains(fid) == false) { { QMutexLocker locker(&m_functionListMutex); m_functions.append(fid); } emit changed(this->id()); emit functionsChanged(); return true; } else { return false; } }
bool Collection::removeFunction(quint32 fid) { int num = 0; { QMutexLocker locker(&m_functionListMutex); num = m_functions.removeAll(fid); } if (num > 0) { emit changed(this->id()); emit functionsChanged(); return true; } else { return false; } }