Skip to main content

Orientation

Enum Orientation 

Source
pub enum Orientation {
    VerLeftAbove,
    VerCenterAbove,
    VerRightAbove,
    VerLeftBelow,
    VerCenterBelow,
    VerRightBelow,
    HorTopLeft,
    HorCenterLeft,
    HorBottomLeft,
    HorTopRight,
    HorCenterRight,
    HorBottomRight,
}
Expand description

Where to place a spawned Widget.

The Orientation has 3 components of positioning, which follow priorities in order to relocate the Widget in case there isn’t enough space. Respectively, they are the following:

  • An axis to align the Widget.
  • How to align said Widget on said axis.
  • Which side of the parent should be prioritized.

For example, Orientation::HorTopLeft means: Spawn this Widget horizontally, trying to align its top edge with the top edge of the parent, prioritizing the left side. Visually speaking, it will try to spawn a Widget like this:

╭─────────┬────────╮
│         │ Parent │
│ Spawned ├────────╯
│         │
╰─────────╯

Notice that their tops are aligned, the edges connect on the horizontal axis, and it is on the left side. However, if there is not enough space, (e.g. the parent is very close to the bottom left edge of the screen) it might try to spawn it like this:

╭─────────╮                                 ╭─────────╮
│         ├────────╮                        │         │
│ Spawned │ Parent │, or even like ╭────────┤ Spawned │
│         ├────────╯               │ Parent │         │
╰─────────╯                        ╰────────┴─────────╯

This prioritization gives more flexibility to the spawning of Widgets, which usually follows patterns of where to spawn and how to place things, mostly to prevent obscuring information. The most notable example of this are completion lists. For obvious reasons, those should only be placed above or below (Ver), alignment should try to be on the left edge (VerLeft), and ideally below the cursor (Orientation::VerLeftBelow). Likewise, these completion lists are sometimes accompanied by description panels, which should ideally follow a HorCenterRight or HorBottomRight orientation.

Variants§

§

VerLeftAbove

Place the Widget vertically, prioritizing the left edge above.

§

VerCenterAbove

Place the Widget vertically, prioritizing centering above.

§

VerRightAbove

Place the Widget vertically, prioritizing the right edge above.

§

VerLeftBelow

Place the Widget vertically, prioritizing the left edge below.

§

VerCenterBelow

Place the Widget vertically, prioritizing centering below.

§

VerRightBelow

Place the Widget vertically, prioritizing the right edge below.

§

HorTopLeft

Place the Widget horizontally, prioritizing the top edge on the left.

§

HorCenterLeft

Place the Widget horizontally, prioritizing centering on the left.

§

HorBottomLeft

Place the Widget horizontally, prioritizing the right edge on the left.

§

HorTopRight

Place the Widget horizontally, prioritizing the top edge on the right.

§

HorCenterRight

Place the Widget horizontally, prioritizing centering on the right.

§

HorBottomRight

Place the Widget horizontally, prioritizing the bottom edge on the right.

Implementations§

Source§

impl Orientation

Source

pub fn axis(&self) -> Axis

The Axis to which this Orientation pushes.

Source

pub fn prefers_before(&self) -> bool

Wether this should prefer being pushed before (left or above).

Trait Implementations§

Source§

impl Clone for Orientation

Source§

fn clone(&self) -> Orientation

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Orientation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Orientation

Source§

fn default() -> Orientation

Returns the “default value” for a type. Read more
Source§

impl Copy for Orientation

Auto Trait Implementations§

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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryClone for T
where T: Clone,

Source§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
Source§

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

Source§

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>,

Source§

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.