diff --git a/Cargo.toml b/Cargo.toml index 8e07488..e9a2d1f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "calcifer" -version = "1.3.0" -edition = "2021" +version = "1.3.1" +edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/README.md b/README.md index 78c9f2a..21f865c 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,21 @@ # Calcifer -My custom code editor (only the features I want inside) using egui and my own fork of egui_code_editor https://lib.rs/crates/egui_code_editor - -# 0.1.0 : - -Added a File Tree -Added Tabs -Added an Embedded Terminal -Added Syntax Highlighting -Added Themes - -# 0.2.0 : - -Fixed Terminal sterr output -Fixed scroll between tabs -Library subjugation (got the raw files of the egui_code_editor for some internal modifications) - -# 0.3.0 : - -Added find and replace function -Added multi line tab and shift+tab -Added Ctrl+E : comment multiline -Fixed Ctr+Z (was already in library, tried to make my own, and then found the better one) -Added indent recognition (when there is a line break, the indentation level is kept) +My custom code editor (only the features I want inside) using egui and a fork of egui_code_editor https://lib.rs/crates/egui_code_editor + +# GUI +using egui to have immediate mod rendering (so the app is using very few processing power when not interacted with) -# 0.4.0 : +# Screeshots +![screenshot](./assets/screenshot.png) -Added testing -Added Ctrl+T : refresh current tab -Added Time debug -Added Tree toggle for performance -Added Alt+Arrows to move through tabs -Added Zoom -Added cd -Added terminal color -Max tabs 8 => 20 -Max framerate => 30 fps (less cpu usage) +# Features +- find and replace +- undo/redo +- syntax highlighting (asm, js, lua, py, rust, shell, sql) +- simple themes +- tabs +- file tree +- terminal +- a very crude project mode (kanban) -# 1.0.0 : - -Added confirm prompt if unsaved -Async terminal ! -Real Ui - -# 1.1.0 : -Better error handling - - -#1.2.0 : -Project mode (when opening a .project file) -Support for js diff --git a/assets/screenshot.png b/assets/screenshot.png new file mode 100644 index 0000000..1dc7a9b Binary files /dev/null and b/assets/screenshot.png differ diff --git a/project/calcifer.nix b/project/calcifer.nix deleted file mode 100644 index 4a4dd83..0000000 --- a/project/calcifer.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ pkgs ? import {} }: - -pkgs.stdenv.mkDerivation rec { - pname = "Calcifer"; - version = "1.0"; - src = pkgs.fetchFromGitHub { - owner = "WanderingPenwing"; - repo = "Calcifer"; - rev = "v${version}"; - sha256 = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - }; - - buildInputs = [ pkgs.rustc pkgs.cargo ]; - - nativeBuildInputs = [ pkgs.pkg-config ]; - - cargoSha256 = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - - installPhase = '' - cargo install --path . --root $out - ''; - - meta = with pkgs.stdenv.lib; { - description = "MyApp - A simple desktop application written in Rust"; - homepage = "https://github.com/your-github-username/myapp"; - license = licenses.mit; - maintainers = [ maintainers.your-name ];s - }; -} \ No newline at end of file diff --git a/project/calcifer.project b/project/calcifer.project index f68e91d..b10a98e 100644 --- a/project/calcifer.project +++ b/project/calcifer.project @@ -1 +1 @@ -{"categories":[{"name":"to do","content":[{"name":"clean up","description":"using the feedback from ourstory discord","id":1},{"name":"keep tree in save","description":"keep track of the opened tabs and reopens them\n","id":1},{"name":"open text file with calcifer directly","description":"// Hello there","id":1},{"name":"better tab names","description":"detect closest project file (within limits)\nif there is one, use its name for the tab name : \"project_name - file_name\"\n\nadd \" \" to the tab name to be able to click everywhere","id":1}]},{"name":"in progress","content":[]},{"name":"done","content":[{"name":"mark tab as unsaved (project)","description":"when modifying a project, mark it as unsaved","id":2},{"name":"fix + color in project","description":"the '+' to add an item has a wrong color if last item in list is selected","id":3},{"name":"be able to delete category","description":"in project mode, if no focus and name is empty => delete category\n\nalready did xD I am a geniius\nfor clarification, I had a loong pause in develompent, and had forgotten I had this implemented, and while looking for where to code it, i found at the exact right place, the exact code needed","id":5},{"name":"update category layout","description":"take inspo form tab layout (number of column is max( min col, n_col +1)\nor scroll ?","id":6},{"name":"less enter trigger (project)","description":"if in a textbox, don't open the item window when enter is pressed","id":3},{"name":"be able to delete item","description":"in project mode add a button in item edit window to delete an item","id":4}]},{"name":"bugs","content":[{"name":"fix undo","description":"undo struggles when switching tabs \n\npotential fix : each code textarea name depend on tabname","id":1}]},{"name":"+","content":[]}]} \ No newline at end of file +{"categories":[{"name":"to do","content":[{"name":"inspire from Jiji refresh","description":"use egui::Context::request_repaint_after(ctx, Duration::from_secs_f32(BACKGROUND_REFRESH_DELAY));\n\n","id":1}]},{"name":"+","content":[]}]} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 2193fb3..089e79e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ use egui::{ use homedir::get_my_home; use std::{ops::Range, path::PathBuf, sync::Arc, thread, time}; use std::env; +use std::time::Duration; mod core; mod editor; @@ -30,7 +31,7 @@ const ZOOM_FACTOR: f32 = 1.1; const MAX_FPS: f32 = 30.0; const DISPLAY_PATH_DEPTH: usize = 3; const MAX_PROJECT_COLUMNS: usize = 8; -const RUNNING_COMMAND_REFRESH_DELAY: f32 = 0.1; +const RUNNING_COMMAND_REFRESH_DELAY: f32 = 0.2; fn main() -> Result<(), eframe::Error> { let icon_data = core::load_icon().unwrap_or_default(); @@ -304,9 +305,8 @@ impl eframe::App for Calcifer { self.time_watch[6] = watch.elapsed().as_micros() as f32 / 1000.0; - if self.running_command && !ctx.input(|i| i.wants_repaint()) { - thread::sleep(time::Duration::from_secs_f32(RUNNING_COMMAND_REFRESH_DELAY)); - egui::Context::request_repaint(ctx); + if self.running_command { + egui::Context::request_repaint_after(ctx, Duration::from_secs_f32(RUNNING_COMMAND_REFRESH_DELAY)); } }