Example #1
0
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()
					]
			]
	];
}