Пример #1
0
void ConsoleChannel::initMenu()
{
    Fixture* fxi = m_doc->fixture(fixture());
    Q_ASSERT(fxi != NULL);

    const QLCChannel* ch = fxi->channel(m_channel);
    Q_ASSERT(ch != NULL);

    // Get rid of a possible previous menu
    if (m_menu != NULL)
    {
        delete m_menu;
        m_menu = NULL;
    }

    // Create a popup menu and set the channel name as its title
    m_menu = new QMenu(this);
    m_presetButton->setMenu(m_menu);
    m_presetButton->setPopupMode(QToolButton::InstantPopup);

    QString btnIconStr = ch->getIconNameFromGroup(ch->group());
    if (btnIconStr.startsWith(":"))
        m_presetButton->setStyleSheet("QToolButton { border-image: url(" + btnIconStr + ") 0 0 0 0 stretch stretch; }");
    else
    {
        m_presetButton->setStyleSheet("QToolButton { background: " + btnIconStr + "; }");
        setIntensityButton(ch);
    }

    switch(ch->group())
    {
    case QLCChannel::Colour:
        m_cngWidget = new ClickAndGoWidget();
        m_cngWidget->setType(ClickAndGoWidget::Preset, ch);
        break;
    case QLCChannel::Effect:
        m_cngWidget = new ClickAndGoWidget();
        m_cngWidget->setType(ClickAndGoWidget::Preset, ch);
        break;
    case QLCChannel::Gobo:
        m_cngWidget = new ClickAndGoWidget();
        m_cngWidget->setType(ClickAndGoWidget::Preset, ch);
        break;
    default:
        break;
    }

    if (m_cngWidget != NULL)
    {
        QWidgetAction* action = new QWidgetAction(this);
        action->setDefaultWidget(m_cngWidget);
        m_menu->addAction(action);
        connect(m_cngWidget, SIGNAL(levelChanged(uchar)),
                this, SLOT(slotClickAndGoLevelChanged(uchar)));
        connect(m_cngWidget, SIGNAL(levelAndPresetChanged(uchar,QImage)),
                this, SLOT(slotClickAndGoLevelAndPresetChanged(uchar, QImage)));
    }
    else
    {
        QAction* action = m_menu->addAction(m_presetButton->icon(), ch->name());
        m_menu->setTitle(ch->name());
        action->setEnabled(false);
        m_menu->addSeparator();

        // Initialize the preset menu only for intelligent fixtures
        if (fxi->isDimmer() == false)
            initCapabilityMenu(ch);
    }
}
Пример #2
0
void ConsoleChannel::initMenu()
{
	const QLCChannel* ch;
	QAction* action;

	Q_ASSERT(m_fixture != NULL);

	ch = m_fixture->channel(m_channel);
	Q_ASSERT(ch != NULL);

	// Get rid of a possible previous menu
	if (m_menu != NULL)
	{
		delete m_menu;
		m_menu = NULL;
	}

	// Create a popup menu and set the channel name as its title
	m_menu = new QMenu(this);
	m_presetButton->setMenu(m_menu);
	m_presetButton->setPopupMode(QToolButton::InstantPopup);

	if (ch->group() == KQLCChannelGroupPan)
		m_presetButton->setIcon(QIcon(":/pan.png"));
	else if (ch->group() == KQLCChannelGroupTilt)
		m_presetButton->setIcon(QIcon(":/tilt.png"));
	else if (ch->group() == KQLCChannelGroupColour)
	{
		if (ch->name().contains("red", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("red"));
			m_presetButton->setPalette(pal);
		}
		else if (ch->name().contains("green", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("green"));
			m_presetButton->setPalette(pal);
		}
		else if (ch->name().contains("blue", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("blue"));
			m_presetButton->setPalette(pal);
		}
		else if (ch->name().contains("cyan", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("cyan"));
			m_presetButton->setPalette(pal);
		}
		else if (ch->name().contains("magenta", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("magenta"));
			m_presetButton->setPalette(pal);
		}
		else if (ch->name().contains("yellow", Qt::CaseInsensitive) == true)
		{
			QPalette pal = m_presetButton->palette();
			pal.setColor(QPalette::Button, QColor("yellow"));
			m_presetButton->setPalette(pal);
		}

		m_presetButton->setIcon(QIcon(":/color.png"));
	}
	else if (ch->group() == KQLCChannelGroupEffect)
		m_presetButton->setIcon(QIcon(":/efx.png"));
	else if (ch->group() == KQLCChannelGroupGobo)
		m_presetButton->setIcon(QIcon(":/gobo.png"));
	else if (ch->group() == KQLCChannelGroupShutter)
		m_presetButton->setIcon(QIcon(":/shutter.png"));
	else if (ch->group() == KQLCChannelGroupSpeed)
		m_presetButton->setIcon(QIcon(":/speed.png"));
	else if (ch->group() == KQLCChannelGroupPrism)
		m_presetButton->setIcon(QIcon(":/prism.png"));
	else if (ch->group() == KQLCChannelGroupMaintenance)
		m_presetButton->setIcon(QIcon(":/maintenance.png"));
	else if (ch->group() == KQLCChannelGroupIntensity)
		m_presetButton->setIcon(QIcon(":/intensity.png"));
	else if (ch->group() == KQLCChannelGroupBeam)
		m_presetButton->setIcon(QIcon(":/beam.png"));

	action = m_menu->addAction(m_presetButton->icon(), ch->name());
	m_menu->setTitle(ch->name());
	action->setEnabled(false);
	m_menu->addSeparator();
	
	// Initialize the preset menu only for normal fixtures,
	// i.e. not for Generic dimmer fixtures
	if (m_fixture->fixtureDef() != NULL && m_fixture->fixtureMode() != NULL)
		initCapabilityMenu(ch);
}