void OperInfo::init() { AllowedOperCommands.clear(); AllowedPrivs.clear(); AllowedUserModes.reset(); AllowedChanModes.reset(); AllowedUserModes['o' - 'A'] = true; // Call me paranoid if you want. for(std::vector<reference<ConfigTag> >::iterator iter = class_blocks.begin(); iter != class_blocks.end(); ++iter) { ConfigTag* tag = *iter; std::string mycmd, mypriv; /* Process commands */ irc::spacesepstream CommandList(tag->getString("commands")); while (CommandList.GetToken(mycmd)) { AllowedOperCommands.insert(mycmd); } irc::spacesepstream PrivList(tag->getString("privs")); while (PrivList.GetToken(mypriv)) { AllowedPrivs.insert(mypriv); } std::string modes = tag->getString("usermodes"); for (std::string::const_iterator c = modes.begin(); c != modes.end(); ++c) { if (*c == '*') { this->AllowedUserModes.set(); } else if (*c >= 'A' && *c <= 'z') { this->AllowedUserModes[*c - 'A'] = true; } } modes = tag->getString("chanmodes"); for (std::string::const_iterator c = modes.begin(); c != modes.end(); ++c) { if (*c == '*') { this->AllowedChanModes.set(); } else if (*c >= 'A' && *c <= 'z') { this->AllowedChanModes[*c - 'A'] = true; } } } }
int main(int argc, char* argv[]) { wchar_t command[3] = { L'\0', L'\0', L'\0' }; while (command[0] != L'Y' && command[0] != L'y') { wprintf(L"*** CMake Tutorial Program Example:\n"); wprintf(L"Enter the desired example code number or ? for a code list: "); //wscanf_s(L"%s", &command[0], 3); wscanf(L"%s", &command[0]); wprintf(L"\n\n"); int example_id = -1; try { //example_id = std::stoi(command); example_id = 0; } catch (...) { example_id = 0; } if (!ExecuteCommand(example_id)) { if (command[0] == L'0') { command[0] = L'Y'; continue; } if (command[0] != L'?') { wprintf(L"The command %s is invalid!\n\n", command); command[0] = L'\0'; continue; } CommandList(); continue; } wprintf(L"\n\n"); } return 0; }
void FSequencerObjectBindingNode::BuildContextMenu(FMenuBuilder& MenuBuilder) { ISequencerModule& SequencerModule = FModuleManager::GetModuleChecked<ISequencerModule>("Sequencer"); UObject* BoundObject = GetSequencer().FindSpawnedObjectOrTemplate(ObjectBinding); TSharedRef<FUICommandList> CommandList(new FUICommandList); TSharedPtr<FExtender> Extender = SequencerModule.GetObjectBindingContextMenuExtensibilityManager()->GetAllExtenders(CommandList, TArrayBuilder<UObject*>().Add(BoundObject)); if (Extender.IsValid()) { MenuBuilder.PushExtender(Extender.ToSharedRef()); } if (GetSequencer().IsLevelEditorSequencer()) { UMovieScene* MovieScene = GetSequencer().GetFocusedMovieSceneSequence()->GetMovieScene(); FMovieSceneSpawnable* Spawnable = MovieScene->FindSpawnable(ObjectBinding); if (Spawnable) { MenuBuilder.AddSubMenu( LOCTEXT("OwnerLabel", "Spawned Object Owner"), LOCTEXT("OwnerTooltip", "Specifies how the spawned object is to be owned"), FNewMenuDelegate::CreateSP(this, &FSequencerObjectBindingNode::AddSpawnOwnershipMenu) ); MenuBuilder.AddMenuEntry( FSequencerCommands::Get().ConvertToPossessable ); } else { const UClass* ObjectClass = GetClassForObjectBinding(); if (ObjectClass->IsChildOf(AActor::StaticClass())) { FFormatNamedArguments Args; MenuBuilder.AddSubMenu( FText::Format( LOCTEXT("Assign Actor ", "Assign Actor"), Args), FText::Format( LOCTEXT("AssignActorTooltip", "Assign an actor to this track"), Args ), FNewMenuDelegate::CreateRaw(&GetSequencer(), &FSequencer::AssignActor, ObjectBinding)); } MenuBuilder.AddMenuEntry( FSequencerCommands::Get().ConvertToSpawnable ); } MenuBuilder.AddMenuEntry( LOCTEXT("Import FBX", "Import..."), LOCTEXT("ImportFBXTooltip", "Import FBX animation to this object"), FSlateIcon(), FUIAction( FExecuteAction::CreateLambda([=]{ GetSequencer().ImportFBX(); }) )); MenuBuilder.AddMenuEntry( LOCTEXT("Export FBX", "Export..."), LOCTEXT("ExportFBXTooltip", "Export FBX animation from this object"), FSlateIcon(), FUIAction( FExecuteAction::CreateLambda([=]{ GetSequencer().ExportFBX(); }) )); MenuBuilder.BeginSection("Organize", LOCTEXT("OrganizeContextMenuSectionName", "Organize")); { MenuBuilder.AddSubMenu( LOCTEXT("LabelsSubMenuText", "Labels"), LOCTEXT("LabelsSubMenuTip", "Add or remove labels on this track"), FNewMenuDelegate::CreateSP(this, &FSequencerObjectBindingNode::HandleLabelsSubMenuCreate) ); } MenuBuilder.EndSection(); } FSequencerDisplayNode::BuildContextMenu(MenuBuilder); }
TSharedRef<SWidget> FSequencerObjectBindingNode::HandleAddTrackComboButtonGetMenuContent() { FSequencer& Sequencer = GetSequencer(); //@todo need to resolve this between UMG and the level editor sequencer const bool bUseSubMenus = Sequencer.IsLevelEditorSequencer(); UObject* BoundObject = GetSequencer().FindSpawnedObjectOrTemplate(ObjectBinding); ISequencerModule& SequencerModule = FModuleManager::GetModuleChecked<ISequencerModule>( "Sequencer" ); TSharedRef<FUICommandList> CommandList(new FUICommandList); FMenuBuilder AddTrackMenuBuilder(true, nullptr, SequencerModule.GetAddTrackMenuExtensibilityManager()->GetAllExtenders(CommandList, TArrayBuilder<UObject*>().Add(BoundObject))); const UClass* ObjectClass = GetClassForObjectBinding(); AddTrackMenuBuilder.BeginSection(NAME_None, LOCTEXT("TracksMenuHeader" , "Tracks")); GetSequencer().BuildObjectBindingTrackMenu(AddTrackMenuBuilder, ObjectBinding, ObjectClass); AddTrackMenuBuilder.EndSection(); TArray<TArray<UProperty*>> KeyablePropertyPaths; if (BoundObject != nullptr) { TArray<UProperty*> PropertyPath; GetKeyablePropertyPaths(BoundObject->GetClass(), BoundObject->GetClass(), PropertyPath, Sequencer, KeyablePropertyPaths); } // [Aspect Ratio] // [PostProcess Settings] [Bloom1Tint] [X] // [PostProcess Settings] [Bloom1Tint] [Y] // [PostProcess Settings] [ColorGrading] // [Ortho View] // Create property menu data based on keyable property paths TArray<PropertyMenuData> KeyablePropertyMenuData; for (auto KeyablePropertyPath : KeyablePropertyPaths) { PropertyMenuData KeyableMenuData; KeyableMenuData.PropertyPath = KeyablePropertyPath; KeyableMenuData.MenuName = KeyablePropertyPath[0]->GetDisplayNameText().ToString(); KeyablePropertyMenuData.Add(KeyableMenuData); } // Sort on the menu name KeyablePropertyMenuData.Sort([](const PropertyMenuData& A, const PropertyMenuData& B) { int32 CompareResult = A.MenuName.Compare(B.MenuName); return CompareResult < 0; }); // Add menu items AddTrackMenuBuilder.BeginSection( SequencerMenuExtensionPoints::AddTrackMenu_PropertiesSection, LOCTEXT("PropertiesMenuHeader" , "Properties")); for (int32 MenuDataIndex = 0; MenuDataIndex < KeyablePropertyMenuData.Num(); ) { TArray<TArray<UProperty*> > KeyableSubMenuPropertyPaths; KeyableSubMenuPropertyPaths.Add(KeyablePropertyMenuData[MenuDataIndex].PropertyPath); // If this menu data only has one property name, add the menu item if (KeyablePropertyMenuData[MenuDataIndex].PropertyPath.Num() == 1 || !bUseSubMenus) { AddPropertyMenuItems(AddTrackMenuBuilder, KeyableSubMenuPropertyPaths); ++MenuDataIndex; } // Otherwise, look to the next menu data to gather up new data else { for (; MenuDataIndex < KeyablePropertyMenuData.Num()-1; ) { if (KeyablePropertyMenuData[MenuDataIndex].MenuName == KeyablePropertyMenuData[MenuDataIndex+1].MenuName) { ++MenuDataIndex; KeyableSubMenuPropertyPaths.Add(KeyablePropertyMenuData[MenuDataIndex].PropertyPath); } else { break; } } AddTrackMenuBuilder.AddSubMenu( FText::FromString(KeyablePropertyMenuData[MenuDataIndex].MenuName), FText::GetEmpty(), FNewMenuDelegate::CreateSP(this, &FSequencerObjectBindingNode::HandleAddTrackSubMenuNew, KeyableSubMenuPropertyPaths)); ++MenuDataIndex; } } AddTrackMenuBuilder.EndSection(); return AddTrackMenuBuilder.MakeWidget(); }