Skip to content

Implement the Properties panel with a transform section for layers #527

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Feb 12, 2022
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
dabfc47
initial layout system with tool options
mfish33 Jan 25, 2022
341741b
Merge branch 'master' into tool-options-widget-layout
mfish33 Jan 25, 2022
e1151ff
cargo fmt
mfish33 Jan 25, 2022
2830c84
cargo fmt again
mfish33 Jan 25, 2022
777bfdd
document bar defined on the backend
mfish33 Jan 27, 2022
d783e6b
cargo fmt
mfish33 Jan 27, 2022
6daab60
removed RC<RefCell>
mfish33 Jan 29, 2022
cef2f8a
cargo fmt
mfish33 Jan 29, 2022
4e06318
- fix increment behavior
mfish33 Jan 30, 2022
a0af339
cargo fmt
mfish33 Jan 30, 2022
b4e4077
Merge branch 'master' into tool-options-widget-layout
mfish33 Jan 30, 2022
f19b0be
only send documentBar when zoom or rotation is updated
mfish33 Jan 30, 2022
017441e
ctrl-0 changes zoom properly
mfish33 Jan 30, 2022
41f1005
unfinished layer hook in
mfish33 Feb 4, 2022
4703e1a
Merge branch 'master' into layer-properties
mfish33 Feb 4, 2022
0781d16
fix layerData name
mfish33 Feb 4, 2022
a2ebcdb
layer panel options bar
mfish33 Feb 4, 2022
da89d8d
basic x/y movment
mfish33 Feb 7, 2022
5bc070d
working transform section
mfish33 Feb 9, 2022
41d36a2
Merge branch 'master' into layer-properties
mfish33 Feb 9, 2022
3b1c6a9
changed messages from tuples to structs
mfish33 Feb 9, 2022
bf18718
Merge branch 'layer-properties' of https://github.com/GraphiteEditor/…
mfish33 Feb 9, 2022
4327577
Merge branch 'master' into layer-properties
mfish33 Feb 10, 2022
e1eb824
hook up text input
mfish33 Feb 10, 2022
83e48ef
Merge branch 'master' into layer-properties
mfish33 Feb 10, 2022
1a1986f
- fixed number input to be more clear
mfish33 Feb 10, 2022
dfb5105
Add styling
Keavon Feb 10, 2022
da6c44c
Merge remote-tracking branch 'origin/master' into layer-properties
Keavon Feb 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion editor/src/consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,5 @@ pub const FILE_EXPORT_SUFFIX: &str = ".svg";
pub const COLOR_ACCENT: Color = Color::from_unsafe(0x00 as f32 / 255., 0xA8 as f32 / 255., 0xFF as f32 / 255.);

