2024-01-25 11:21:15 +08:00

56 lines
1.3 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "CurveSequence.h"
#include "SCompoundWidget.h"
#include "SCheckBox.h"
class SSplitter;
class SImage;
class SChannelRackMidiThumbnail;
class FMidiPattern;
class FPluginHost;
/**
*
*/
class ARONA_API SChannelRackItem : public SCompoundWidget
{
public:
DECLARE_DELEGATE_OneParam(FSetter, float);
SLATE_BEGIN_ARGS(SChannelRackItem)
{
}
SLATE_EVENT(FSetter, OnSplliterAPositionChanged)
SLATE_EVENT(FSetter, OnSplliterBPositionChanged)
SLATE_END_ARGS()
/** Constructs this widget with InArgs */
void Construct(const FArguments& InArgs, FPluginHost* InPluginHost);
virtual FReply OnMouseButtonUp(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
void SetPattern(FMidiPattern* InPattern);
FPluginHost* GetPluginHost() const { return PluginHost; }
void SetSplliterASize(float X);
void SetSplliterBSize(float X);
private:
void ShowPluginHostMenu();
void SetPluginHostEnabled(ECheckBoxState CheckBoxState);
FReply TogglePluginHostEditor();
void ShowPluginHostChannelInterface();
void DeletePluginHost();
FPluginHost* PluginHost = nullptr;
FMidiPattern* Pattern = nullptr;
TSharedPtr<SChannelRackMidiThumbnail> MidiThumbnail;
TSharedPtr<SSplitter> Splitter;
};