std::vector<Action*> DLGImporter::GetAction(unsigned int index) const { if (index >= ActionsCount) { return std::vector<Action*>(); } str->Seek( ActionsOffset + ( index * 8 ), GEM_STREAM_START ); ieDword Offset, Length; str->ReadDword( &Offset ); str->ReadDword( &Length ); str->Seek( Offset, GEM_STREAM_START ); char* string = ( char* ) malloc( Length + 1 ); str->Read( string, Length ); string[Length] = 0; unsigned int count; char ** lines = GetStrings( string, count ); std::vector<Action*> actions; for (size_t i = 0; i < count; ++i) { Action *action = GenerateAction(lines[i]); if (!action) { printMessage("DLGImporter", "Can't compile action: %s\n" , YELLOW, lines[i]); } else { action->IncRef(); actions.push_back(action); } free( lines[i] ); } free( lines ); free( string ); return actions; }
void FGuidStructCustomization::CustomizeStructHeader( TSharedRef<class IPropertyHandle> StructPropertyHandle, class FDetailWidgetRow& HeaderRow, IStructCustomizationUtils& StructCustomizationUtils ) { PropertyHandle = StructPropertyHandle; InputValid = true; // create quick-set menu FMenuBuilder QuickSetMenuBuilder(true, NULL); { FUIAction GenerateAction(FExecuteAction::CreateSP(this, &FGuidStructCustomization::HandleGuidActionClicked, EPropertyEditorGuidActions::Generate)); QuickSetMenuBuilder.AddMenuEntry(LOCTEXT("GenerateAction", "Generate"), LOCTEXT("GenerateActionHint", "Generate a new random globally unique identifier (GUID)."), FSlateIcon(), GenerateAction); FUIAction InvalidateAction(FExecuteAction::CreateSP(this, &FGuidStructCustomization::HandleGuidActionClicked, EPropertyEditorGuidActions::Invalidate)); QuickSetMenuBuilder.AddMenuEntry(LOCTEXT("InvalidateAction", "Invalidate"), LOCTEXT("InvalidateActionHint", "Set an invalid globally unique identifier (GUID)."), FSlateIcon(), InvalidateAction); } // create struct header HeaderRow.NameContent() [ StructPropertyHandle->CreatePropertyNameWidget() ] .ValueContent() .MinDesiredWidth(325.0f) .MaxDesiredWidth(325.0f) [ SNew(SHorizontalBox) + SHorizontalBox::Slot() .FillWidth(1.0f) [ // text box SAssignNew(TextBox, SEditableTextBox) .ClearKeyboardFocusOnCommit(false) .ForegroundColor(this, &FGuidStructCustomization::HandleTextBoxForegroundColor) .OnTextChanged(this, &FGuidStructCustomization::HandleTextBoxTextChanged) .OnTextCommitted(this, &FGuidStructCustomization::HandleTextBoxTextCommited) .SelectAllTextOnCommit(true) .Text(this, &FGuidStructCustomization::HandleTextBoxText) ] + SHorizontalBox::Slot() .AutoWidth() [ // quick-set menu SNew(SComboButton) .ContentPadding(FMargin(6.0, 2.0)) .MenuContent() [ QuickSetMenuBuilder.MakeWidget() ] ] ]; }