#document #tabs #windows #async #graphics

aloe-multidoc

Aloe MultiDoc provides a flexible GUI framework for managing multiple document interfaces with support for floating windows and tabs, alongside asynchronous operations to enhance UI responsiveness. This crate is a translation of the c++ juce module serving the same function.

1 unstable release

Uses new Rust 2024

new 0.1.2 Apr 3, 2025

#38 in #tabs

48 downloads per month
Used in 3 crates (2 directly)

GPL-3.0 license

1MB
10K SLoC

Aloe MultiDoc

Aloe MultiDoc is a Rust-based library designed to provide a graphical user interface (GUI) framework for managing multiple documents within a single application window. The core functionality revolves around the MultiDocumentPanel component, which can be utilized to administer an arbitrary number of documents, organized either in floating windows or as tabs, depending on user preference.

Features

  • Flexible Document Layouts: Users can switch between floating windows and tabbed interfaces, catering to different use cases and visual preferences.
  • Asynchronous Document Operations: Designed with modern applications in mind, offering asynchronous handling for closing documents to prevent UI freezes.
  • Customizable Components: Offers extensibility by allowing new document windows to be easily created and managed.
  • Automatic Resource Management: Manages memory and resources efficiently by internally handling component destruction based on the configuration.

Usage

To use Aloe MultiDoc, integrate the crate into your project and instantiate a MultiDocumentPanel. Add documents to the panel using add_document(), specify their layout mode via set_layout_mode(), and manage their lifecycle with close_document() or close_document_async() methods.

Example

use aloe_multidoc::{MultiDocumentPanel, MultiDocumentPanelLayoutMode};

fn main() {
    let mut panel = MultiDocumentPanel::default();
    panel.set_layout_mode(MultiDocumentPanelLayoutMode::FloatingWindows);
    // Add documents to the panel and manage them...
}

Requirements

This crate requires a Rust compiler supporting the 2024 edition and is licensed under the GPL-3.0. For further information regarding integration or contribution, refer to the repository.


This README.md file was generated by an AI model and may not be 100% accurate; however, it should be pretty good.

This crate is a translation of the JUCE module.

JUCE is a c++ software framework for developing high performance audio applications.

Usage falls under the GPLv3 as well as the JUCE commercial license.

See github.com/juce-framework/JUCE and the JUCE license page for details.

This crate is in the process of being translated from c++ to rust. For progress updates, please see the workspacer rust project. designed specifically for rust projects.

Dependencies

~28–37MB
~609K SLoC