Draft
Conversation
* Create the app crate to be run point for Chipmunk native desktop application. * Set unified version and rust edition in workspace and make all other crates follow it. * Add dependencies for native app. * Add support for parsing CLI arguments * Support for basic logging. * Hello world from native UI
* Specify the paths for internal crates in indexer workspace instead of having to specify their paths in each project. * Apply those changes on all internal crates withing indexer directory
* Rename crate to application * Define UI & Core & Service and State modules. * Define communication types (commands and events) for both general app and sessions. * Define communication channels for general app * Render Menu with one command to close the app.
+ Ignore errors in repaint watcher since we will get and error once the states sender channel is dropped.
* Use two main modules for the app (host and session) and have each modules containing its UI, services, data and core modules as sub-modules. * This change will make it easier in the future to split the two main modules into separated crates.
* Create the UI for rendering the content of the sessions using the communication channels. * Spawn a task for each session to make the communication for each session locally. * UI will just read the file and render it's content as lines. * Channels communication still need some thinking because we are tight to the render loop to receive the events.
Change the mechanism for waking up the UI on events to include egui context in all senders and call it explicitly on each send.
* Wire up close session command adding and ID for each session. * Improve notifications adding additional items and cleaning up the implementation in UI.
* Log send errors in one function and embedded it in all senders
* Create a struct to be passed through UI components to be able to send notifications and check for shared UI state across all UI components. * Use this struct to send command encapsulating the error handling. * New error type for UI.
* Rename to UiComponents to HostUI * Move receivers and notification handling to host UI completely.
* Use the table provided by the crate egui_table to show the logs. * Current implementation still primitive without using functionality in chipmunk core.
We need the UI for each session to have it's own unique ID to avoid its owned controls from having ID clashes. We had this problem with tables from different sessions sharing their scroll state.
* Bind session from rust core libraries in the native UI. * Currently we can establish a session and deliver the number of lines that has been read. * UI needs to request for lines so it can display them in the table.
Building system to display logs in table (WIP): We load all logs without cleaning up the logs aren't needed.
* Better way to check for data need to be fetched. * Encapsulate logic for getting log entries inside MainTable struct
* This approach avoids having to load existing logs but is complex and is based on assumptions that the logs are sequenced and sorted.
* Implement showing a window of logs simply using a map with indexes avoiding the complexity of keeping track on the existing logs. * Request discard rendering frame when new logs needed to be fetched to avoid rendering the rows where we don't have data.
Tables use the ID of their direct parent, therefor we need to assign an ID for that part and it's not enough to assign an ID for the session root UI as it solved in previous commit
* Create the bottom panel with the tab control + Add tabs types * Create components for each tab and render the initial content for each one of them.
* Input controls follow the functionality and look if the current one. * It provides extra functionality for handling Ctrl+Backspace.
* Wire filter callback to keeping filter info in session data state. * Implement search status in search bar * Introduce entity to keep track for long running process. * Cancel search operation safely. * Cancel running operations on session closing. * TODOs and notes
* Implement table for search results adding the needed structs and commands to UI, data state and the services.
* Keep offset for search results because we need for mouse scrolling. * Fix layouts making sure panels don't shrink to fit their content. * Add ID for search table to avoid ID clashing between scroll states.
* Move file dialog functions & fields into its own struct. * Refactor file dialog avoiding handling results with injected futures methods. Instead the results will saved in buffered results fields so each component can ask for the results with the provided ID * Use file dialog in DLT session setup for FIBEX files.
* Implement base for session setup for stream sources with implementation for process commands. * Changes on whole session setup to fit streams alongside with files * Process command sessions are fully supported. * Add egui-phosphor for UI icons. * Refactors & Renames
* Integrate phosphor in app with support for regular and fill variants. * Replace all emojis based icons with phosphor icons
Use allow unused with writing a global todo about them instead of keeping them for the compiler to complain about them on each check.
* Add TCP session setup enabling running DLT from TCP streams. * Display validation errors on side bar.
* Update egui-table to version 0.6 to enable handling table rows as one block. * Improve row styles on tables handling their background by each raw instead of each cell. * Improve row selection by clicking outside of texts as well.
Avoid use set_min_size when possible
* Implement session setup for UDP. * Use generic function to render binding address for both TCP and UDP. * Avoid using set_min function and replace some of them with take_available functions
* Implement the side panel inside the session with the vertical tab control. * Tab control is manually implemented because there is no tab control in egui by default.
UI state keeps track on running observe operations with their states.
Also move modal handling function to a central positions to be used among all UI components.
* Command to open single or multiple files * Command to run shell command.
Extend process validation including validation for the current running directory
* Closing session can be done on the UI and a signal is sent to the backend to cleanup but the UI won't wait for it to send a message back. This is important to the app to stay responsive if the backend was busy with some blocking operations. * Create new action for the internal communication between UI components and the host UI without involving any service. * Busy indicator support cancel button. * Suppress warning about unused fields while in development.
* Move operation tracking for search to UI state to handle all operations in one side. * Improve UI handling for search state since more infos are available. * Best possible fixes to searches going out of sync in UI without changing search logic in rust core.
* Multiple Files view with support for concatenate and open each file in new tab. * Add concatenate to session setups types and start sessions with concat origin. * Implementation of scanned directories in backend service. * Add menu items for scanning directory to find matching files. * Opening multiple files form both menu and cli will end end up in multiple files setup view. * Refactoring for host service regarding file operations.
* Notify service on exit event to ensure they will run if on closing the app from any place (Menu, X in window bar, or shortcuts) * Wait for service to finish their cleaning up (with timeout).
9965afd to
a598b93
Compare
f4c771b to
3e2f71d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.