mirror of https://codeberg.org/topola/topola.git
refactor(egui): make `ActivityContext` generic over mesadata type
This commit is contained in:
parent
5c377e805b
commit
3e9e3c69c9
|
|
@ -7,10 +7,10 @@ use topola::{
|
||||||
InvokerStatus,
|
InvokerStatus,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
board::mesadata::AccessMesadata,
|
||||||
drawing::graph::PrimitiveIndex,
|
drawing::graph::PrimitiveIndex,
|
||||||
geometry::primitive::PrimitiveShape,
|
geometry::primitive::PrimitiveShape,
|
||||||
router::{navcord::NavcordStepper, navmesh::Navmesh},
|
router::{navcord::NavcordStepper, navmesh::Navmesh},
|
||||||
specctra::mesadata::SpecctraMesadata,
|
|
||||||
stepper::{Abort, Step},
|
stepper::{Abort, Step},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -18,9 +18,9 @@ use crate::interaction::{
|
||||||
InteractionContext, InteractionError, InteractionStatus, InteractionStepper,
|
InteractionContext, InteractionError, InteractionStatus, InteractionStepper,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct ActivityContext<'a> {
|
pub struct ActivityContext<'a, M: AccessMesadata> {
|
||||||
pub interaction: InteractionContext,
|
pub interaction: InteractionContext,
|
||||||
pub invoker: &'a mut Invoker<SpecctraMesadata>,
|
pub invoker: &'a mut Invoker<M>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
|
@ -70,8 +70,10 @@ pub enum ActivityStepper {
|
||||||
Execution(ExecutionStepper),
|
Execution(ExecutionStepper),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Step<ActivityContext<'_>, ActivityStatus, ActivityError, ()> for ActivityStepper {
|
impl<M: AccessMesadata> Step<ActivityContext<'_, M>, ActivityStatus, ActivityError, ()>
|
||||||
fn step(&mut self, context: &mut ActivityContext) -> Result<ActivityStatus, ActivityError> {
|
for ActivityStepper
|
||||||
|
{
|
||||||
|
fn step(&mut self, context: &mut ActivityContext<M>) -> Result<ActivityStatus, ActivityError> {
|
||||||
match self {
|
match self {
|
||||||
ActivityStepper::Interaction(interaction) => {
|
ActivityStepper::Interaction(interaction) => {
|
||||||
Ok(interaction.step(&mut context.interaction)?.into())
|
Ok(interaction.step(&mut context.interaction)?.into())
|
||||||
|
|
@ -81,8 +83,8 @@ impl Step<ActivityContext<'_>, ActivityStatus, ActivityError, ()> for ActivitySt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Abort<ActivityContext<'_>> for ActivityStepper {
|
impl<M: AccessMesadata> Abort<ActivityContext<'_, M>> for ActivityStepper {
|
||||||
fn abort(&mut self, context: &mut ActivityContext) {
|
fn abort(&mut self, context: &mut ActivityContext<M>) {
|
||||||
match self {
|
match self {
|
||||||
ActivityStepper::Interaction(interaction) => {
|
ActivityStepper::Interaction(interaction) => {
|
||||||
Ok(interaction.abort(&mut context.interaction))
|
Ok(interaction.abort(&mut context.interaction))
|
||||||
|
|
@ -150,16 +152,18 @@ impl ActivityStepperWithStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Step<ActivityContext<'_>, ActivityStatus, ActivityError, ()> for ActivityStepperWithStatus {
|
impl<M: AccessMesadata> Step<ActivityContext<'_, M>, ActivityStatus, ActivityError, ()>
|
||||||
fn step(&mut self, context: &mut ActivityContext) -> Result<ActivityStatus, ActivityError> {
|
for ActivityStepperWithStatus
|
||||||
|
{
|
||||||
|
fn step(&mut self, context: &mut ActivityContext<M>) -> Result<ActivityStatus, ActivityError> {
|
||||||
let status = self.activity.step(context)?;
|
let status = self.activity.step(context)?;
|
||||||
self.maybe_status = Some(status.clone());
|
self.maybe_status = Some(status.clone());
|
||||||
Ok(status.into())
|
Ok(status.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Abort<ActivityContext<'_>> for ActivityStepperWithStatus {
|
impl<M: AccessMesadata> Abort<ActivityContext<'_, M>> for ActivityStepperWithStatus {
|
||||||
fn abort(&mut self, context: &mut ActivityContext) {
|
fn abort(&mut self, context: &mut ActivityContext<M>) {
|
||||||
self.maybe_status = Some(ActivityStatus::Finished(String::from("aborted")));
|
self.maybe_status = Some(ActivityStatus::Finished(String::from("aborted")));
|
||||||
self.activity.abort(context);
|
self.activity.abort(context);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue