finished item edit window, and lateral item movement
This commit is contained in:
parent
afec8f6426
commit
95bfd219e9
|
@ -42,10 +42,10 @@ impl Calcifer {
|
|||
ui.separator();
|
||||
self.profiler_visible = self.toggle(ui, self.profiler_visible, "⚡");
|
||||
|
||||
// if self.tabs[self.selected_tab.to_index()].language == PROJECT_EXTENSION {
|
||||
// ui.separator();
|
||||
// self.project_mode = self.toggle(ui, self.project_mode, "c");
|
||||
// }
|
||||
if self.tabs[self.selected_tab.to_index()].language == PROJECT_EXTENSION {
|
||||
ui.separator();
|
||||
self.project_content.item_window.visible = self.toggle(ui, self.project_content.item_window.visible, "🖊");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -141,10 +141,13 @@ impl Calcifer {
|
|||
ui.style_mut().visuals.hyperlink_color =
|
||||
core::hex_str_to_color(self.theme.keywords);
|
||||
|
||||
let mut running_command = false;
|
||||
|
||||
for entry in &mut self.command_history {
|
||||
ui.label("");
|
||||
ui.horizontal(|ui| {
|
||||
if !entry.finished {
|
||||
running_command = true;
|
||||
entry.update();
|
||||
let _ = ui.link("(⌛)");
|
||||
} else if ui.link("(🗐)").clicked() {
|
||||
|
@ -165,6 +168,8 @@ impl Calcifer {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
self.running_command = running_command;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -243,8 +248,7 @@ impl Calcifer {
|
|||
});
|
||||
|
||||
ui.separator();
|
||||
if self.project_mode
|
||||
&& self.tabs[self.selected_tab.to_index()].language == PROJECT_EXTENSION
|
||||
if self.tabs[self.selected_tab.to_index()].language == PROJECT_EXTENSION
|
||||
{
|
||||
self.draw_project_file(ui);
|
||||
} else {
|
||||
|
@ -289,11 +293,16 @@ impl Calcifer {
|
|||
|
||||
pub fn draw_windows(&mut self, ctx: &egui::Context) {
|
||||
if self.project_content.item_window.visible {
|
||||
if self.project_content.categories.len() > 1 && self.project_content.categories[self.project_content.selected_item.category].content.len() > 0 {
|
||||
self.project_content.item_window.show(
|
||||
ctx,
|
||||
&mut self.project_content.categories[self.project_content.selected_item.category]
|
||||
.content[self.project_content.selected_item.row],
|
||||
);
|
||||
} else {
|
||||
|
||||
self.project_content.item_window.visible = false;
|
||||
}
|
||||
}
|
||||
if self.search_menu.visible {
|
||||
self.search_menu
|
||||
|
|
|
@ -63,11 +63,11 @@ struct Calcifer {
|
|||
|
||||
command: String,
|
||||
command_history: Vec<panels::CommandEntry>,
|
||||
running_command: bool,
|
||||
|
||||
theme: editor::ColorTheme,
|
||||
font_size: f32,
|
||||
|
||||
project_mode: bool,
|
||||
project_content: panels::Project,
|
||||
|
||||
home: PathBuf,
|
||||
|
@ -100,11 +100,11 @@ impl Default for Calcifer {
|
|||
|
||||
command: String::new(),
|
||||
command_history: Vec::new(),
|
||||
running_command: false,
|
||||
|
||||
theme: editor::themes::DEFAULT_THEMES[0],
|
||||
font_size: 14.0,
|
||||
|
||||
project_mode: true,
|
||||
project_content: panels::Project::new(),
|
||||
|
||||
home: get_my_home().unwrap().unwrap(),
|
||||
|
|
|
@ -73,7 +73,7 @@ impl Item {
|
|||
fn new(name: &str) -> Self {
|
||||
Self {
|
||||
name: name.to_string(),
|
||||
description: "".to_string(),
|
||||
description: "// Hello there".to_string(),
|
||||
id: get_id(),
|
||||
}
|
||||
}
|
||||
|
@ -108,6 +108,7 @@ pub fn draw_project(ui: &mut egui::Ui, theme: ColorTheme, project: &mut Project)
|
|||
if ui.add(egui::Button::new("+")).clicked() {
|
||||
project.add_category();
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
let response = ui.add(
|
||||
egui::TextEdit::singleline(&mut project.categories[category_index].name)
|
||||
|
@ -118,6 +119,8 @@ pub fn draw_project(ui: &mut egui::Ui, theme: ColorTheme, project: &mut Project)
|
|||
}
|
||||
}
|
||||
|
||||
ui.separator();
|
||||
|
||||
for (item_index, item) in category.content.iter().enumerate() {
|
||||
if project.selected_item
|
||||
== (Location {
|
||||
|
@ -159,7 +162,45 @@ pub fn draw_project(ui: &mut egui::Ui, theme: ColorTheme, project: &mut Project)
|
|||
let category = project.selected_item.category.clone();
|
||||
let row = project.selected_item.row.clone();
|
||||
|
||||
if ui.input(|i| i.key_pressed(egui::Key::ArrowLeft)) && project.selected_item.category > 0 {
|
||||
if ui.input(|i| i.key_pressed(egui::Key::ArrowLeft) && i.modifiers.shift) && project.selected_item.category > 0 {
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category - 1].content.push(temp);
|
||||
project.categories[category].content.remove(row);
|
||||
project.selected_item.category -= 1;
|
||||
project.selected_item.row = project.categories[category - 1].content.len() - 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowRight) && i.modifiers.shift) && project.selected_item.category < project.categories.len() - 2 {
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category + 1].content.push(temp);
|
||||
project.categories[category].content.remove(row);
|
||||
project.selected_item.category += 1;
|
||||
project.selected_item.row = project.categories[category + 1].content.len() - 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowUp) && i.modifiers.shift)
|
||||
&& project.selected_item.row > 0
|
||||
{
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category].content[row] =
|
||||
project.categories[category].content[row - 1].clone();
|
||||
project.categories[category].content[row - 1] = temp.clone();
|
||||
project.selected_item.row -= 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowDown) && i.modifiers.shift) {
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category].content[row] =
|
||||
project.categories[category].content[row + 1].clone();
|
||||
project.categories[category].content[row + 1] = temp.clone();
|
||||
project.selected_item.row += 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowLeft)) && project.selected_item.category > 0 {
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
project.selected_item.category -= 1;
|
||||
|
@ -191,32 +232,6 @@ pub fn draw_project(ui: &mut egui::Ui, theme: ColorTheme, project: &mut Project)
|
|||
if !project.was_moving {
|
||||
project.selected_item.row += 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowLeft) && i.modifiers.shift) {
|
||||
moved = true;
|
||||
if !project.was_moving {}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowRight) && i.modifiers.shift) {
|
||||
moved = true;
|
||||
if !project.was_moving {}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowUp) && i.modifiers.shift)
|
||||
&& project.selected_item.row > 0
|
||||
{
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category].content[row] =
|
||||
project.categories[category].content[row - 1].clone();
|
||||
project.categories[category].content[row - 1] = temp.clone();
|
||||
project.selected_item.row -= 1;
|
||||
}
|
||||
} else if ui.input(|i| i.key_pressed(egui::Key::ArrowDown) && i.modifiers.shift) {
|
||||
moved = true;
|
||||
if !project.was_moving {
|
||||
let temp = project.categories[category].content[row].clone();
|
||||
project.categories[category].content[row] =
|
||||
project.categories[category].content[row + 1].clone();
|
||||
project.categories[category].content[row + 1] = temp.clone();
|
||||
project.selected_item.row += 1;
|
||||
}
|
||||
}
|
||||
|
||||
project.was_moving = moved;
|
||||
|
|
|
@ -13,7 +13,7 @@ impl ProjectItemWindow {
|
|||
|
||||
pub fn show(&mut self, ctx: &egui::Context, item: &mut panels::Item) {
|
||||
let mut visible = self.visible;
|
||||
egui::Window::new("Project Item")
|
||||
egui::Window::new("Item")
|
||||
.open(&mut visible)
|
||||
.vscroll(true)
|
||||
.hscroll(true)
|
||||
|
@ -23,6 +23,9 @@ impl ProjectItemWindow {
|
|||
|
||||
fn ui(&mut self, ui: &mut egui::Ui, item: &mut panels::Item) {
|
||||
ui.set_min_width(250.0);
|
||||
ui.label(item.name.clone());
|
||||
ui.set_min_height(250.0);
|
||||
ui.add(egui::TextEdit::singleline(&mut item.name).desired_width(f32::INFINITY));
|
||||
ui.separator();
|
||||
ui.add_sized(ui.available_size(), egui::TextEdit::multiline(&mut item.description));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,5 +32,11 @@ impl ShortcutsWindow {
|
|||
ui.label("Tab on selection : add indent of selection");
|
||||
ui.label("Shift+Tab on selection : remove indent of selection");
|
||||
ui.label("Ctrl+E : comment selection");
|
||||
ui.separator();
|
||||
ui.label("Alt+Arrows : move between tabs");
|
||||
ui.separator();
|
||||
ui.label("Enter (project_mode) : edit item");
|
||||
ui.label("Arrows (project_mode) : change selected item");
|
||||
ui.label("Shift+Arrows (project_mode) : move selected item");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue