docs, password config, help, about
render -> draw, file explorer, writer is RefCell
This commit is contained in:
@@ -35,11 +35,11 @@ impl WindowLike for AudioPlayer {
|
||||
match message {
|
||||
WindowMessage::Init(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::ChangeDimensions(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
if key_press.key == '𐘂' { //the enter key
|
||||
@@ -52,7 +52,7 @@ impl WindowLike for AudioPlayer {
|
||||
} else {
|
||||
self.command += &key_press.key.to_string();
|
||||
}
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
_ => {
|
||||
WindowMessageResponse::DoNothing
|
||||
|
||||
@@ -16,9 +16,6 @@ struct DirectoryChild {
|
||||
override_name: Option<String>,
|
||||
path: PathBuf,
|
||||
is_file: bool,
|
||||
//can only be true if dir
|
||||
//if true, means the contents of this dir should be visible too, even though it isn't the current path. like a tree
|
||||
tree_open: bool,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
@@ -38,11 +35,11 @@ impl WindowLike for FileExplorer {
|
||||
self.current_path = PathBuf::from("/");
|
||||
self.dimensions = dimensions;
|
||||
self.current_dir_contents = self.get_current_dir_contents();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::ChangeDimensions(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
if key_press.key == '𐘂' { //the enter key
|
||||
@@ -53,7 +50,7 @@ impl WindowLike for FileExplorer {
|
||||
self.current_dir_contents = self.get_current_dir_contents();
|
||||
self.position = 0;
|
||||
self.top_position = 0;
|
||||
return WindowMessageResponse::JustRerender;
|
||||
return WindowMessageResponse::JustRedraw;
|
||||
}
|
||||
}
|
||||
WindowMessageResponse::DoNothing
|
||||
@@ -74,15 +71,16 @@ impl WindowLike for FileExplorer {
|
||||
}
|
||||
}
|
||||
//calculate position
|
||||
let max_height = self.dimensions[1] - HEIGHT;
|
||||
if self.position > self.top_position {
|
||||
let current_height = (self.position - self.top_position) * HEIGHT;
|
||||
if current_height > self.dimensions[1] {
|
||||
self.top_position += (current_height - self.dimensions[1]) / HEIGHT + 1;
|
||||
self.top_position += (current_height - max_height) / HEIGHT + 1;
|
||||
}
|
||||
} else {
|
||||
self.top_position = self.position;
|
||||
};
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else {
|
||||
WindowMessageResponse::DoNothing
|
||||
}
|
||||
@@ -93,10 +91,10 @@ impl WindowLike for FileExplorer {
|
||||
|
||||
fn draw(&self, theme_info: &ThemeInfo) -> Vec<DrawInstructions> {
|
||||
let mut instructions = Vec::new();
|
||||
//top bar with path name and editing
|
||||
//
|
||||
//top bar with path name
|
||||
instructions.push(DrawInstructions::Text([5, 0], vec!["times-new-roman".to_string(), "shippori-mincho".to_string()], "Current: ".to_string() + &self.current_path.to_string_lossy().to_string(), theme_info.text, theme_info.background, None, None));
|
||||
//the actual files and directories
|
||||
let mut start_y = 0;
|
||||
let mut start_y = HEIGHT;
|
||||
let mut i = self.top_position;
|
||||
for entry in self.current_dir_contents.iter().skip(self.top_position) {
|
||||
if start_y > self.dimensions[1] {
|
||||
@@ -149,7 +147,6 @@ impl FileExplorer {
|
||||
contents.push(DirectoryChild {
|
||||
override_name: Some("..".to_string()),
|
||||
is_file: false,
|
||||
tree_open: false,
|
||||
path: self.current_path.parent().unwrap().to_owned(),
|
||||
});
|
||||
}
|
||||
@@ -158,7 +155,6 @@ impl FileExplorer {
|
||||
DirectoryChild {
|
||||
override_name: None,
|
||||
is_file: path.is_file(),
|
||||
tree_open: false,
|
||||
path,
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -87,7 +87,7 @@ impl WindowLike for Malvim {
|
||||
match message {
|
||||
WindowMessage::Init(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
let mut changed = true;
|
||||
@@ -304,11 +304,11 @@ impl WindowLike for Malvim {
|
||||
}
|
||||
}
|
||||
self.calc_top_line_pos();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::ChangeDimensions(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::Shortcut(shortcut) => {
|
||||
match shortcut {
|
||||
@@ -329,7 +329,7 @@ impl WindowLike for Malvim {
|
||||
self.calc_top_line_pos();
|
||||
self.calc_current(); //too over zealous but whatever
|
||||
self.files[self.current_file_index].changed = true;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else {
|
||||
WindowMessageResponse::DoNothing
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ impl WindowLike for Minesweeper {
|
||||
match message {
|
||||
WindowMessage::Init(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
if self.state == State::Seed {
|
||||
@@ -58,7 +58,7 @@ impl WindowLike for Minesweeper {
|
||||
self.random_chars.push(key_press.key);
|
||||
}
|
||||
}
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else if self.state == State::BeforePlaying || self.state == State::Playing {
|
||||
if key_press.key == '𐘁' { //backspace
|
||||
self.first_char = '\0';
|
||||
@@ -125,7 +125,7 @@ impl WindowLike for Minesweeper {
|
||||
self.state = State::Won;
|
||||
}
|
||||
}
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else {
|
||||
WindowMessageResponse::DoNothing
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ impl WindowLike for Reversi {
|
||||
self.dimensions = dimensions;
|
||||
self.new_tiles();
|
||||
self.valid_moves = self.get_valid_moves();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
if let Ok(n) = key_press.key.to_string().parse::<u8>() {
|
||||
@@ -82,7 +82,7 @@ impl WindowLike for Reversi {
|
||||
} else if key_press.key == '𐘁' { //backspace
|
||||
self.current_number = None;
|
||||
}
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
_ => WindowMessageResponse::DoNothing,
|
||||
}
|
||||
|
||||
@@ -44,11 +44,11 @@ impl WindowLike for Terminal {
|
||||
self.current_path = "/".to_string();
|
||||
self.lines = vec!["Mingde Terminal".to_string(), "".to_string()];
|
||||
self.calc_actual_lines();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::ChangeDimensions(dimensions) => {
|
||||
self.dimensions = dimensions;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
},
|
||||
WindowMessage::KeyPress(key_press) => {
|
||||
if self.state == State::Input {
|
||||
@@ -68,7 +68,7 @@ impl WindowLike for Terminal {
|
||||
}
|
||||
self.calc_actual_lines();
|
||||
self.actual_line_num = self.actual_lines.len().checked_sub(self.get_max_lines()).unwrap_or(0);
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else if key_press.key.len_utf8() == 1 {
|
||||
//update
|
||||
let running_process = self.running_process.as_mut().unwrap();
|
||||
@@ -85,7 +85,7 @@ impl WindowLike for Terminal {
|
||||
}
|
||||
self.state = State::Input;
|
||||
self.calc_actual_lines();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else {
|
||||
//still running
|
||||
WindowMessageResponse::DoNothing
|
||||
@@ -101,15 +101,15 @@ impl WindowLike for Terminal {
|
||||
//kills and running_process is now None
|
||||
let _ = self.running_process.take().unwrap().kill();
|
||||
self.state = State::Input;
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else if self.state == State::Input && (key_press.key == 'p' || key_press.key == 'n') {
|
||||
//only the last command is saved unlike other terminals. good enough for me
|
||||
if key_press.key == 'p' && self.last_command.is_some() {
|
||||
self.current_input = self.last_command.clone().unwrap();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else if key_press.key == 'n' {
|
||||
self.current_input = String::new();
|
||||
WindowMessageResponse::JustRerender
|
||||
WindowMessageResponse::JustRedraw
|
||||
} else {
|
||||
WindowMessageResponse::DoNothing
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
use std::process::{ Command, Stdio };
|
||||
use std::io::{ Read, Write };
|
||||
|
||||
use ron;
|
||||
|
||||
use ming_wm::messages::WindowMessage;
|
||||
|
||||
fn main() {
|
||||
println!("{}", ron::to_string(&WindowMessage::Init([100,100])).unwrap());
|
||||
//println!("{}", &ron::to_string(&[122, 400]).unwrap());
|
||||
}
|
||||
Reference in New Issue
Block a user