void CSkeletonActionExpDlg::OnBnClickedActionAdd()
{
    // TODO: Add your control notification handler code here
    sActionInfo_t action;
    UpdateData();
    action.m_ActionType  = GetActionType();
    action.m_iFirstFrame = m_iStartFrame;
    action.m_iLastFrame  = m_EndFrame;
    action.m_lTime       = m_iDurationTime;
    if(m_iDurationTime == 0)
    {
        int tickt_per_frame = GetTicksPerFrame();
        int iMaxTime = (m_EndFrame - m_iStartFrame + 1 ) * tickt_per_frame;
        float vTime = CMaxEnv::singleton().TicksToSeconds(iMaxTime);
        action.m_lTime       =  vTime * 1000;
        m_iDurationTime = action.m_lTime;
    }
	WGetWndText(&m_ctrlActionName , action.m_Name,32);

    if(wcslen(action.m_Name) == 0)
    {
        ::MessageBoxA(::GetActiveWindow(),"请填写动作名字","错误",MB_OK);
        return ;
    }
    if(m_iDurationTime <= 0)
    {
        ::MessageBoxA(::GetActiveWindow(),"动作时间不能为0","错误",MB_OK);
        return ;
    }
    InsertAction(action, true); 
    
}
Exemplo n.º 2
0
	void NewTabMenuManager::SingleRemoved (ITabWidget *itw)
	{
		const QByteArray& tabClass = itw->GetTabClassInfo ().TabClass_;
		QAction *act = HiddenActions_ [itw->ParentMultiTabs ()] [tabClass];
		if (!act)
		{
			qWarning () << Q_FUNC_INFO
					<< "no hidden action for"
					<< itw->GetTabClassInfo ().TabClass_
					<< "in"
					<< itw->ParentMultiTabs ();
			return;
		}
		InsertAction (act);
		ToggleHide (itw, true);
	}
Exemplo n.º 3
0
	void NewTabMenuManager::AddObject (QObject *obj)
	{
		IHaveTabs *imt = qobject_cast<IHaveTabs*> (obj);
		if (!imt || RegisteredMultiTabs_.contains (obj))
			return;

		IInfo *ii = qobject_cast<IInfo*> (obj);

		for (const auto& info : imt->GetTabClasses ())
		{
			if (!(info.Features_ & TFOpenableByRequest))
				continue;

			QAction *newAct = new QAction (info.Icon_,
					AccelerateName (info.VisibleName_),
					this);
			connect (newAct,
					SIGNAL (triggered ()),
					this,
					SLOT (handleNewTabRequested ()));
			newAct->setProperty ("PluginObj", QVariant::fromValue<QObject*> (obj));
			newAct->setProperty ("TabClass", info.TabClass_);
			newAct->setProperty ("Single",
					static_cast<bool> (info.Features_ & TFSingle));
			newAct->setStatusTip (info.Description_);
			newAct->setToolTip (info.Description_);

			InsertAction (newAct);

			if (info.Features_ & TFByDefault)
			{
				const QByteArray& id = ii->GetUniqueID () + '|' + info.TabClass_;
				const bool hide = XmlSettingsManager::Instance ()->Property ("Hide" + id, false).toBool ();
				if (!hide)
				{
					OpenTab (newAct);
					XmlSettingsManager::Instance ()->setProperty ("Hide" + id, true);
				}
			}
		}
	}
