Skip to content

Commit

Permalink
render the layer name in the selected properties window
Browse files Browse the repository at this point in the history
  • Loading branch information
frewsxcv committed Nov 21, 2024
1 parent a255a59 commit 927d01e
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 5 deletions.
5 changes: 4 additions & 1 deletion rgis-events/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,10 @@ pub struct CrsChangedEvent {
pub struct RenderMessageEvent(pub String);

#[derive(Event)]
pub struct RenderFeaturePropertiesEvent(pub geo_features::Properties);
pub struct RenderFeaturePropertiesEvent {
pub layer_id: rgis_layer_id::LayerId,
pub properties: geo_features::Properties,
}

#[derive(Event)]
pub struct CreateLayerEvent {
Expand Down
7 changes: 4 additions & 3 deletions rgis-layers/src/systems.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,10 @@ fn handle_map_clicked_events(
) {
for event in map_clicked_event_reader.read() {
if let Some((layer, feature)) = layers.feature_from_click(event.0) {
render_message_event_writer.send(rgis_events::RenderFeaturePropertiesEvent(
feature.properties.clone(),
));
render_message_event_writer.send(rgis_events::RenderFeaturePropertiesEvent {
layer_id: layer.id,
properties: feature.properties.clone(),
});
feature_clicked_event_writer
.send(rgis_events::FeatureSelectedEvent(layer.id, feature.id));
}
Expand Down
2 changes: 2 additions & 0 deletions rgis-ui/src/feature_properties_window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use bevy_egui::egui;
pub(crate) struct FeaturePropertiesWindow<'a> {
pub bevy_egui_ctx: &'a mut bevy_egui::EguiContext,
pub state: &'a mut crate::FeaturePropertiesWindowState,
pub layer: &'a rgis_layers::Layer,
}

impl FeaturePropertiesWindow<'_> {
Expand All @@ -14,6 +15,7 @@ impl FeaturePropertiesWindow<'_> {
.id(egui::Id::new("Layer Feature Properties Window"))
.open(&mut self.state.is_visible)
.show(self.bevy_egui_ctx.get_mut(), |ui| {
ui.label(format!("Layer: {}", self.layer.name));
ui.add(FeaturePropertiesTable { properties })
});
}
Expand Down
1 change: 1 addition & 0 deletions rgis-ui/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ pub struct ManageLayerWindowState {

#[derive(Default)]
pub struct FeaturePropertiesWindowState {
layer_id: Option<rgis_layer_id::LayerId>,
properties: Option<geo_features::Properties>,
is_visible: bool,
}
Expand Down
9 changes: 8 additions & 1 deletion rgis-ui/src/systems.rs
Original file line number Diff line number Diff line change
Expand Up @@ -159,21 +159,28 @@ fn render_change_crs_window(
fn render_feature_properties_window(
mut state: Local<crate::FeaturePropertiesWindowState>,
mut egui_ctx_query: Query<&mut EguiContext, With<PrimaryWindow>>,
layers: Res<rgis_layers::Layers>,
mut render_message_events: ResMut<
bevy::ecs::event::Events<rgis_events::RenderFeaturePropertiesEvent>,
>,
) {
if let Some(event) = render_message_events.drain().last() {
state.is_visible = true;
state.properties = Some(event.0);
state.layer_id = Some(event.layer_id);
state.properties = Some(event.properties);
}

let Ok(mut egui_ctx) = egui_ctx_query.get_single_mut() else {
return;
};

let Some(layer) = state.layer_id.and_then(|id| layers.get(id)) else {
return;
};

crate::feature_properties_window::FeaturePropertiesWindow {
state: &mut state,
layer,
bevy_egui_ctx: &mut egui_ctx,
}
.render();
Expand Down

0 comments on commit 927d01e

Please sign in to comment.