summaryrefslogtreecommitdiff
path: root/iced_builder/src/types
diff options
context:
space:
mode:
authorpml68 <contact@pml68.me>2024-10-30 03:00:17 +0100
committerpml68 <contact@pml68.me>2024-10-30 03:00:17 +0100
commit87e745b8e60225a789b51d5011fa620051c4cfbe (patch)
tree6bf3cede25ee428939500038439508415d636f45 /iced_builder/src/types
parentfeat: implement very basic playground (diff)
downloadiced-builder-87e745b8e60225a789b51d5011fa620051c4cfbe.tar.gz
feat: add error dialogs, windows manifest
Diffstat (limited to 'iced_builder/src/types')
-rw-r--r--iced_builder/src/types/element_name.rs2
-rw-r--r--iced_builder/src/types/mod.rs33
-rw-r--r--iced_builder/src/types/project.rs14
-rwxr-xr-xiced_builder/src/types/rendered_element.rs2
4 files changed, 44 insertions, 7 deletions
diff --git a/iced_builder/src/types/element_name.rs b/iced_builder/src/types/element_name.rs
index bf38120..d71ae30 100644
--- a/iced_builder/src/types/element_name.rs
+++ b/iced_builder/src/types/element_name.rs
@@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize};
-use crate::Error;
+use crate::error::Error;
use super::rendered_element::{
button, column, container, image, row, svg, text, Action, RenderedElement,
diff --git a/iced_builder/src/types/mod.rs b/iced_builder/src/types/mod.rs
index 0012905..841b255 100644
--- a/iced_builder/src/types/mod.rs
+++ b/iced_builder/src/types/mod.rs
@@ -6,6 +6,39 @@ pub use element_name::ElementName;
pub use project::Project;
pub use rendered_element::*;
+use std::path::PathBuf;
+
+use crate::error::Error;
+use iced::widget::{pane_grid, text_editor};
+
+#[derive(Debug, Clone)]
+pub enum Message {
+ ToggleDarkMode,
+ CopyCode,
+ SwitchPage(DesignerPage),
+ EditorAction(text_editor::Action),
+ RefreshEditorContent,
+ DropNewElement(ElementName, iced::Point, iced::Rectangle),
+ HandleNew(
+ ElementName,
+ Vec<(iced::advanced::widget::Id, iced::Rectangle)>,
+ ),
+ MoveElement(RenderedElement, iced::Point, iced::Rectangle),
+ HandleMove(
+ RenderedElement,
+ Vec<(iced::advanced::widget::Id, iced::Rectangle)>,
+ ),
+ PaneResized(pane_grid::ResizeEvent),
+ PaneClicked(pane_grid::Pane),
+ PaneDragged(pane_grid::DragEvent),
+ NewFile,
+ OpenFile,
+ FileOpened(Result<(PathBuf, Project), Error>),
+ SaveFile,
+ SaveFileAs,
+ FileSaved(Result<PathBuf, Error>),
+}
+
#[derive(Debug, Clone)]
pub enum DesignerPage {
Designer,
diff --git a/iced_builder/src/types/project.rs b/iced_builder/src/types/project.rs
index 52da41c..8d24a75 100644
--- a/iced_builder/src/types/project.rs
+++ b/iced_builder/src/types/project.rs
@@ -4,7 +4,7 @@ use std::path::{Path, PathBuf};
use iced::Theme;
use serde::{Deserialize, Serialize};
-use crate::Error;
+use crate::error::Error;
use super::rendered_element::RenderedElement;
@@ -55,10 +55,10 @@ impl Project {
}
}
- pub async fn from_file() -> Result<(PathBuf, Self), Error> {
+ pub async fn from_path() -> Result<(PathBuf, Self), Error> {
let picked_file = rfd::AsyncFileDialog::new()
.set_title("Open a JSON file...")
- .add_filter("*.JSON, *.json", &["JSON", "json"])
+ .add_filter("*.json, *.JSON", &["json", "JSON"])
.pick_file()
.await
.ok_or(Error::DialogClosed)?;
@@ -77,7 +77,7 @@ impl Project {
} else {
rfd::AsyncFileDialog::new()
.set_title("Save to JSON file...")
- .add_filter("*.JSON, *.json", &["JSON", "json"])
+ .add_filter("*.json, *.JSON", &["json", "JSON"])
.save_file()
.await
.as_ref()
@@ -103,7 +103,7 @@ impl Project {
{app_code}
fn main() -> iced::Result {{
- iced::application("{}", State::update, State::view).theme(iced::Theme::{}).run()
+ iced::application("{}", State::update, State::view).theme(State::theme).run()
}}
#[derive(Default)]
@@ -115,6 +115,10 @@ impl Project {
impl State {{
fn update(&mut self, _message: Message) {{}}
+ fn theme(&self) -> iced::Theme {{
+ iced::Theme::{}
+ }}
+
fn view(&self) -> Element<Message> {{
{view}.into()
}}
diff --git a/iced_builder/src/types/rendered_element.rs b/iced_builder/src/types/rendered_element.rs
index 3dad8e7..58fd18d 100755
--- a/iced_builder/src/types/rendered_element.rs
+++ b/iced_builder/src/types/rendered_element.rs
@@ -5,7 +5,7 @@ use iced::{widget, Element, Length};
use serde::{Deserialize, Serialize};
use unique_id::{string::StringGenerator, Generator};
-use crate::{Error, Message};
+use crate::{error::Error, types::Message};
use super::ElementName;