void CSkeletonActionExpDlg::LoadActionList(const wchar_t* fileName , bool FilterByFile)
{
    xXmlDocument doc;
    if(doc.load( fileName , true ) == false)
        return ;

    m_ActionXmlList.clear();
    xXmlNode* pNode = doc.root();
    if(pNode == NULL)
        return ;

    CStr MaxFile = CMaxEnv::singleton().m_pInterace->GetCurFileName();
    wchar_t wcsMaxFileName [1024] = {0};
    XEvol_LocaleToUnicode(MaxFile.data() , wcsMaxFileName , 1024);
    std::wstring maxFileName = xFileSystem::singleton()->getFileName(wcsMaxFileName).c_str();


    xXmlNode::XmlNodes nodes;
    pNode->findNode(L"动作" , nodes);
    size_t nAction = nodes.size();
    for(size_t i = 0 ; i < nAction ; i ++)
    {
        xXmlNode* pActNode = nodes[i];
        if(pActNode->value(L"MaxFile") == NULL || pActNode->value(L"MaxFile") == maxFileName || FilterByFile == false )
        {
            sActionInfo_t action;
            action.m_ActionType  = GetActionType();
            action.m_iFirstFrame = pActNode->int_value(L"StartFrame");
            action.m_iLastFrame  = pActNode->int_value(L"EndFrame");
            if(action.m_iFirstFrame > action.m_iLastFrame )
            {
                int _v = action.m_iFirstFrame;
                action.m_iFirstFrame = action.m_iLastFrame;
                action.m_iLastFrame = _v;
            }
            action.m_lTime       = pActNode->int_value(L"DurTime");
            wcsncpy(action.m_Name  , pActNode->value(L"ActionName") , 32);
            action.m_nFrame      = action.m_iLastFrame - action.m_iFirstFrame + 1;
            if(action.m_lTime == 0)
            {
                int tickt_per_frame = GetTicksPerFrame();
                int iMaxTime = (action.m_iLastFrame - action.m_iFirstFrame + 1 ) * tickt_per_frame;
                float vTime = CMaxEnv::singleton().TicksToSeconds(iMaxTime);
                action.m_lTime       =  vTime * 1000;
            }
            InsertAction(action , true); 

            xActionXMLInfo _info;
            _info.m_MaxFile = pActNode->value(L"MaxFile") ? pActNode->value(L"MaxFile") : maxFileName.c_str();
            _info.m_Name    = action.m_Name;
            _info.m_nFirst  = pActNode->int_value(L"StartFrame");
            _info.m_nLast   = pActNode->int_value(L"EndFrame");
            _info.m_DurTime = 0;
            if(pActNode->value(L"DurTime") )
            {
                _info.m_DurTime = pActNode->int_value(L"DurTime");
            }
            m_ActionXmlList.push_back(_info);
        }
    }
    return ;
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void tAutopilotSelectedDeviceMenu::AddDevice( const tN2kName& name, bool selected, bool enabled )
{
    QString nameStr = tGlobal<tNDP2k>::Instance()->DeviceManager().DataSourceStr( name );

    //DbgPrintf( QString("AddDevice nameStr=%1 value=%2").arg( nameStr ).arg( quint64( name.llValue() ) ) );

    if( nameStr == "???" ) // incase the simnet selection is a device we have never seen...
    {
        // Get Simnet Nmea2k DevTag instead
        unsigned char devTag[16] = ""; // DEV_TAG_CHARS
        if( SystemData::bGetDevTag( (unsigned char*)name.ToByteArray().data(), 0, devTag ) )
        {
            nameStr = QString((char *)devTag);
        }
    }

    bool insertDevice = false;
    // Sort names into order of decreasing name
    QList<tAction*> actionList = SubActions();
    int i;
    for( i = 0; i < actionList.size(); ++i )
    {
        quint64 nameInList = quint64( actionList[i]->data().toLongLong() );
        //DbgPrintf( QString("AddDevice: index=%1 nameInList=%2").arg( i ).arg( nameInList ) );
        if ( nameInList > 0 ) //If it's not one of the fixed items at the top or a separator
        {
            if( quint64( name.llValue() ) == nameInList )
            {
                //Already in list - just update
                //DbgPrintf( "Device already in list" );
                QAction* pAction = actionList[i];
                pAction->setText( nameStr );
                if ( pAction->isCheckable() )
                {
                    pAction->setChecked( selected );
                }
                return;
            }
            else if( quint64( name.llValue() ) > nameInList )
            {
                DbgPrintf( "Name greater than nameInList" );
                insertDevice = true;
                break;
            }
        }
    }

    tAction* pAction = new tAction( nameStr, this );
    pAction->setCheckable( true );
    pAction->setChecked( selected );
    pAction->setData( QVariant( name.llValue() ) );
    pAction->setEnabled( enabled );
    if( insertDevice )
    {
        DbgPrintf( QString("Inserting action at index %1").arg( i ) );
        InsertAction( actionList[i], pAction );
    }
    else // Append
    {
        DbgPrintf( QString("Adding action %1").arg( nameStr ) );
        AddAction( pAction );
    }

    m_SelectDeviceActGroup.append( pAction );

    Connect( pAction, SIGNAL( triggered( bool ) ), this, SLOT( SelectDevice( bool ) ) );
}