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); }
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); }
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 ) ) ); }