QWidget * KisToolDyna::createOptionWidget() { QWidget * optionWidget = KisToolFreehand::createOptionWidget(); optionWidget->setObjectName(toolId() + "option widget"); QLabel* initWidthLbl = new QLabel(i18n("Initial width:"), optionWidget); QLabel* massLbl = new QLabel(i18n("Mass:"), optionWidget); QLabel* dragLbl = new QLabel(i18n("Drag:"), optionWidget); QLabel* xAngleLbl = new QLabel(i18n("X angle:"), optionWidget); QLabel* yAngleLbl = new QLabel(i18n("Y angle:"), optionWidget); QLabel* widthRangeLbl = new QLabel(i18n("Width range:"), optionWidget); m_chkFixedAngle = new QCheckBox(i18n("Fixed angle:"), optionWidget); m_chkFixedAngle->setChecked(false); connect(m_chkFixedAngle, SIGNAL(toggled(bool)), this, SLOT(slotSetFixedAngle(bool))); m_initWidthSPBox = new QDoubleSpinBox(optionWidget); m_initWidthSPBox->setValue(1.5); connect(m_initWidthSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetDynaWidth(double))); m_massSPBox = new QDoubleSpinBox(optionWidget); m_massSPBox->setValue(0.5); connect(m_massSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetMass(double))); m_dragSPBox = new QDoubleSpinBox(optionWidget); m_dragSPBox->setValue(0.15); connect(m_dragSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetDrag(double))); m_xAngleSPBox = new QDoubleSpinBox(optionWidget); m_xAngleSPBox->setValue(0.6); connect(m_xAngleSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetXangle(double))); m_yAngleSPBox = new QDoubleSpinBox(optionWidget); m_yAngleSPBox->setValue(0.2); connect(m_yAngleSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetYangle(double))); m_widthRangeSPBox = new QDoubleSpinBox(optionWidget); m_widthRangeSPBox->setValue(0.05); connect(m_widthRangeSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetWidthRange(double))); m_optionLayout = new QGridLayout(optionWidget); Q_CHECK_PTR(m_optionLayout); m_optionLayout->setMargin(0); m_optionLayout->setSpacing(2); KisToolFreehand::addOptionWidgetLayout(m_optionLayout); m_optionLayout->addWidget(initWidthLbl, 5, 0); m_optionLayout->addWidget(m_initWidthSPBox, 5, 1, 1, 2); m_optionLayout->addWidget(massLbl, 6, 0); m_optionLayout->addWidget(m_massSPBox, 6, 1, 1, 2); m_optionLayout->addWidget(dragLbl, 7, 0); m_optionLayout->addWidget(m_dragSPBox, 7, 1, 1, 2); m_optionLayout->addWidget(m_chkFixedAngle, 8, 0); m_optionLayout->addWidget(xAngleLbl, 9, 0); m_optionLayout->addWidget(m_xAngleSPBox, 9, 1, 1, 2); m_optionLayout->addWidget(yAngleLbl, 10, 0); m_optionLayout->addWidget(m_yAngleSPBox, 10, 1, 1, 2); m_optionLayout->addWidget(widthRangeLbl, 11, 0); m_optionLayout->addWidget(m_widthRangeSPBox, 11, 1, 1, 2); return optionWidget; }
QList<QPointer<QWidget> > KoToolBase::createOptionWidgets() { QList<QPointer<QWidget> > ow; if (QWidget *widget = createOptionWidget()) { if (widget->objectName().isEmpty()) { widget->setObjectName(toolId()); } ow.append(widget); } return ow; }
void ToolManager::addJSTool(UserCore::Item::ItemInfo* item, uint32 branchId, gcString name, gcString exe, gcString args, gcString res) { if (!item) return; UserCore::Item::BranchInfoI* branch = item->getBranchById(branchId); if (!branch) return; UserCore::Item::BranchInfo* realBranch = dynamic_cast<UserCore::Item::BranchInfo*>(branch); if (!realBranch) return; bool found = false; JSToolInfo* jsinfo = nullptr; BaseManager<ToolInfo>::for_each([&](ToolInfo* info) { auto temp = dynamic_cast<JSToolInfo*>(info); if (!temp) return; if (item->getId() == temp->getItemId() && name == info->getName() && temp->getBranchId() == branchId) { jsinfo = temp; found = true; } }); if (found) { if (!jsinfo->isRealyInstalled()) jsinfo->setExePath(exe.c_str()); return; } DesuraId toolId(m_iLastCustomToolId, DesuraId::TYPE_TOOL); m_iLastCustomToolId--; JSToolInfo* tool = new JSToolInfo(item->getId(), realBranch->getBranchId(), toolId, name, exe, args, res); realBranch->addJSTool(toolId); addItem(tool); }
void ToolManager::addJSTool(gcRefPtr<UserCore::Item::ItemInfo> item, uint32 branchId, gcString name, gcString exe, gcString args, gcString res) { if (!item) return; auto branch = item->getBranchById(branchId); if (!branch) return; auto realBranch = gcRefPtr<UserCore::Item::BranchInfo>::dyn_cast(branch); if (!realBranch) return; bool found = false; gcRefPtr<JSToolInfo> jsinfo; BaseManager<ToolInfo>::for_each([&](gcRefPtr<ToolInfo> info) { auto temp = gcRefPtr<JSToolInfo>::dyn_cast(info); if (!temp) return; if (item->getId() == temp->getItemId() && name == info->getName() && temp->getBranchId() == branchId) { jsinfo = temp; found = true; } }); if (found) { if (!jsinfo->isRealyInstalled()) jsinfo->setExePath(exe.c_str()); return; } DesuraId toolId(m_iLastCustomToolId, DesuraId::TYPE_TOOL); m_iLastCustomToolId--; auto tool = gcRefPtr<JSToolInfo>::create(item->getId(), realBranch->getBranchId(), toolId, name, exe, args, res); realBranch->addJSTool(toolId); addItem(tool); }
void ToolManager::addJSTool(UserCore::Item::ItemInfo* item, uint32 branchId, gcString name, gcString exe, gcString args, gcString res) { if (!item) return; UserCore::Item::BranchInfoI* branch = item->getBranchById(branchId); if (!branch) return; UserCore::Item::BranchInfo* realBranch = dynamic_cast<UserCore::Item::BranchInfo*>(branch); if (!realBranch) return; bool found = false; BaseManager<ToolInfo>::for_each([&](ToolInfo* info) { JSToolInfo* jsinfo = dynamic_cast<JSToolInfo*>(info); if (!jsinfo) return; if (item->getId() == jsinfo->getItemId() && name == info->getName() && jsinfo->getBranchId() == branchId) found = true; }); if (found) return; DesuraId toolId(m_iLastCustomToolId, DesuraId::TYPE_TOOL); m_iLastCustomToolId--; JSToolInfo* tool = new JSToolInfo(item->getId(), realBranch->getBranchId(), toolId, name, exe, args, res); realBranch->addJSTool(toolId); addItem(tool); }
void KisToolDyna::activate(ToolActivation toolActivation, const QSet<KoShape*> &shapes) { KisToolPaint::activate(toolActivation, shapes); m_configGroup = KSharedConfig::openConfig()->group(toolId()); }
QWidget * KisToolDyna::createOptionWidget() { QWidget * optionsWidget = KisToolFreehand::createOptionWidget(); optionsWidget->setObjectName(toolId() + "option widget"); m_optionLayout = new QGridLayout(optionsWidget); Q_CHECK_PTR(m_optionLayout); m_optionLayout->setMargin(0); m_optionLayout->setSpacing(2); KisToolFreehand::addOptionWidgetLayout(m_optionLayout); QLabel* massLbl = new QLabel(i18n("Mass:"), optionsWidget); m_massSPBox = new KisDoubleSliderSpinBox(optionsWidget); m_massSPBox->setRange(0.0,1.0,2); connect(m_massSPBox, SIGNAL(valueChanged(qreal)), this, SLOT(slotSetMass(qreal))); KisToolFreehand::addOptionWidgetOption(m_massSPBox,massLbl); QLabel* dragLbl = new QLabel(i18n("Drag:"), optionsWidget); m_dragSPBox = new KisDoubleSliderSpinBox(optionsWidget); m_dragSPBox->setRange(0.0,1.0,2); connect(m_dragSPBox, SIGNAL(valueChanged(qreal)), this, SLOT(slotSetDrag(qreal))); KisToolFreehand::addOptionWidgetOption(m_dragSPBox,dragLbl); //NOTE: so far unused, waiting for the changes to propagate rotation/pressure to freehand tool // fixed angle might be for 2.4, but the later one for 2.5 m_chkFixedAngle = new QCheckBox(i18n("Fixed angle:"), optionsWidget); m_chkFixedAngle->setEnabled(false); connect(m_chkFixedAngle, SIGNAL(toggled(bool)), this, SLOT(slotSetFixedAngle(bool))); m_angleDSSBox = new KisDoubleSliderSpinBox(optionsWidget); m_angleDSSBox->setRange(0,360,0); m_angleDSSBox->setSuffix(QChar(Qt::Key_degree)); m_angleDSSBox->setEnabled(false); connect(m_angleDSSBox, SIGNAL(valueChanged(qreal)), this, SLOT(slotSetAngle(qreal))); KisToolFreehand::addOptionWidgetOption(m_angleDSSBox,m_chkFixedAngle); // read settings in from config m_massSPBox->setValue(m_configGroup.readEntry("massAmount", 0.01)); m_dragSPBox->setValue(m_configGroup.readEntry("dragAmount", .98)); m_chkFixedAngle->setChecked((bool)m_configGroup.readEntry("useFixedAngle", false)); m_angleDSSBox->setValue(m_configGroup.readEntry("angleAmount", 20)); #if 0 QLabel* initWidthLbl = new QLabel(i18n("Initial width:"), optionWidget); m_initWidthSPBox = new QDoubleSpinBox(optionWidget); connect(m_initWidthSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetDynaWidth(double))); KisToolFreehand::addOptionWidgetOption(m_initWidthSPBox,initWidthLbl); QLabel* widthRangeLbl = new QLabel(i18n("Width range:"), optionWidget); m_widthRangeSPBox = new QDoubleSpinBox(optionWidget); connect(m_widthRangeSPBox, SIGNAL(valueChanged(double)), this, SLOT(slotSetWidthRange(double))); //KisToolFreehand::addOptionWidgetOption(m_widthRangeSPBox,widthRangeLbl); m_initWidthSPBox->setValue(m_configGroup.readEntry("initWidth", 10)); m_widthRangeSPBox->setValue(m_configGroup.readEntry("initWidthRange", 20)); #endif return optionsWidget; }