void SetMemberCommand::undo() { m_con->update(); if (m_type == EndPoint::Source) m_con->setSignal(m_old_member); else m_con->setSlot(m_old_member); m_con->update(); emit m_editor->connectionChanged(m_con); }
Connection *SignalSlotEditor::createConnection(QWidget *source, QWidget *destination) { SignalSlotConnection *con = 0; Q_ASSERT(source != 0); Q_ASSERT(destination != 0); ConnectDialog dialog(m_form_window, source, destination, m_form_window->core()->topLevel()); dialog.setShowAllSignalsSlots(m_showAllSignalsSlots); if (dialog.exec() == QDialog::Accepted) { con = new SignalSlotConnection(this, source, destination); con->setSignal(dialog.signal()); con->setSlot(dialog.slot()); } m_showAllSignalsSlots = dialog.showAllSignalsSlots(); return con; }
bool ConnectionModel::setData(const QModelIndex &index, const QVariant &data, int) { if (!index.isValid()) return false; if (data.type() != QVariant::String) return false; SignalSlotConnection *con = static_cast<SignalSlotConnection*>(m_editor->connection(index.row())); QDesignerFormWindowInterface *form = m_editor->formWindow(); QString s = data.toString(); switch (index.column()) { case 0: { if (!s.isEmpty() && !objectNameList(form).contains(s)) s.clear(); m_editor->setSource(con, s); break; } case 1: { if (!memberList(form, con->object(CETypes::EndPoint::Source), SignalMember).contains(s)) s.clear(); m_editor->setSignal(con, s); break; } case 2: { if (!s.isEmpty() && !objectNameList(form).contains(s)) s.clear(); m_editor->setTarget(con, s); break; } case 3: { if (!memberList(form, con->object(CETypes::EndPoint::Target), SlotMember).contains(s)) s.clear(); m_editor->setSlot(con, s); break; } } return true; }
void ConnectionModel::connectionChanged(Connection *con) { Q_ASSERT(m_editor); const int idx = m_editor->indexOfConnection(con); SignalSlotConnection *changedCon = static_cast<SignalSlotConnection*>(m_editor->connection(idx)); SignalSlotConnection *c = 0; for (int i=0; i<m_editor->connectionCount(); ++i) { if (i == idx) continue; c = static_cast<SignalSlotConnection*>(m_editor->connection(i)); if (c->sender() == changedCon->sender() && c->signal() == changedCon->signal() && c->receiver() == changedCon->receiver() && c->slot() == changedCon->slot()) { const QString message = tr("The connection already exists!<br>%1").arg(changedCon->toString()); m_editor->formWindow()->core()->dialogGui()->message(m_editor->parentWidget(), QDesignerDialogGuiInterface::SignalSlotEditorMessage, QMessageBox::Warning, tr("Signal and Slot Editor"), message, QMessageBox::Ok); break; } } emit dataChanged(createIndex(idx, 0), createIndex(idx, 3)); }
void ModifyConnectionCommand::undo() { m_conn->setSignal(m_oldSignal); m_conn->setSlot(m_oldSlot); }
void ModifyConnectionCommand::redo() { m_conn->setSignal(m_newSignal); m_conn->setSlot(m_newSlot); }
void ConnectionModel::connectionChanged(Connection *con) { const int idx = m_editor->indexOfConnection(con); SignalSlotConnection *changedCon = static_cast<SignalSlotConnection*>(m_editor->connection(idx)); SignalSlotConnection *c = 0; for (int i=0; i<m_editor->connectionCount(); ++i) { if (i == idx) continue; c = static_cast<SignalSlotConnection*>(m_editor->connection(i)); if (c->sender() == changedCon->sender() && c->signal() == changedCon->signal() && c->receiver() == changedCon->receiver() && c->slot() == changedCon->slot()) { QMessageBox::warning(m_editor->parentWidget(), tr("Signal and Slot Editor"), tr("The connection already exists!<br>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)") .arg(changedCon->sender()) .arg(changedCon->signal()) .arg(changedCon->receiver()) .arg(changedCon->slot())); break; } } emit dataChanged(createIndex(idx, 0), createIndex(idx, 3)); }