Add font size to settings view

This commit is contained in:
Adrian Woźniak 2019-06-06 10:17:48 +02:00
parent 33715a38c7
commit 42820c52f5

View File

@ -11,6 +11,7 @@ use std::sync::Arc;
const CONTENT_MARGIN_LEFT: i32 = 16; const CONTENT_MARGIN_LEFT: i32 = 16;
const CONTENT_MARGIN_TOP: i32 = 24; const CONTENT_MARGIN_TOP: i32 = 24;
const DEFAULT_ICON_SIZE: u32 = 16; const DEFAULT_ICON_SIZE: u32 = 16;
const LABEL_WIDTH: i32 = CONTENT_MARGIN_LEFT * 20;
pub struct Settings { pub struct Settings {
vertical_scroll_bar: VerticalScrollBar, vertical_scroll_bar: VerticalScrollBar,
@ -22,11 +23,12 @@ pub struct Settings {
config: ConfigAccess, config: ConfigAccess,
font_label: Label, font_label: Label,
font_value: Label, font_value: Label,
character_size_label: Label,
character_size_value: Label,
} }
impl Settings { impl Settings {
pub fn new(config: ConfigAccess) -> Self { pub fn new(config: ConfigAccess) -> Self {
// let (window_width, window_height, background_color, border_color) = {
let c = config let c = config
.read() .read()
.unwrap_or_else(|_| panic!("Failed to read config")); .unwrap_or_else(|_| panic!("Failed to read config"));
@ -35,7 +37,6 @@ impl Settings {
let window_height = c.height(); let window_height = c.height();
let background_color = theme.background().into(); let background_color = theme.background().into();
let border_color = theme.border_color().into(); let border_color = theme.border_color().into();
// };
Self { Self {
vertical_scroll_bar: VerticalScrollBar::new(Arc::clone(&config)), vertical_scroll_bar: VerticalScrollBar::new(Arc::clone(&config)),
horizontal_scroll_bar: HorizontalScrollBar::new(Arc::clone(&config)), horizontal_scroll_bar: HorizontalScrollBar::new(Arc::clone(&config)),
@ -50,6 +51,11 @@ impl Settings {
border_color, border_color,
font_label: Label::new("Font path".into(), config.clone()), font_label: Label::new("Font path".into(), config.clone()),
font_value: Label::new(c.editor_config().font_path().clone(), config.clone()), font_value: Label::new(c.editor_config().font_path().clone(), config.clone()),
character_size_label: Label::new("Character size".into(), config.clone()),
character_size_value: Label::new(
format!("{}", c.editor_config().character_size()).to_owned(),
config.clone()
),
config: config.clone(), config: config.clone(),
} }
} }
@ -106,6 +112,7 @@ impl Settings {
.render_border(dest, self.border_color) .render_border(dest, self.border_color)
.unwrap_or_else(|_| panic!("Failed to render open file modal border!")); .unwrap_or_else(|_| panic!("Failed to render open file modal border!"));
// font path
self.font_label.render( self.font_label.render(
canvas, canvas,
renderer, renderer,
@ -121,13 +128,39 @@ impl Settings {
&RC::ParentPosition( &RC::ParentPosition(
self.render_start_point() self.render_start_point()
+ Point::new( + Point::new(
(CONTENT_MARGIN_LEFT * 2) + self.font_label.name_width() as i32, CONTENT_MARGIN_LEFT + LABEL_WIDTH,
CONTENT_MARGIN_TOP, CONTENT_MARGIN_TOP,
) )
+ self.scroll(), + self.scroll(),
), ),
); );
// character size
self.character_size_label.render(
canvas,
renderer,
&RC::ParentPosition(
self.render_start_point()
+ Point::new(
CONTENT_MARGIN_LEFT,
CONTENT_MARGIN_TOP + self.font_label.dest().height() as i32
)
+ self.scroll(),
),
);
self.character_size_value.render(
canvas,
renderer,
&RC::ParentPosition(
self.render_start_point()
+ Point::new(
CONTENT_MARGIN_LEFT + LABEL_WIDTH,
CONTENT_MARGIN_TOP + self.font_label.dest().height() as i32,
)
+ self.scroll(),
),
);
// Scroll bars // Scroll bars
self.vertical_scroll_bar self.vertical_scroll_bar
.render(canvas, &RenderContext::ParentPosition(self.dest.top_left())); .render(canvas, &RenderContext::ParentPosition(self.dest.top_left()));
@ -141,46 +174,19 @@ impl Settings {
{ {
self.font_label.prepare_ui(renderer); self.font_label.prepare_ui(renderer);
self.font_value.prepare_ui(renderer); self.font_value.prepare_ui(renderer);
self.character_size_label.prepare_ui(renderer);
self.character_size_value.prepare_ui(renderer);
} }
} }
impl ClickHandler for Settings { impl ClickHandler for Settings {
#[inline]
fn on_left_click(&mut self, _point: &Point, context: &UpdateContext) -> UR { fn on_left_click(&mut self, _point: &Point, context: &UpdateContext) -> UR {
let dest = match context {
UC::ParentPosition(p) => move_render_point(*p, &self.dest),
_ => self.dest,
};
let _context = UC::ParentPosition(
dest.top_left() + Point::new(CONTENT_MARGIN_LEFT, CONTENT_MARGIN_TOP) + self.scroll(),
);
// let res = self.directory_view.on_left_click(point, &context);
// {
// let dest = self.directory_view.dest();
// let full_dest = Rect::new(
// dest.x(),
// dest.y(),
// dest.width() + (2 * CONTENT_MARGIN_LEFT as u32),
// dest.height() + (2 * CONTENT_MARGIN_TOP as u32),
// );
// self.full_dest = full_dest;
// }
// res
UR::NoOp UR::NoOp
} }
#[inline]
fn is_left_click_target(&self, _point: &Point, context: &UpdateContext) -> bool { fn is_left_click_target(&self, _point: &Point, context: &UpdateContext) -> bool {
let dest = match *context {
UC::ParentPosition(p) => move_render_point(p.clone(), &self.dest),
_ => self.dest.clone(),
};
let p =
dest.top_left() + Point::new(CONTENT_MARGIN_LEFT, CONTENT_MARGIN_TOP) + self.scroll();
let _context = UC::ParentPosition(p);
// if self.directory_view.is_left_click_target(point, &context) {
// true
// } else {
// Rect::new(p.x(), p.y(), dest.width(), dest.height()).contains_point(point.clone())
// }
false false
} }
} }