// Document
pub const GRAPHITE_DOCUMENT_VERSION: &str = "0.0.2";
pub const GRAPHITE_DOCUMENT_VERSION: &str = "0.0.3";
pub const VIEWPORT_ZOOM_TO_FIT_PADDING_SCALE_FACTOR: f32 = 1.05;
3 changes: 3 additions & 0 deletions editor/src/document/document_message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ pub enum DocumentMessage {
#[remain::unsorted]
#[child]
TransformLayers(TransformLayerMessage),
#[remain::unsorted]
#[child]
PropertiesPanel(PropertiesPanelMessage),

// Messages
AbortTransaction,
Expand Down
30 changes: 24 additions & 6 deletions editor/src/document/document_message_handler.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::clipboards::Clipboard;
use super::layer_panel::{layer_panel_entry, LayerDataTypeDiscriminant, LayerMetadata, LayerPanelEntry, RawBuffer};
use super::utility_types::{AlignAggregate, AlignAxis, DocumentSave, FlipAxis};
use super::vectorize_layer_metadata;
use super::{vectorize_layer_metadata, PropertiesPanelMessageHandler};
use super::{ArtboardMessageHandler, MovementMessageHandler, OverlaysMessageHandler, TransformLayerMessageHandler};
use crate::consts::{
ASYMPTOTIC_EFFECT, DEFAULT_DOCUMENT_NAME, FILE_EXPORT_SUFFIX, FILE_SAVE_SUFFIX, GRAPHITE_DOCUMENT_VERSION, SCALE_EFFECT, SCROLLBAR_SPACING, VIEWPORT_ZOOM_TO_FIT_PADDING_SCALE_FACTOR,
Expand Down Expand Up @@ -45,6 +45,7 @@ pub struct DocumentMessageHandler {
pub artboard_message_handler: ArtboardMessageHandler,
#[serde(skip)]
transform_layer_handler: TransformLayerMessageHandler,
properties_panel_message_handler: PropertiesPanelMessageHandler,
pub overlays_visible: bool,
pub snapping_enabled: bool,
pub view_mode: ViewMode,
Expand All @@ -65,6 +66,7 @@ impl Default for DocumentMessageHandler {
overlays_message_handler: OverlaysMessageHandler::default(),
artboard_message_handler: ArtboardMessageHandler::default(),
transform_layer_handler: TransformLayerMessageHandler::default(),
properties_panel_message_handler: PropertiesPanelMessageHandler::default(),
snapping_enabled: true,
overlays_visible: true,
view_mode: ViewMode::default(),
Expand Down Expand Up @@ -676,16 +678,28 @@ impl MessageHandler<DocumentMessage, &InputPreprocessorMessageHandler> for Docum
self.transform_layer_handler
.process_action(message, (&mut self.layer_metadata, &mut self.graphene_document, ipp), responses);
}
#[remain::unsorted]
PropertiesPanel(message) => {
self.properties_panel_message_handler.process_action(message, &self.graphene_document, responses);
}

// Messages
AbortTransaction => {
self.undo(responses).unwrap_or_else(|e| log::warn!("{}", e));
responses.extend([RenderDocument.into(), DocumentStructureChanged.into()]);
}
AddSelectedLayers { additional_layers } => {
for layer_path in additional_layers {
responses.extend(self.select_layer(&layer_path));
for layer_path in &additional_layers {
responses.extend(self.select_layer(layer_path));
}

let selected_paths: Vec<Vec<u64>> = self.selected_layers().map(|path| path.to_vec()).collect();
if selected_paths.is_empty() {
responses.push_back(PropertiesPanelMessage::ClearSelection.into())
} else {
responses.push_back(PropertiesPanelMessage::SetActiveLayers { paths: selected_paths }.into())
}

// TODO: Correctly update layer panel in clear_selection instead of here
responses.push_back(FolderChanged { affected_folder_path: vec![] }.into());
responses.push_back(DocumentMessage::SelectionChanged.into());
Expand Down Expand Up @@ -743,12 +757,15 @@ impl MessageHandler<DocumentMessage, &InputPreprocessorMessageHandler> for Docum
DebugPrintDocument => {
log::debug!("{:#?}\n{:#?}", self.graphene_document, self.layer_metadata);
}
DeleteLayer { layer_path } => responses.push_front(DocumentOperation::DeleteLayer { path: layer_path }.into()),
DeleteLayer { layer_path } => {
responses.push_front(DocumentOperation::DeleteLayer { path: layer_path.clone() }.into());
responses.push_back(PropertiesPanelMessage::CheckSelectedWasDeleted { path: layer_path }.into());
}
DeleteSelectedLayers => {
self.backup(responses);

for path in self.selected_layers_without_children() {
responses.push_front(DocumentOperation::DeleteLayer { path: path.to_vec() }.into());
responses.push_front(DocumentMessage::DeleteLayer { layer_path: path.to_vec() }.into());
}

responses.push_front(DocumentMessage::SelectionChanged.into());
Expand Down Expand Up @@ -861,9 +878,10 @@ impl MessageHandler<DocumentMessage, &InputPreprocessorMessageHandler> for Docum
);
}
LayerChanged { affected_layer_path } => {
if let Ok(layer_entry) = self.layer_panel_entry(affected_layer_path) {
if let Ok(layer_entry) = self.layer_panel_entry(affected_layer_path.clone()) {
responses.push_back(FrontendMessage::UpdateDocumentLayer { data: layer_entry }.into());
}
responses.push_back(PropertiesPanelMessage::CheckSelectedWasUpdated { path: affected_layer_path }.into());
}
MoveSelectedLayersTo {
folder_path,
Expand Down
7 changes: 7 additions & 0 deletions editor/src/document/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ mod overlays_message;
mod overlays_message_handler;
mod portfolio_message;
mod portfolio_message_handler;
mod properties_panel_message;
mod properties_panel_message_handler;
mod transform_layer_message;
mod transform_layer_message_handler;

Expand Down Expand Up @@ -42,6 +44,11 @@ pub use portfolio_message::{PortfolioMessage, PortfolioMessageDiscriminant};
#[doc(inline)]
pub use portfolio_message_handler::PortfolioMessageHandler;

#[doc(inline)]
pub use properties_panel_message::{PropertiesPanelMessage, PropertiesPanelMessageDiscriminant};
#[doc(inline)]
pub use properties_panel_message_handler::PropertiesPanelMessageHandler;

#[doc(inline)]
pub use transform_layer_message::{TransformLayerMessage, TransformLayerMessageDiscriminant};
#[doc(inline)]
Expand Down
24 changes: 24 additions & 0 deletions editor/src/document/properties_panel_message.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
use crate::message_prelude::*;

use serde::{Deserialize, Serialize};

#[remain::sorted]
#[impl_message(Message, DocumentMessage, PropertiesPanel)]
#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
pub enum PropertiesPanelMessage {
CheckSelectedWasDeleted { path: Vec<LayerId> },
CheckSelectedWasUpdated { path: Vec<LayerId> },
ClearSelection,
ModifyName { name: String },
ModifyTransform { value: f64, transform_op: TransformOp },
SetActiveLayers { paths: Vec<Vec<LayerId>> },
}

#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)]
pub enum TransformOp {
X,
Y,
Width,
Height,
Rotation,
}
Loading