parent
cfa836720c
commit
02bec6cce9
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<g transform="translate(0 -1028.4)">
|
||||||
|
<path d="m2 4v13.531 2.469c0 1.105 0.8954 2 2 2h4 8l6-6v-12h-20z" transform="translate(0 1028.4)" fill="#f1c40f"/>
|
||||||
|
<path d="m22 1044.4-6 6v-4c0-1.1 0.895-2 2-2h4z" fill="#f39c12"/>
|
||||||
|
<path d="m4 2c-1.1046 0-2 0.8954-2 2v1 1h20v-1-1c0-1.1046-0.895-2-2-2h-4-8-4z" transform="translate(0 1028.4)" fill="#f1c40f"/>
|
||||||
|
<g fill="#f39c12">
|
||||||
|
<rect height="2" width="14" y="1034.4" x="5"/>
|
||||||
|
<rect height="2" width="14" y="1038.4" x="5"/>
|
||||||
|
<rect height="2" width="9" y="1042.4" x="5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 842 B |
|
|
@ -1,6 +1,5 @@
|
||||||
use std::path::Path;
|
|
||||||
|
|
||||||
use clap::{ArgEnum, Parser};
|
use clap::{ArgEnum, Parser};
|
||||||
|
use fltk::dialog;
|
||||||
use fltk_theme::ThemeType;
|
use fltk_theme::ThemeType;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
@ -100,10 +99,27 @@ impl ConfigFile {
|
||||||
|
|
||||||
let config = Self::default();
|
let config = Self::default();
|
||||||
if let Err(_) = std::fs::write(&conf, serde_json::to_string(&config).unwrap()) {
|
if let Err(_) = std::fs::write(&conf, serde_json::to_string(&config).unwrap()) {
|
||||||
|
dialog::message_default("Can't write config!");
|
||||||
eprintln!("Can't write config!");
|
eprintln!("Can't write config!");
|
||||||
}
|
}
|
||||||
config
|
config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn save(&self) {
|
||||||
|
let conf = match dirs::config_dir() {
|
||||||
|
Some(path) => path.join("post_maker.config"),
|
||||||
|
None => std::env::current_exe()
|
||||||
|
.unwrap()
|
||||||
|
.parent()
|
||||||
|
.unwrap()
|
||||||
|
.join("post_maker.config"),
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Err(_) = std::fs::write(&conf, serde_json::to_string(self).unwrap()) {
|
||||||
|
dialog::message_default("Can't write config!");
|
||||||
|
eprintln!("Can't write config!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn config() -> Args {
|
pub(crate) fn config() -> Args {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,278 @@
|
||||||
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
|
use fltk::{
|
||||||
|
app,
|
||||||
|
button::Button,
|
||||||
|
dialog::{self, FileDialogOptions, NativeFileChooser},
|
||||||
|
enums::{Align, Font},
|
||||||
|
frame::Frame,
|
||||||
|
group::Flex,
|
||||||
|
image::SvgImage,
|
||||||
|
misc::Spinner,
|
||||||
|
output::Output,
|
||||||
|
prelude::*,
|
||||||
|
valuator::ValueInput,
|
||||||
|
window::Window,
|
||||||
|
};
|
||||||
|
|
||||||
|
use crate::{config::ConfigFile, globals};
|
||||||
|
|
||||||
|
pub(crate) struct ConfigWindow {
|
||||||
|
pub(crate) win: Window,
|
||||||
|
pub(crate) quote_font_ttf: Output,
|
||||||
|
pub(crate) quote_font_ttf_browse: Button,
|
||||||
|
pub(crate) tag_font_ttf: Output,
|
||||||
|
pub(crate) tag_font_ttf_browse: Button,
|
||||||
|
pub(crate) quote_font_ratio: ValueInput,
|
||||||
|
pub(crate) tag_font_ratio: ValueInput,
|
||||||
|
pub(crate) layer_red: Spinner,
|
||||||
|
pub(crate) layer_green: Spinner,
|
||||||
|
pub(crate) layer_blue: Spinner,
|
||||||
|
pub(crate) layer_alpha: Spinner,
|
||||||
|
pub(crate) defaults_btn: Button,
|
||||||
|
pub(crate) save_btn: Button,
|
||||||
|
pub(crate) cancel_btn: Button,
|
||||||
|
did_save: Rc<RefCell<bool>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ConfigWindow {
|
||||||
|
pub(crate) fn new() -> Self {
|
||||||
|
let mut win = Window::new(0, 0, 500, 300, "Config").center_screen();
|
||||||
|
if let Ok(image) = SvgImage::from_data(&globals::ICON) {
|
||||||
|
win.set_icon(Some(image));
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut col = Flex::default().with_size(490, 290).with_pos(5, 5).column();
|
||||||
|
|
||||||
|
let mut quote_font_ttf_grp = Flex::default().row();
|
||||||
|
quote_font_ttf_grp.set_size(
|
||||||
|
&Frame::default()
|
||||||
|
.with_label("Font for quote (ttf)")
|
||||||
|
.with_align(Align::Right | Align::Inside),
|
||||||
|
160,
|
||||||
|
);
|
||||||
|
let quote_font_ttf = Output::default();
|
||||||
|
let quote_font_ttf_browse = Button::default().with_label("Pick");
|
||||||
|
quote_font_ttf_grp.set_size("e_font_ttf_browse, 50);
|
||||||
|
quote_font_ttf_grp.end();
|
||||||
|
col.set_size("e_font_ttf_grp, 30);
|
||||||
|
|
||||||
|
let mut tag_font_ttf_grp = Flex::default().row();
|
||||||
|
tag_font_ttf_grp.set_size(
|
||||||
|
&Frame::default()
|
||||||
|
.with_label("Font for tag (ttf)")
|
||||||
|
.with_align(Align::Right | Align::Inside),
|
||||||
|
160,
|
||||||
|
);
|
||||||
|
let tag_font_ttf = Output::default();
|
||||||
|
let tag_font_ttf_browse = Button::default().with_label("Pick");
|
||||||
|
tag_font_ttf_grp.set_size(&tag_font_ttf_browse, 50);
|
||||||
|
tag_font_ttf_grp.end();
|
||||||
|
col.set_size(&tag_font_ttf_grp, 30);
|
||||||
|
|
||||||
|
let mut quote_font_ratio_grp = Flex::default().row();
|
||||||
|
quote_font_ratio_grp.set_size(
|
||||||
|
&Frame::default()
|
||||||
|
.with_label("Quote text size ratio")
|
||||||
|
.with_align(Align::Right | Align::Inside),
|
||||||
|
160,
|
||||||
|
);
|
||||||
|
let quote_font_ratio = ValueInput::default();
|
||||||
|
quote_font_ratio_grp.end();
|
||||||
|
col.set_size("e_font_ratio_grp, 30);
|
||||||
|
|
||||||
|
let mut grp = Flex::default().row();
|
||||||
|
grp.set_size(&Frame::default(), 160);
|
||||||
|
let mut hint = Frame::default()
|
||||||
|
.with_label("Font size in image of resolution 4000x5000")
|
||||||
|
.with_align(Align::Left | Align::Inside);
|
||||||
|
hint.set_label_font(Font::CourierItalic);
|
||||||
|
hint.set_label_size(12);
|
||||||
|
grp.end();
|
||||||
|
col.set_size(&grp, 13);
|
||||||
|
|
||||||
|
let mut tag_font_ratio_grp = Flex::default().row();
|
||||||
|
tag_font_ratio_grp.set_size(
|
||||||
|
&Frame::default()
|
||||||
|
.with_label("Tag text size ratio")
|
||||||
|
.with_align(Align::Right | Align::Inside),
|
||||||
|
160,
|
||||||
|
);
|
||||||
|
let tag_font_ratio = ValueInput::default();
|
||||||
|
tag_font_ratio_grp.end();
|
||||||
|
col.set_size(&tag_font_ratio_grp, 30);
|
||||||
|
|
||||||
|
let mut grp = Flex::default().row();
|
||||||
|
grp.set_size(&Frame::default(), 160);
|
||||||
|
let mut hint = Frame::default()
|
||||||
|
.with_label("Font size in image of resolution 4000x5000")
|
||||||
|
.with_align(Align::Left | Align::Inside);
|
||||||
|
hint.set_label_font(Font::CourierItalic);
|
||||||
|
hint.set_label_size(12);
|
||||||
|
grp.end();
|
||||||
|
col.set_size(&grp, 13);
|
||||||
|
|
||||||
|
col.set_size(
|
||||||
|
&Frame::default().with_label("Default colour shader to use with new images:"),
|
||||||
|
30,
|
||||||
|
);
|
||||||
|
|
||||||
|
let mut darklayer_grp = Flex::default().row();
|
||||||
|
darklayer_grp.set_pad(2);
|
||||||
|
darklayer_grp.set_size(&Frame::default().with_label("Red"), 30);
|
||||||
|
let mut layer_red = Spinner::default();
|
||||||
|
layer_red.set_range(0.0, 255.0);
|
||||||
|
// darklayer_flex.set_size(&layer_red, 50);
|
||||||
|
darklayer_grp.set_size(&Frame::default().with_label("Green"), 40);
|
||||||
|
let mut layer_green = Spinner::default();
|
||||||
|
layer_green.set_range(0.0, 255.0);
|
||||||
|
// darklayer_flex.set_size(&layer_green, 50);
|
||||||
|
darklayer_grp.set_size(&Frame::default().with_label("Blue"), 30);
|
||||||
|
let mut layer_blue = Spinner::default();
|
||||||
|
layer_blue.set_range(0.0, 255.0);
|
||||||
|
// darklayer_flex.set_size(&layer_blue, 50);
|
||||||
|
darklayer_grp.set_size(&Frame::default().with_label("Alpha"), 40);
|
||||||
|
let mut layer_alpha = Spinner::default();
|
||||||
|
layer_alpha.set_range(0.0, 255.0);
|
||||||
|
// darklayer_flex.set_size(&layer_alpha, 50);
|
||||||
|
darklayer_grp.end();
|
||||||
|
col.set_size(&darklayer_grp, 30);
|
||||||
|
|
||||||
|
Frame::default();
|
||||||
|
|
||||||
|
let mut panel_grp = Flex::default().row();
|
||||||
|
Frame::default();
|
||||||
|
let defaults_btn = Button::default().with_label("Defaults");
|
||||||
|
let save_btn = Button::default().with_label("Save");
|
||||||
|
let cancel_btn = Button::default().with_label("Cancel");
|
||||||
|
panel_grp.set_size(&defaults_btn, 100);
|
||||||
|
panel_grp.set_size(&save_btn, 100);
|
||||||
|
panel_grp.set_size(&cancel_btn, 100);
|
||||||
|
panel_grp.end();
|
||||||
|
|
||||||
|
col.set_size(&panel_grp, 30);
|
||||||
|
|
||||||
|
col.end();
|
||||||
|
win.end();
|
||||||
|
win.make_modal(true);
|
||||||
|
win.make_resizable(true);
|
||||||
|
|
||||||
|
let mut config_window = Self {
|
||||||
|
win,
|
||||||
|
quote_font_ttf,
|
||||||
|
quote_font_ttf_browse,
|
||||||
|
tag_font_ttf,
|
||||||
|
tag_font_ttf_browse,
|
||||||
|
quote_font_ratio,
|
||||||
|
tag_font_ratio,
|
||||||
|
layer_red,
|
||||||
|
layer_green,
|
||||||
|
layer_blue,
|
||||||
|
layer_alpha,
|
||||||
|
defaults_btn,
|
||||||
|
save_btn,
|
||||||
|
cancel_btn,
|
||||||
|
did_save: Rc::new(RefCell::new(false)),
|
||||||
|
};
|
||||||
|
config_window.event();
|
||||||
|
|
||||||
|
config_window
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn show(&mut self) -> bool {
|
||||||
|
let glob = globals::CONFIG.read().unwrap();
|
||||||
|
self.quote_font_ttf.set_value(glob.quote_font_ttf.as_str());
|
||||||
|
self.tag_font_ttf.set_value(glob.tag_font_ttf.as_str());
|
||||||
|
self.quote_font_ratio.set_value(glob.quote_font_ratio);
|
||||||
|
self.tag_font_ratio.set_value(glob.tag_font_ratio);
|
||||||
|
self.layer_red.set_value(glob.color_layer[0] as f64);
|
||||||
|
self.layer_green.set_value(glob.color_layer[1] as f64);
|
||||||
|
self.layer_blue.set_value(glob.color_layer[2] as f64);
|
||||||
|
self.layer_alpha.set_value(glob.color_layer[3] as f64);
|
||||||
|
*self.did_save.borrow_mut() = false;
|
||||||
|
drop(glob);
|
||||||
|
self.win.show();
|
||||||
|
while self.win.shown() {
|
||||||
|
app::wait();
|
||||||
|
}
|
||||||
|
*self.did_save.borrow()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn event(&mut self) {
|
||||||
|
let mut quote_font_ttf = self.quote_font_ttf.clone();
|
||||||
|
self.quote_font_ttf_browse.set_callback(move |_| {
|
||||||
|
let mut chooser = NativeFileChooser::new(fltk::dialog::FileDialogType::BrowseFile);
|
||||||
|
chooser.set_option(FileDialogOptions::UseFilterExt);
|
||||||
|
chooser.set_filter("*.ttf");
|
||||||
|
chooser.show();
|
||||||
|
let path = chooser.filename();
|
||||||
|
quote_font_ttf.set_value(path.to_str().unwrap());
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut tag_font_ttf = self.tag_font_ttf.clone();
|
||||||
|
self.tag_font_ttf_browse.set_callback(move |_| {
|
||||||
|
let mut chooser = NativeFileChooser::new(fltk::dialog::FileDialogType::BrowseFile);
|
||||||
|
chooser.set_option(FileDialogOptions::UseFilterExt);
|
||||||
|
chooser.set_filter("*.ttf");
|
||||||
|
chooser.show();
|
||||||
|
let path = chooser.filename();
|
||||||
|
tag_font_ttf.set_value(path.to_str().unwrap());
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut win = self.win.clone();
|
||||||
|
self.cancel_btn.set_callback(move |_| {
|
||||||
|
win.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut quote_font_ttf = self.quote_font_ttf.clone();
|
||||||
|
let mut tag_font_ttf = self.tag_font_ttf.clone();
|
||||||
|
let mut quote_font_ratio = self.quote_font_ratio.clone();
|
||||||
|
let mut tag_font_ratio = self.tag_font_ratio.clone();
|
||||||
|
let mut layer_red = self.layer_red.clone();
|
||||||
|
let mut layer_green = self.layer_green.clone();
|
||||||
|
let mut layer_blue = self.layer_blue.clone();
|
||||||
|
let mut layer_alpha = self.layer_alpha.clone();
|
||||||
|
self.defaults_btn.set_callback(move |_| {
|
||||||
|
let conf = ConfigFile::default();
|
||||||
|
quote_font_ttf.set_value(&conf.quote_font_ttf);
|
||||||
|
tag_font_ttf.set_value(&conf.tag_font_ttf);
|
||||||
|
quote_font_ratio.set_value(conf.quote_font_ratio);
|
||||||
|
tag_font_ratio.set_value(conf.tag_font_ratio);
|
||||||
|
layer_red.set_value(conf.color_layer[0] as f64);
|
||||||
|
layer_green.set_value(conf.color_layer[1] as f64);
|
||||||
|
layer_blue.set_value(conf.color_layer[2] as f64);
|
||||||
|
layer_alpha.set_value(conf.color_layer[3] as f64);
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut win = self.win.clone();
|
||||||
|
let quote_font_ttf = self.quote_font_ttf.clone();
|
||||||
|
let tag_font_ttf = self.tag_font_ttf.clone();
|
||||||
|
let quote_font_ratio = self.quote_font_ratio.clone();
|
||||||
|
let tag_font_ratio = self.tag_font_ratio.clone();
|
||||||
|
let layer_red = self.layer_red.clone();
|
||||||
|
let layer_green = self.layer_green.clone();
|
||||||
|
let layer_blue = self.layer_blue.clone();
|
||||||
|
let layer_alpha = self.layer_alpha.clone();
|
||||||
|
let did_save = Rc::clone(&self.did_save);
|
||||||
|
self.save_btn.set_callback(move |_| {
|
||||||
|
let conf = ConfigFile {
|
||||||
|
quote_font_ttf: quote_font_ttf.value(),
|
||||||
|
tag_font_ttf: tag_font_ttf.value(),
|
||||||
|
quote_font_ratio: quote_font_ratio.value(),
|
||||||
|
tag_font_ratio: tag_font_ratio.value(),
|
||||||
|
color_layer: [
|
||||||
|
layer_red.value() as u8,
|
||||||
|
layer_green.value() as u8,
|
||||||
|
layer_blue.value() as u8,
|
||||||
|
layer_alpha.value() as u8,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
conf.save();
|
||||||
|
*globals::CONFIG.write().unwrap() = conf;
|
||||||
|
*did_save.borrow_mut() = true;
|
||||||
|
win.hide();
|
||||||
|
dialog::message_default("Re-open Post Maker to see changes!")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -61,6 +61,7 @@ impl CropWindow {
|
||||||
main_flex.end();
|
main_flex.end();
|
||||||
|
|
||||||
win.end();
|
win.end();
|
||||||
|
win.make_modal(true);
|
||||||
win.make_resizable(true);
|
win.make_resizable(true);
|
||||||
|
|
||||||
let mut crop_win = Self {
|
let mut crop_win = Self {
|
||||||
|
|
@ -119,7 +120,6 @@ impl CropWindow {
|
||||||
|
|
||||||
self.page.image_view.redraw();
|
self.page.image_view.redraw();
|
||||||
self.win.show();
|
self.win.show();
|
||||||
self.win.make_modal(true);
|
|
||||||
while self.win.shown() {
|
while self.win.shown() {
|
||||||
app::wait();
|
app::wait();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -188,11 +188,13 @@ fn load_image(
|
||||||
tag_position.set_range(0.0, prop.original_dimension.1);
|
tag_position.set_range(0.0, prop.original_dimension.1);
|
||||||
tag_position.set_value(prop.tag_position);
|
tag_position.set_value(prop.tag_position);
|
||||||
|
|
||||||
layer_red.set_value(globals::CONFIG.color_layer[0] as f64);
|
let glob = &globals::CONFIG.read().unwrap();
|
||||||
layer_green.set_value(globals::CONFIG.color_layer[1] as f64);
|
layer_red.set_value(glob.color_layer[0] as f64);
|
||||||
layer_blue.set_value(globals::CONFIG.color_layer[2] as f64);
|
layer_green.set_value(glob.color_layer[1] as f64);
|
||||||
layer_alpha.set_value(globals::CONFIG.color_layer[3] as f64);
|
layer_blue.set_value(glob.color_layer[2] as f64);
|
||||||
prop.rgba = globals::CONFIG.color_layer;
|
layer_alpha.set_value(glob.color_layer[3] as f64);
|
||||||
|
prop.rgba = glob.color_layer;
|
||||||
|
drop(glob);
|
||||||
|
|
||||||
match crop {
|
match crop {
|
||||||
Some((x, y)) => {
|
Some((x, y)) => {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
use crate::config;
|
use crate::config;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use rusttype::Font;
|
use rusttype::Font;
|
||||||
use std::io::Read;
|
use std::{io::Read, sync::RwLock};
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref CONFIG: config::ConfigFile = config::ConfigFile::load();
|
pub static ref CONFIG: RwLock<config::ConfigFile> = RwLock::new(config::ConfigFile::load());
|
||||||
pub static ref FONT_QUOTE: Font<'static> = {
|
pub static ref FONT_QUOTE: Font<'static> = {
|
||||||
let mut buffer = Vec::new();
|
let mut buffer = Vec::new();
|
||||||
if let Ok(mut file) = std::fs::File::open(&CONFIG.quote_font_ttf) {
|
if let Ok(mut file) = std::fs::File::open(CONFIG.read().unwrap().quote_font_ttf.as_str()) {
|
||||||
if let Ok(_) = file.read_to_end(&mut buffer) {
|
if let Ok(_) = file.read_to_end(&mut buffer) {
|
||||||
if let Some(out) = rusttype::Font::try_from_vec(buffer) {
|
if let Some(out) = rusttype::Font::try_from_vec(buffer) {
|
||||||
return out;
|
return out;
|
||||||
|
|
@ -19,7 +19,7 @@ lazy_static! {
|
||||||
};
|
};
|
||||||
pub static ref FONT_TAG: Font<'static> = {
|
pub static ref FONT_TAG: Font<'static> = {
|
||||||
let mut buffer = Vec::new();
|
let mut buffer = Vec::new();
|
||||||
if let Ok(mut file) = std::fs::File::open(&CONFIG.quote_font_ttf) {
|
if let Ok(mut file) = std::fs::File::open(&CONFIG.read().unwrap().tag_font_ttf.as_str()) {
|
||||||
if let Ok(_) = file.read_to_end(&mut buffer) {
|
if let Ok(_) = file.read_to_end(&mut buffer) {
|
||||||
if let Some(out) = rusttype::Font::try_from_vec(buffer) {
|
if let Some(out) = rusttype::Font::try_from_vec(buffer) {
|
||||||
return out;
|
return out;
|
||||||
|
|
@ -28,4 +28,5 @@ lazy_static! {
|
||||||
}
|
}
|
||||||
rusttype::Font::try_from_vec(include_bytes!("../Kalam-Regular.ttf").to_vec()).unwrap()
|
rusttype::Font::try_from_vec(include_bytes!("../Kalam-Regular.ttf").to_vec()).unwrap()
|
||||||
};
|
};
|
||||||
|
pub static ref ICON: &'static str = include_str!("../icon.svg");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
mod config;
|
mod config;
|
||||||
|
mod config_window;
|
||||||
mod crop_window;
|
mod crop_window;
|
||||||
mod draw_thread;
|
mod draw_thread;
|
||||||
mod globals;
|
mod globals;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
use crate::config_window::ConfigWindow;
|
||||||
use crate::crop_window::CropWindow;
|
use crate::crop_window::CropWindow;
|
||||||
use crate::draw_thread::*;
|
use crate::draw_thread::*;
|
||||||
use crate::utils::ImageProperties;
|
use crate::utils::ImageProperties;
|
||||||
|
|
@ -53,8 +54,6 @@ impl MainWindow {
|
||||||
sender: app::Sender<crate::AppMessage>,
|
sender: app::Sender<crate::AppMessage>,
|
||||||
draw_buff: Arc<RwLock<Vec<u8>>>,
|
draw_buff: Arc<RwLock<Vec<u8>>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let color = [25, 29, 34, 190];
|
|
||||||
|
|
||||||
let mut win = Window::new(0, 0, 1000, 600, "Post Maker").center_screen();
|
let mut win = Window::new(0, 0, 1000, 600, "Post Maker").center_screen();
|
||||||
|
|
||||||
let mut main_flex = Flex::default().size_of_parent().column();
|
let mut main_flex = Flex::default().size_of_parent().column();
|
||||||
|
|
@ -102,22 +101,18 @@ impl MainWindow {
|
||||||
darklayer_flex.set_size(&Frame::default().with_label("Red"), 30);
|
darklayer_flex.set_size(&Frame::default().with_label("Red"), 30);
|
||||||
let mut layer_red = Spinner::default();
|
let mut layer_red = Spinner::default();
|
||||||
layer_red.set_range(0.0, 255.0);
|
layer_red.set_range(0.0, 255.0);
|
||||||
layer_red.set_value(color[0] as f64);
|
|
||||||
darklayer_flex.set_size(&layer_red, 50);
|
darklayer_flex.set_size(&layer_red, 50);
|
||||||
darklayer_flex.set_size(&Frame::default().with_label("Green"), 40);
|
darklayer_flex.set_size(&Frame::default().with_label("Green"), 40);
|
||||||
let mut layer_green = Spinner::default();
|
let mut layer_green = Spinner::default();
|
||||||
layer_green.set_range(0.0, 255.0);
|
layer_green.set_range(0.0, 255.0);
|
||||||
layer_green.set_value(color[1] as f64);
|
|
||||||
darklayer_flex.set_size(&layer_green, 50);
|
darklayer_flex.set_size(&layer_green, 50);
|
||||||
darklayer_flex.set_size(&Frame::default().with_label("Blue"), 30);
|
darklayer_flex.set_size(&Frame::default().with_label("Blue"), 30);
|
||||||
let mut layer_blue = Spinner::default();
|
let mut layer_blue = Spinner::default();
|
||||||
layer_blue.set_range(0.0, 255.0);
|
layer_blue.set_range(0.0, 255.0);
|
||||||
layer_blue.set_value(color[2] as f64);
|
|
||||||
darklayer_flex.set_size(&layer_blue, 50);
|
darklayer_flex.set_size(&layer_blue, 50);
|
||||||
darklayer_flex.set_size(&Frame::default().with_label("Alpha"), 40);
|
darklayer_flex.set_size(&Frame::default().with_label("Alpha"), 40);
|
||||||
let mut layer_alpha = Spinner::default();
|
let mut layer_alpha = Spinner::default();
|
||||||
layer_alpha.set_range(0.0, 255.0);
|
layer_alpha.set_range(0.0, 255.0);
|
||||||
layer_alpha.set_value(color[3] as f64);
|
|
||||||
darklayer_flex.set_size(&layer_alpha, 50);
|
darklayer_flex.set_size(&layer_alpha, 50);
|
||||||
darklayer_flex.end();
|
darklayer_flex.end();
|
||||||
controls_flex.set_size(&darklayer_flex, 30);
|
controls_flex.set_size(&darklayer_flex, 30);
|
||||||
|
|
@ -262,12 +257,16 @@ impl MainWindow {
|
||||||
move |_| sender.send(DrawMessage::Save).unwrap(),
|
move |_| sender.send(DrawMessage::Save).unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let mut config_window = ConfigWindow::new();
|
||||||
|
let sender = self.sender.clone();
|
||||||
self.menubar.add(
|
self.menubar.add(
|
||||||
"&Edit/Configure...\t",
|
"&Edit/Configure...\t",
|
||||||
Shortcut::None,
|
Shortcut::None,
|
||||||
menu::MenuFlag::Normal,
|
menu::MenuFlag::Normal,
|
||||||
|_| {
|
move |_| {
|
||||||
println!("wow");
|
if config_window.show() {
|
||||||
|
sender.send(DrawMessage::Recalc).unwrap();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -394,11 +394,11 @@ pub(crate) fn height_from_width(width: f64) -> f64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn quote_from_height(height: f64) -> f64 {
|
pub(crate) fn quote_from_height(height: f64) -> f64 {
|
||||||
(height * globals::CONFIG.quote_font_ratio) / 5000.0
|
(height * globals::CONFIG.read().unwrap().quote_font_ratio) / 5000.0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn tag_from_height(height: f64) -> f64 {
|
pub(crate) fn tag_from_height(height: f64) -> f64 {
|
||||||
(height * globals::CONFIG.tag_font_ratio) / 5000.0
|
(height * globals::CONFIG.read().unwrap().tag_font_ratio) / 5000.0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn measure_line(
|
pub(crate) fn measure_line(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue