[chore]: formatting stuff
This commit is contained in:
parent
85e9e262f9
commit
3e4bf0a12e
28 changed files with 293 additions and 382 deletions
|
|
@ -1,3 +1,4 @@
|
|||
max_width = 70
|
||||
style_edition = "2024"
|
||||
# version = "Two"
|
||||
# version = "Two"
|
||||
imports_granularity = "Module"
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
use crate::Background;
|
||||
|
||||
use super::{kinds::ServiceItemKind, service_items::ServiceItem};
|
||||
use super::kinds::ServiceItemKind;
|
||||
use super::service_items::ServiceItem;
|
||||
|
||||
pub trait Content {
|
||||
fn title(&self) -> String;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,13 @@
|
|||
use crate::core::{
|
||||
kinds::ServiceItemKind, service_items::ServiceItem,
|
||||
slide::Background,
|
||||
};
|
||||
use crate::core::kinds::ServiceItemKind;
|
||||
use crate::core::service_items::ServiceItem;
|
||||
use crate::core::slide::Background;
|
||||
use cosmic::widget::image::Handle;
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use std::{
|
||||
fs::{self, File},
|
||||
io::Write,
|
||||
iter,
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
};
|
||||
use std::fs::{self, File};
|
||||
use std::io::Write;
|
||||
use std::iter;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use tar::{Archive, Builder};
|
||||
use tracing::{debug, error};
|
||||
use zstd::{Decoder, Encoder};
|
||||
|
|
@ -317,15 +314,13 @@ mod test {
|
|||
use resvg::usvg::fontdb;
|
||||
|
||||
use super::*;
|
||||
use crate::{
|
||||
core::{
|
||||
service_items::ServiceTrait,
|
||||
slide::{Slide, TextAlignment},
|
||||
songs::{Song, VerseName},
|
||||
},
|
||||
ui::text_svg::text_svg_generator,
|
||||
};
|
||||
use std::{collections::HashMap, path::PathBuf, sync::Arc};
|
||||
use crate::core::service_items::ServiceTrait;
|
||||
use crate::core::slide::{Slide, TextAlignment};
|
||||
use crate::core::songs::{Song, VerseName};
|
||||
use crate::ui::text_svg::text_svg_generator;
|
||||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
fn test_song() -> Song {
|
||||
let lyrics = "Some({Verse(number:4):\"Our Savior displayed\\nOn a criminal\\'s cross\\n\\nDarkness rejoiced as though\\nHeaven had lost\\n\\nBut then Jesus arose\\nWith our freedom in hand\\n\\nThat\\'s when death was arrested\\nAnd my life began\\n\\nThat\\'s when death was arrested\\nAnd my life began\",Intro(number:1):\"Death Was Arrested\\nNorth Point Worship\",Verse(number:3):\"Released from my chains,\\nI\\'m a prisoner no more\\n\\nMy shame was a ransom\\nHe faithfully bore\\n\\nHe cancelled my debt and\\nHe called me His friend\\n\\nWhen death was arrested\\nAnd my life began\",Bridge(number:1):\"Oh, we\\'re free, free,\\nForever we\\'re free\\n\\nCome join the song\\nOf all the redeemed\\n\\nYes, we\\'re free, free,\\nForever amen\\n\\nWhen death was arrested\\nAnd my life began\\n\\nOh, we\\'re free, free,\\nForever we\\'re free\\n\\nCome join the song\\nOf all the redeemed\\n\\nYes, we\\'re free, free,\\nForever amen\\n\\nWhen death was arrested\\nAnd my life began\",Other(number:99):\"When death was arrested\\nAnd my life began\\n\\nThat\\'s when death was arrested\\nAnd my life began\",Verse(number:2):\"Ash was redeemed\\nOnly beauty remains\\n\\nMy orphan heart\\nWas given a name\\n\\nMy mourning grew quiet,\\nMy feet rose to dance\\n\\nWhen death was arrested\\nAnd my life began\",Verse(number:1):\"Alone in my sorrow\\nAnd dead in my sin\\n\\nLost without hope\\nWith no place to begin\\n\\nYour love made a way\\nTo let mercy come in\\n\\nWhen death was arrested\\nAnd my life began\",Chorus(number:1):\"Oh, Your grace so free,\\nWashes over me\\n\\nYou have made me new,\\nNow life begins with You\\n\\nIt\\'s Your endless love,\\nPouring down on us\\n\\nYou have made us new,\\nNow life begins with You\"})".to_string();
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
use crate::{Background, Slide, SlideBuilder, TextAlignment};
|
||||
|
||||
use super::{
|
||||
content::Content,
|
||||
kinds::ServiceItemKind,
|
||||
model::{LibraryKind, Model},
|
||||
service_items::ServiceTrait,
|
||||
};
|
||||
use super::content::Content;
|
||||
use super::kinds::ServiceItemKind;
|
||||
use super::model::{LibraryKind, Model};
|
||||
use super::service_items::ServiceTrait;
|
||||
use crisp::types::{Keyword, Symbol, Value};
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::{SqliteConnection, SqlitePool, query, query_as};
|
||||
use std::{
|
||||
mem::replace,
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
};
|
||||
use std::mem::replace;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use tracing::error;
|
||||
|
||||
#[derive(
|
||||
|
|
|
|||
|
|
@ -1,16 +1,17 @@
|
|||
use std::{error::Error, fmt::Display, path::PathBuf};
|
||||
use std::error::Error;
|
||||
use std::fmt::Display;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
Slide,
|
||||
core::{content::Content, service_items::ServiceItem},
|
||||
};
|
||||
use crate::Slide;
|
||||
use crate::core::content::Content;
|
||||
use crate::core::service_items::ServiceItem;
|
||||
|
||||
use super::{
|
||||
images::Image, presentations::Presentation, songs::Song,
|
||||
videos::Video,
|
||||
};
|
||||
use super::images::Image;
|
||||
use super::presentations::Presentation;
|
||||
use super::songs::Song;
|
||||
use super::videos::Video;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
pub enum ServiceItemKind {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
use std::{borrow::Cow, fs, mem::replace, path::PathBuf};
|
||||
use std::borrow::Cow;
|
||||
use std::fs;
|
||||
use std::mem::replace;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use cosmic::iced::clipboard::mime::{AllowedMimeTypes, AsMimeTypes};
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
|
|
|
|||
|
|
@ -3,25 +3,20 @@ use crisp::types::{Keyword, Symbol, Value};
|
|||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use mupdf::{Colorspace, Document, Matrix};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::{
|
||||
Row, SqliteConnection, SqlitePool, prelude::FromRow, query,
|
||||
sqlite::SqliteRow,
|
||||
};
|
||||
use std::{
|
||||
mem::replace,
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
};
|
||||
use sqlx::prelude::FromRow;
|
||||
use sqlx::sqlite::SqliteRow;
|
||||
use sqlx::{Row, SqliteConnection, SqlitePool, query};
|
||||
use std::mem::replace;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use tracing::{debug, error};
|
||||
|
||||
use crate::{Background, Slide, SlideBuilder, TextAlignment};
|
||||
|
||||
use super::{
|
||||
content::Content,
|
||||
kinds::ServiceItemKind,
|
||||
model::{LibraryKind, Model},
|
||||
service_items::ServiceTrait,
|
||||
};
|
||||
use super::content::Content;
|
||||
use super::kinds::ServiceItemKind;
|
||||
use super::model::{LibraryKind, Model};
|
||||
use super::service_items::ServiceTrait;
|
||||
|
||||
#[derive(
|
||||
Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize,
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use cosmic::{
|
||||
cosmic_config::{
|
||||
self, CosmicConfigEntry,
|
||||
cosmic_config_derive::CosmicConfigEntry,
|
||||
},
|
||||
theme,
|
||||
};
|
||||
use cosmic::cosmic_config::cosmic_config_derive::CosmicConfigEntry;
|
||||
use cosmic::cosmic_config::{self, CosmicConfigEntry};
|
||||
use cosmic::theme;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{collections::VecDeque, path::PathBuf};
|
||||
use std::collections::VecDeque;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub const SETTINGS_VERSION: u64 = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,8 @@ use crisp::types::{Keyword, Symbol, Value};
|
|||
use iced_video_player::Video;
|
||||
use miette::{Result, miette};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{
|
||||
fmt::Display,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
use std::fmt::Display;
|
||||
use std::path::{Path, PathBuf};
|
||||
use tracing::error;
|
||||
|
||||
use crate::ui::text_svg::{Color, Font, Shadow, Stroke, TextSvg};
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@ use miette::{IntoDiagnostic, Result};
|
|||
use std::sync::Arc;
|
||||
use tracing::warn;
|
||||
|
||||
use obws::{Client, responses::scenes::Scene};
|
||||
use obws::Client;
|
||||
use obws::responses::scenes::Scene;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
|
|
|
|||
|
|
@ -1,19 +1,15 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use crate::core::{
|
||||
settings,
|
||||
songs::{Song, VerseName},
|
||||
};
|
||||
use crate::core::settings;
|
||||
use crate::core::songs::{Song, VerseName};
|
||||
use itertools::Itertools;
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use nom::{
|
||||
IResult, Parser,
|
||||
branch::alt,
|
||||
bytes::{tag, take_till, take_till1, take_until},
|
||||
character::complete::{digit0, newline, space0},
|
||||
multi::{many0, separated_list1},
|
||||
sequence::{delimited, pair, preceded, terminated},
|
||||
};
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::{tag, take_till, take_till1, take_until};
|
||||
use nom::character::complete::{digit0, newline, space0};
|
||||
use nom::multi::{many0, separated_list1};
|
||||
use nom::sequence::{delimited, pair, preceded, terminated};
|
||||
use nom::{IResult, Parser};
|
||||
use reqwest::header;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
|
|
|
|||
|
|
@ -1,33 +1,28 @@
|
|||
use std::{
|
||||
borrow::Cow, collections::HashMap, mem::replace, option::Option,
|
||||
path::PathBuf, sync::Arc,
|
||||
};
|
||||
use std::borrow::Cow;
|
||||
use std::collections::HashMap;
|
||||
use std::mem::replace;
|
||||
use std::option::Option;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::{
|
||||
cosmic_theme::palette::Srgb,
|
||||
iced::{
|
||||
clipboard::mime::AsMimeTypes,
|
||||
font::{Style, Weight},
|
||||
},
|
||||
};
|
||||
use cosmic::cosmic_theme::palette::Srgb;
|
||||
use cosmic::iced::clipboard::mime::AsMimeTypes;
|
||||
use cosmic::iced::font::{Style, Weight};
|
||||
use crisp::types::{Keyword, Symbol, Value};
|
||||
use itertools::Itertools;
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::{FromRow, Row, SqlitePool, query, sqlite::SqliteRow};
|
||||
use sqlx::sqlite::SqliteRow;
|
||||
use sqlx::{FromRow, Row, SqlitePool, query};
|
||||
use tracing::{debug, error};
|
||||
|
||||
use crate::{
|
||||
Slide, SlideBuilder,
|
||||
core::{
|
||||
content::Content,
|
||||
kinds::ServiceItemKind,
|
||||
model::{LibraryKind, Model},
|
||||
service_items::ServiceTrait,
|
||||
slide::{self, Background, TextAlignment},
|
||||
},
|
||||
ui::text_svg::{Color, Font, Stroke, shadow, stroke},
|
||||
};
|
||||
use crate::core::content::Content;
|
||||
use crate::core::kinds::ServiceItemKind;
|
||||
use crate::core::model::{LibraryKind, Model};
|
||||
use crate::core::service_items::ServiceTrait;
|
||||
use crate::core::slide::{self, Background, TextAlignment};
|
||||
use crate::ui::text_svg::{Color, Font, Stroke, shadow, stroke};
|
||||
use crate::{Slide, SlideBuilder};
|
||||
|
||||
#[derive(
|
||||
Clone, Debug, Default, PartialEq, Serialize, Deserialize,
|
||||
|
|
@ -1186,7 +1181,8 @@ impl Song {
|
|||
|
||||
#[cfg(test)]
|
||||
pub mod test {
|
||||
use std::{str::FromStr, sync::Arc};
|
||||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::ui::text_svg::text_svg_generator_with_cache;
|
||||
|
||||
|
|
@ -1194,12 +1190,10 @@ pub mod test {
|
|||
use pretty_assertions::{assert_eq, assert_ne};
|
||||
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
||||
use resvg::usvg::fontdb;
|
||||
use sqlx::{
|
||||
Connection, migrate,
|
||||
sqlite::{
|
||||
SqliteConnectOptions, SqliteConnection, SqlitePoolOptions,
|
||||
},
|
||||
use sqlx::sqlite::{
|
||||
SqliteConnectOptions, SqliteConnection, SqlitePoolOptions,
|
||||
};
|
||||
use sqlx::{Connection, migrate};
|
||||
|
||||
#[test]
|
||||
pub fn test_song_lyrics() {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
use dirs;
|
||||
use std::error::Error;
|
||||
use std::fs;
|
||||
use std::io::{self, Write};
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
use std::str;
|
||||
use std::{fs, str};
|
||||
use tracing::debug;
|
||||
|
||||
pub fn bg_from_video(
|
||||
|
|
|
|||
|
|
@ -1,21 +1,17 @@
|
|||
use crate::{Background, SlideBuilder, TextAlignment};
|
||||
|
||||
use super::{
|
||||
content::Content,
|
||||
kinds::ServiceItemKind,
|
||||
model::{LibraryKind, Model},
|
||||
service_items::ServiceTrait,
|
||||
slide::Slide,
|
||||
};
|
||||
use super::content::Content;
|
||||
use super::kinds::ServiceItemKind;
|
||||
use super::model::{LibraryKind, Model};
|
||||
use super::service_items::ServiceTrait;
|
||||
use super::slide::Slide;
|
||||
use crisp::types::{Keyword, Symbol, Value};
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::{SqliteConnection, SqlitePool, query, query_as};
|
||||
use std::{
|
||||
mem::replace,
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
};
|
||||
use std::mem::replace;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::Arc;
|
||||
use tracing::error;
|
||||
|
||||
#[derive(
|
||||
|
|
|
|||
24
src/main.rs
24
src/main.rs
|
|
@ -8,15 +8,14 @@ use core::slide::{
|
|||
use cosmic::app::{Core, Settings, Task};
|
||||
use cosmic::cosmic_config::{Config, CosmicConfigEntry};
|
||||
use cosmic::dialog::file_chooser::{open, save};
|
||||
use cosmic::iced::Subscription;
|
||||
use cosmic::iced::alignment::Vertical;
|
||||
use cosmic::iced::core::text::Wrapping;
|
||||
use cosmic::iced::keyboard::{Key, Modifiers};
|
||||
use cosmic::iced::widget::{column, row, stack};
|
||||
use cosmic::iced::window::Position;
|
||||
use cosmic::iced::{
|
||||
self, Background as IcedBackground, Border, Color, Length, event,
|
||||
window,
|
||||
self, Background as IcedBackground, Border, Color, Length,
|
||||
Subscription, event, window,
|
||||
};
|
||||
use cosmic::widget::dnd_destination::dnd_destination;
|
||||
use cosmic::widget::menu::key_bind::Modifier;
|
||||
|
|
@ -25,16 +24,15 @@ use cosmic::widget::nav_bar::nav_bar_style;
|
|||
use cosmic::widget::space::{self, horizontal};
|
||||
use cosmic::widget::tooltip::Position as TPosition;
|
||||
use cosmic::widget::{
|
||||
Container, divider, menu, settings, text_input,
|
||||
Container, Space, button, container, context_menu, divider, icon,
|
||||
menu, mouse_area, nav_bar, nav_bar_toggle, responsive,
|
||||
scrollable, search_input, settings, slider, text, text_input,
|
||||
tooltip,
|
||||
};
|
||||
use cosmic::widget::{
|
||||
Space, button, context_menu, mouse_area, nav_bar, nav_bar_toggle,
|
||||
responsive, scrollable, search_input, tooltip,
|
||||
use cosmic::{
|
||||
Application, ApplicationExt, Apply, Element, cosmic_config,
|
||||
executor, theme,
|
||||
};
|
||||
use cosmic::widget::{container, text};
|
||||
use cosmic::widget::{icon, slider};
|
||||
use cosmic::{Application, ApplicationExt, Apply, Element, executor};
|
||||
use cosmic::{cosmic_config, theme};
|
||||
// use crisp::types::Value;
|
||||
// use lisp::parse_lisp;
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
|
|
@ -43,8 +41,8 @@ use resvg::usvg::fontdb;
|
|||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
use tracing::{debug, level_filters::LevelFilter};
|
||||
use tracing::{error, warn};
|
||||
use tracing::level_filters::LevelFilter;
|
||||
use tracing::{debug, error, warn};
|
||||
use tracing_subscriber::EnvFilter;
|
||||
use ui::EditorMode;
|
||||
use ui::library::{self, Library};
|
||||
|
|
|
|||
|
|
@ -10,9 +10,8 @@ pub fn create_video(url: &Url, framerate: u16) -> Result<Video> {
|
|||
// Based on `iced_video_player::Video::new`,
|
||||
// but without a text sink so that the built-in subtitle functionality triggers.
|
||||
// and with some better gstreamer tweaks
|
||||
use gstreamer as gst;
|
||||
use gstreamer_app as gst_app;
|
||||
use gstreamer_app::prelude::*;
|
||||
use {gstreamer as gst, gstreamer_app as gst_app};
|
||||
|
||||
gst::init().into_diagnostic()?;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
use std::{io, path::PathBuf};
|
||||
use std::io;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use crate::core::images::Image;
|
||||
use cosmic::{
|
||||
Apply, Element, Task,
|
||||
dialog::file_chooser::{FileFilter, open::Dialog},
|
||||
iced::widget::{column, row},
|
||||
iced::{Length, alignment::Vertical},
|
||||
theme,
|
||||
widget::{
|
||||
self, Space, button, container, icon, space::horizontal,
|
||||
text, text_input,
|
||||
},
|
||||
use cosmic::dialog::file_chooser::FileFilter;
|
||||
use cosmic::dialog::file_chooser::open::Dialog;
|
||||
use cosmic::iced::Length;
|
||||
use cosmic::iced::alignment::Vertical;
|
||||
use cosmic::iced::widget::{column, row};
|
||||
use cosmic::widget::space::horizontal;
|
||||
use cosmic::widget::{
|
||||
self, Space, button, container, icon, text, text_input,
|
||||
};
|
||||
use cosmic::{Apply, Element, Task, theme};
|
||||
use tracing::{debug, error, warn};
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
|
|||
|
|
@ -1,39 +1,34 @@
|
|||
use std::{collections::HashMap, sync::Arc};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::{
|
||||
Element, Task,
|
||||
dialog::file_chooser::open::Dialog,
|
||||
iced::core::widget::tree::State,
|
||||
iced::widget::{column, row as rowm, text as textm},
|
||||
iced::{
|
||||
Background, Border, Color, Length, alignment::Vertical,
|
||||
clipboard::dnd::DndAction, keyboard::Modifiers,
|
||||
},
|
||||
theme,
|
||||
widget::{
|
||||
Container, DndSource, Space, button, container, context_menu,
|
||||
divider, dnd_destination, icon,
|
||||
menu::{self, Action as MenuAction},
|
||||
mouse_area, responsive, row, scrollable,
|
||||
space::{self, horizontal},
|
||||
text, text_input,
|
||||
},
|
||||
use cosmic::dialog::file_chooser::open::Dialog;
|
||||
use cosmic::iced::alignment::Vertical;
|
||||
use cosmic::iced::clipboard::dnd::DndAction;
|
||||
use cosmic::iced::core::widget::tree::State;
|
||||
use cosmic::iced::keyboard::Modifiers;
|
||||
use cosmic::iced::widget::{column, row as rowm, text as textm};
|
||||
use cosmic::iced::{Background, Border, Color, Length};
|
||||
use cosmic::widget::menu::{self, Action as MenuAction};
|
||||
use cosmic::widget::space::{self, horizontal};
|
||||
use cosmic::widget::{
|
||||
Container, DndSource, Space, button, container, context_menu,
|
||||
divider, dnd_destination, icon, mouse_area, responsive, row,
|
||||
scrollable, text, text_input,
|
||||
};
|
||||
use cosmic::{Element, Task, theme};
|
||||
use miette::{IntoDiagnostic, Result};
|
||||
use rapidfuzz::distance::levenshtein;
|
||||
use sqlx::{SqlitePool, migrate};
|
||||
use tracing::{debug, error, warn};
|
||||
|
||||
use crate::core::{
|
||||
content::Content,
|
||||
images::{self, Image},
|
||||
kinds::ServiceItemKind,
|
||||
model::{KindWrapper, LibraryKind, Model},
|
||||
presentations::{self, Presentation},
|
||||
service_items::ServiceItem,
|
||||
songs::{self, Song},
|
||||
videos::{self, Video},
|
||||
};
|
||||
use crate::core::content::Content;
|
||||
use crate::core::images::{self, Image};
|
||||
use crate::core::kinds::ServiceItemKind;
|
||||
use crate::core::model::{KindWrapper, LibraryKind, Model};
|
||||
use crate::core::presentations::{self, Presentation};
|
||||
use crate::core::service_items::ServiceItem;
|
||||
use crate::core::songs::{self, Song};
|
||||
use crate::core::videos::{self, Video};
|
||||
|
||||
#[allow(clippy::struct_field_names)]
|
||||
#[derive(Debug, Clone)]
|
||||
|
|
@ -1469,9 +1464,7 @@ pub fn elide_text(text: impl AsRef<str>, width: f32) -> String {
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use crate::core::songs::test::add_db;
|
||||
use crate::core::songs::test::fill_db;
|
||||
use crate::core::songs::test::test_song;
|
||||
use crate::core::songs::test::{add_db, fill_db, test_song};
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[tokio::test]
|
||||
|
|
|
|||
|
|
@ -1,25 +1,21 @@
|
|||
use std::{
|
||||
collections::HashMap,
|
||||
io,
|
||||
ops::RangeBounds,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
use std::io;
|
||||
use std::ops::RangeBounds;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use crate::core::presentations::{PresKind, Presentation};
|
||||
use cosmic::{
|
||||
Element, Task,
|
||||
dialog::file_chooser::{FileFilter, open::Dialog},
|
||||
iced::widget::{column, row},
|
||||
iced::{Background, ContentFit, Length, alignment::Vertical},
|
||||
theme,
|
||||
widget::{
|
||||
self, Space, button, container, context_menu, icon,
|
||||
image::Handle,
|
||||
menu, mouse_area, scrollable,
|
||||
space::{self, horizontal},
|
||||
text, text_input,
|
||||
},
|
||||
use cosmic::dialog::file_chooser::FileFilter;
|
||||
use cosmic::dialog::file_chooser::open::Dialog;
|
||||
use cosmic::iced::alignment::Vertical;
|
||||
use cosmic::iced::widget::{column, row};
|
||||
use cosmic::iced::{Background, ContentFit, Length};
|
||||
use cosmic::widget::image::Handle;
|
||||
use cosmic::widget::space::{self, horizontal};
|
||||
use cosmic::widget::{
|
||||
self, Space, button, container, context_menu, icon, menu,
|
||||
mouse_area, scrollable, text, text_input,
|
||||
};
|
||||
use cosmic::{Element, Task, theme};
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use mupdf::{Colorspace, Document, Matrix};
|
||||
use tracing::{debug, error, warn};
|
||||
|
|
|
|||
|
|
@ -1,52 +1,42 @@
|
|||
use obws::{Client, responses::scenes::Scene};
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
fs::File,
|
||||
io::BufReader,
|
||||
path::PathBuf,
|
||||
sync::{Arc, LazyLock},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::{Arc, LazyLock};
|
||||
|
||||
use cosmic::{
|
||||
Task,
|
||||
cosmic_theme::Spacing,
|
||||
iced::{
|
||||
Background, Border, Color, ContentFit, Font, Length, Shadow,
|
||||
Vector,
|
||||
alignment::Horizontal,
|
||||
core::text::{Ellipsize, EllipsizeHeightLimit},
|
||||
font::{Family, Stretch, Style, Weight},
|
||||
widget::{
|
||||
grid,
|
||||
scrollable::{
|
||||
AbsoluteOffset, Direction, Scrollbar, scroll_to,
|
||||
},
|
||||
stack,
|
||||
},
|
||||
},
|
||||
prelude::*,
|
||||
theme,
|
||||
widget::{
|
||||
Container, Id, Row, Space, column, container, context_menu,
|
||||
divider::vertical, flex_row, image, menu, mouse_area,
|
||||
responsive, scrollable, space, text,
|
||||
},
|
||||
use cosmic::cosmic_theme::Spacing;
|
||||
use cosmic::iced::alignment::Horizontal;
|
||||
use cosmic::iced::font::{Family, Stretch, Style, Weight};
|
||||
use cosmic::iced::widget::scrollable::{
|
||||
AbsoluteOffset, Direction, Scrollbar, scroll_to,
|
||||
};
|
||||
use cosmic::iced::widget::{grid, stack};
|
||||
use cosmic::iced::{
|
||||
Background, Border, Color, ContentFit, Font, Length, Shadow,
|
||||
Vector,
|
||||
};
|
||||
use cosmic::prelude::*;
|
||||
use cosmic::widget::divider::vertical;
|
||||
use cosmic::widget::{
|
||||
Container, Id, Row, Space, column, container, context_menu,
|
||||
flex_row, image, menu, mouse_area, responsive, row, scrollable,
|
||||
space, text,
|
||||
};
|
||||
use cosmic::{Task, theme};
|
||||
use derive_more::Debug;
|
||||
use iced_video_player::{Position, Video, VideoPlayer, gst_pbutils};
|
||||
use obws::Client;
|
||||
use obws::responses::scenes::Scene;
|
||||
use rodio::{Decoder, OutputStream, OutputStreamBuilder, Sink};
|
||||
use tracing::{debug, error, info, warn};
|
||||
use url::Url;
|
||||
|
||||
use crate::{
|
||||
BackgroundKind,
|
||||
core::{
|
||||
service_items::ServiceItem,
|
||||
slide::Slide,
|
||||
slide_actions::{self, ObsAction},
|
||||
},
|
||||
ui::{gst_video, library::elide_text},
|
||||
};
|
||||
use crate::BackgroundKind;
|
||||
use crate::core::service_items::ServiceItem;
|
||||
use crate::core::slide::Slide;
|
||||
use crate::core::slide_actions::{self, ObsAction};
|
||||
use crate::ui::gst_video;
|
||||
use crate::ui::library::elide_text;
|
||||
|
||||
// const REFERENCE_WIDTH: f32 = 1920.0;
|
||||
static DEFAULT_SLIDE: LazyLock<Slide> = LazyLock::new(Slide::default);
|
||||
|
|
@ -720,20 +710,17 @@ impl Presenter {
|
|||
items.push(item.into());
|
||||
|
||||
items.push(
|
||||
container(
|
||||
vertical::light()
|
||||
.width(20)
|
||||
.height(Length::Fill),
|
||||
)
|
||||
.class(if slide_index + 1 == slides_length {
|
||||
theme::Container::Card
|
||||
} else {
|
||||
theme::Container::WindowBackground
|
||||
})
|
||||
.padding([
|
||||
space_none, space_xs, space_none, space_xs,
|
||||
])
|
||||
.into(),
|
||||
container(space::vertical().width(space_s))
|
||||
.class(if slide_index + 1 == slides_length {
|
||||
theme::Container::Card
|
||||
} else {
|
||||
theme::Container::WindowBackground
|
||||
})
|
||||
.padding([
|
||||
space_none, space_xs, space_none,
|
||||
space_xs,
|
||||
])
|
||||
.into(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -754,7 +741,7 @@ impl Presenter {
|
|||
.height(Length::Fill)
|
||||
.width(Length::Fill)
|
||||
.id(self.scroll_id.clone());
|
||||
self.context_menu(scrollable.into())
|
||||
self.context_menu(scrollable.into()).apply(container).into()
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
|
|
@ -1206,11 +1193,9 @@ pub(crate) fn slide_view<'a>(
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::core::{
|
||||
presentations::{PresKind, Presentation},
|
||||
slide::TextAlignment,
|
||||
songs::{Song, VerseName},
|
||||
};
|
||||
use crate::core::presentations::{PresKind, Presentation};
|
||||
use crate::core::slide::TextAlignment;
|
||||
use crate::core::songs::{Song, VerseName};
|
||||
|
||||
use super::*;
|
||||
use miette::Result;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,10 @@
|
|||
use std::{io, path::PathBuf};
|
||||
use std::io;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use cosmic::{
|
||||
Renderer,
|
||||
iced::{Color, Font, Length, Size},
|
||||
widget::{
|
||||
self,
|
||||
canvas::{self, Program, Stroke},
|
||||
container,
|
||||
},
|
||||
};
|
||||
use cosmic::Renderer;
|
||||
use cosmic::iced::{Color, Font, Length, Size};
|
||||
use cosmic::widget::canvas::{self, Program, Stroke};
|
||||
use cosmic::widget::{self, container};
|
||||
use tracing::debug;
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
|
|
|
|||
|
|
@ -1,49 +1,37 @@
|
|||
#![allow(clippy::similar_names)]
|
||||
#![allow(clippy::too_many_lines)]
|
||||
use std::{
|
||||
fmt::Display,
|
||||
io::{self},
|
||||
path::PathBuf,
|
||||
sync::Arc,
|
||||
};
|
||||
use std::fmt::Display;
|
||||
use std::io::{self};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::{
|
||||
Apply, Element, Task,
|
||||
dialog::file_chooser::{FileFilter, open::Dialog},
|
||||
iced::core::widget::tree,
|
||||
iced::futures,
|
||||
iced::widget::{
|
||||
column, row,
|
||||
scrollable::{
|
||||
self as iced_scrollable, AbsoluteOffset, Direction,
|
||||
Scrollbar,
|
||||
},
|
||||
stack,
|
||||
},
|
||||
iced::{
|
||||
Background as ContainerBackground, Border, Color, Length,
|
||||
Padding, Shadow, Vector,
|
||||
alignment::{Horizontal, Vertical},
|
||||
color,
|
||||
font::{Style, Weight},
|
||||
futures::{
|
||||
SinkExt, StreamExt, TryStreamExt,
|
||||
channel::mpsc::{UnboundedReceiver, unbounded},
|
||||
},
|
||||
task,
|
||||
},
|
||||
theme,
|
||||
widget::{
|
||||
ColorPickerModel, Id, RcElementWrapper, button,
|
||||
color_picker::ColorPickerUpdate,
|
||||
combo_box, container, divider, dnd_destination, dnd_source,
|
||||
dropdown,
|
||||
grid::{self},
|
||||
icon, mouse_area, popover, scrollable,
|
||||
space::{self, horizontal},
|
||||
text, text_editor, text_input, tooltip,
|
||||
},
|
||||
use cosmic::dialog::file_chooser::FileFilter;
|
||||
use cosmic::dialog::file_chooser::open::Dialog;
|
||||
use cosmic::iced::alignment::{Horizontal, Vertical};
|
||||
use cosmic::iced::core::widget::tree;
|
||||
use cosmic::iced::font::{Style, Weight};
|
||||
use cosmic::iced::futures::channel::mpsc::{
|
||||
UnboundedReceiver, unbounded,
|
||||
};
|
||||
use cosmic::iced::futures::{SinkExt, StreamExt, TryStreamExt};
|
||||
use cosmic::iced::widget::scrollable::{
|
||||
self as iced_scrollable, AbsoluteOffset, Direction, Scrollbar,
|
||||
};
|
||||
use cosmic::iced::widget::{column, row, stack};
|
||||
use cosmic::iced::{
|
||||
Background as ContainerBackground, Border, Color, Length,
|
||||
Padding, Shadow, Vector, color, futures, task,
|
||||
};
|
||||
use cosmic::widget::color_picker::ColorPickerUpdate;
|
||||
use cosmic::widget::grid::{self};
|
||||
use cosmic::widget::space::{self, horizontal};
|
||||
use cosmic::widget::{
|
||||
ColorPickerModel, Id, RcElementWrapper, button, combo_box,
|
||||
container, divider, dnd_destination, dnd_source, dropdown, icon,
|
||||
mouse_area, popover, scrollable, text, text_editor, text_input,
|
||||
tooltip,
|
||||
};
|
||||
use cosmic::{Apply, Element, Task, theme};
|
||||
use derive_more::Debug;
|
||||
use dirs::font_dir;
|
||||
use fontdb;
|
||||
|
|
@ -52,23 +40,15 @@ use itertools::Itertools;
|
|||
use rayon::iter::{IntoParallelIterator, ParallelIterator};
|
||||
use tracing::{debug, error};
|
||||
|
||||
use crate::{
|
||||
Background, BackgroundKind,
|
||||
core::{
|
||||
service_items::ServiceTrait,
|
||||
slide::{Slide, TextAlignment},
|
||||
songs::{Song, VerseName},
|
||||
},
|
||||
ui::{
|
||||
presenter::slide_view,
|
||||
slide_editor::SlideEditor,
|
||||
text_svg,
|
||||
widgets::{
|
||||
draggable,
|
||||
verse_editor::{self, VerseEditor},
|
||||
},
|
||||
},
|
||||
};
|
||||
use crate::core::service_items::ServiceTrait;
|
||||
use crate::core::slide::{Slide, TextAlignment};
|
||||
use crate::core::songs::{Song, VerseName};
|
||||
use crate::ui::presenter::slide_view;
|
||||
use crate::ui::slide_editor::SlideEditor;
|
||||
use crate::ui::text_svg;
|
||||
use crate::ui::widgets::draggable;
|
||||
use crate::ui::widgets::verse_editor::{self, VerseEditor};
|
||||
use crate::{Background, BackgroundKind};
|
||||
|
||||
// This should get refactored into holding a state machine
|
||||
// then each state of what is being edited can be caught by the compiler
|
||||
|
|
|
|||
|
|
@ -1,31 +1,26 @@
|
|||
use std::{
|
||||
fmt::{Display, Write},
|
||||
fs,
|
||||
hash::{Hash, Hasher},
|
||||
path::PathBuf,
|
||||
sync::Arc,
|
||||
};
|
||||
use std::fmt::{Display, Write};
|
||||
use std::fs;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
use cosmic::{
|
||||
cosmic_theme::palette::{IntoColor, Srgb, rgb::Rgba},
|
||||
iced::{
|
||||
ContentFit, Length, Size,
|
||||
font::{Style, Weight},
|
||||
},
|
||||
prelude::*,
|
||||
widget::{Image, Space, image::Handle},
|
||||
};
|
||||
use cosmic::cosmic_theme::palette::rgb::Rgba;
|
||||
use cosmic::cosmic_theme::palette::{IntoColor, Srgb};
|
||||
use cosmic::iced::font::{Style, Weight};
|
||||
use cosmic::iced::{ContentFit, Length, Size};
|
||||
use cosmic::prelude::*;
|
||||
use cosmic::widget::image::Handle;
|
||||
use cosmic::widget::{Image, Space};
|
||||
use derive_more::Debug;
|
||||
use miette::{IntoDiagnostic, Result, miette};
|
||||
use rapidhash::v3::rapidhash_v3;
|
||||
use resvg::{
|
||||
tiny_skia::{self, Pixmap},
|
||||
usvg::{Tree, fontdb},
|
||||
};
|
||||
use resvg::tiny_skia::{self, Pixmap};
|
||||
use resvg::usvg::{Tree, fontdb};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tracing::error;
|
||||
|
||||
use crate::{TextAlignment, core::slide::Slide};
|
||||
use crate::TextAlignment;
|
||||
use crate::core::slide::Slide;
|
||||
|
||||
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
|
||||
pub struct TextSvg {
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
use std::{io, path::PathBuf};
|
||||
use std::io;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use cosmic::{
|
||||
Element, Task,
|
||||
dialog::file_chooser::{FileFilter, open::Dialog},
|
||||
iced::widget::{column, row},
|
||||
iced::{Length, alignment::Vertical},
|
||||
theme,
|
||||
widget::{
|
||||
Space, button, container, icon, slider,
|
||||
space::{self, horizontal},
|
||||
text, text_input,
|
||||
},
|
||||
use cosmic::dialog::file_chooser::FileFilter;
|
||||
use cosmic::dialog::file_chooser::open::Dialog;
|
||||
use cosmic::iced::Length;
|
||||
use cosmic::iced::alignment::Vertical;
|
||||
use cosmic::iced::widget::{column, row};
|
||||
use cosmic::widget::space::{self, horizontal};
|
||||
use cosmic::widget::{
|
||||
Space, button, container, icon, slider, text, text_input,
|
||||
};
|
||||
use cosmic::{Element, Task, theme};
|
||||
use iced_video_player::{Position, Video, VideoPlayer};
|
||||
use tracing::{debug, error, warn};
|
||||
use url::Url;
|
||||
|
||||
use crate::{core::videos, ui::gst_video};
|
||||
use crate::core::videos;
|
||||
use crate::ui::gst_video;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct VideoEditor {
|
||||
|
|
|
|||
|
|
@ -28,10 +28,9 @@ use cosmic::iced::advanced::widget::{Operation, Tree, Widget, tree};
|
|||
use cosmic::iced::advanced::{Clipboard, Shell, overlay, renderer};
|
||||
use cosmic::iced::alignment::{self, Alignment};
|
||||
use cosmic::iced::event::Event;
|
||||
use cosmic::iced::{self, Transformation, mouse};
|
||||
use cosmic::iced::{
|
||||
Background, Border, Color, Element, Length, Padding, Pixels,
|
||||
Point, Rectangle, Size, Vector,
|
||||
self, Background, Border, Color, Element, Length, Padding,
|
||||
Pixels, Point, Rectangle, Size, Transformation, Vector, mouse,
|
||||
};
|
||||
|
||||
use super::{Action, DragEvent, DropPosition};
|
||||
|
|
|
|||
|
|
@ -28,10 +28,9 @@ use cosmic::iced::advanced::widget::{Operation, Tree, Widget, tree};
|
|||
use cosmic::iced::advanced::{Clipboard, Shell, overlay, renderer};
|
||||
use cosmic::iced::alignment::{self, Alignment};
|
||||
use cosmic::iced::event::Event;
|
||||
use cosmic::iced::{self, Transformation, mouse};
|
||||
use cosmic::iced::{
|
||||
Background, Border, Color, Element, Length, Padding, Pixels,
|
||||
Point, Rectangle, Size, Vector,
|
||||
self, Background, Border, Color, Element, Length, Padding,
|
||||
Pixels, Point, Rectangle, Size, Transformation, Vector, mouse,
|
||||
};
|
||||
|
||||
use super::{Action, DragEvent, DropPosition};
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@
|
|||
#[allow(clippy::pedantic)]
|
||||
pub mod draggable;
|
||||
// pub mod slide_text;
|
||||
pub mod context_popover;
|
||||
pub mod verse_editor;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
use cosmic::{
|
||||
Element, Task,
|
||||
cosmic_theme::palette::WithAlpha,
|
||||
iced::widget::{column, row},
|
||||
iced::{Background, Border},
|
||||
theme,
|
||||
widget::{
|
||||
button, combo_box, container, icon, space, text_editor,
|
||||
},
|
||||
use cosmic::cosmic_theme::palette::WithAlpha;
|
||||
use cosmic::iced::widget::{column, row};
|
||||
use cosmic::iced::{Background, Border};
|
||||
use cosmic::widget::{
|
||||
button, combo_box, container, icon, space, text_editor,
|
||||
};
|
||||
use cosmic::{Element, Task, theme};
|
||||
|
||||
use crate::core::songs::VerseName;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue