Struct widgetry::widgets::drag_drop::DragDrop

source ·
pub struct DragDrop<T: Copy + PartialEq> {
    label: String,
    cards: Vec<Card<T>>,
    draw: Drawable,
    state: State,
    axis: StackAxis,
    dims: ScreenDims,
    top_left: ScreenPt,
}

Fields§

§label: String§cards: Vec<Card<T>>§draw: Drawable§state: State§axis: StackAxis§dims: ScreenDims§top_left: ScreenPt

Implementations§

source§

impl<T: 'static + Copy + PartialEq> DragDrop<T>

source

pub fn new(ctx: &EventCtx<'_>, label: &str, axis: StackAxis) -> Self

This widget emits several events.

  • Outcome::Changed(label) when a different card is selected or hovered on
  • Outcome::Changed("dragging " + label) while dragging, when the drop position of the card changes. Call get_dragging_state to learn the indices.
  • Outcome::DragDropReleased when a card is dropped

When you build a Panel containing one of these, you may need to call ignore_initial_events(). If the cursor is hovering over a card when the panel is first created, Outcome::Changed is immediately fired from this widget.

source

pub fn into_widget(self, ctx: &EventCtx<'_>) -> Widget

source

pub fn selected_value(&self) -> Option<T>

source

pub fn hovering_value(&self) -> Option<T>

source

pub fn push_card( &mut self, value: T, dims: ScreenDims, default_batch: GeomBatch, hovering_batch: GeomBatch, selected_batch: GeomBatch )

source

pub fn set_initial_state( &mut self, selected_value: Option<T>, hovering_value: Option<T> )

source

pub fn get_dragging_state(&self) -> Option<(usize, usize)>

If a card is currently being dragged, return its original and (potential) new index.

source§

impl<T: 'static + Copy + PartialEq> DragDrop<T>

source

fn recalc_draw(&mut self, ctx: &EventCtx<'_>)

source

fn mouseover_card(&self, ctx: &EventCtx<'_>) -> Option<usize>

Trait Implementations§

source§

impl<T: 'static + Copy + PartialEq> WidgetImpl for DragDrop<T>

source§

fn get_dims(&self) -> ScreenDims

What width and height does the widget occupy? If this changes, be sure to set redo_layout to true in event.
source§

fn set_pos(&mut self, top_left: ScreenPt)

Your widget’s top left corner should be here. Handle mouse events and draw appropriately.
source§

fn event(&mut self, ctx: &mut EventCtx<'_>, output: &mut WidgetOutput)

Your chance to react to an event. Any side effects outside of this widget are communicated through the output.
source§

fn draw(&self, g: &mut GfxCtx<'_>)

Draw the widget. Be sure to draw relative to the top-left specified by set_pos.
source§

fn can_restore(&self) -> bool

If a new Panel is being created to replace an older one, all widgets have the chance to preserve state from the previous version.
source§

fn restore(&mut self, _: &mut EventCtx<'_>, _prev: &dyn WidgetImpl)

Restore state from the previous version of this widget, with the same ID. Implementors must downcast.

Auto Trait Implementations§

§

impl<T> Freeze for DragDrop<T>

§

impl<T> RefUnwindSafe for DragDrop<T>
where T: RefUnwindSafe,

§

impl<T> !Send for DragDrop<T>

§

impl<T> !Sync for DragDrop<T>

§

impl<T> Unpin for DragDrop<T>
where T: Unpin,

§

impl<T> UnwindSafe for DragDrop<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

§

fn is_within(&self, b: &G2) -> bool