|
|
Indonesian version: see README-id.md.
AlpenliCloud is a File Manager application with a Graphical User Interface (GUI) inspired by Windows Explorer. It implements Abstract Data Types (ADT) such as non-binary tree, stack, and queue to represent file system structure and behavior, with a modern interface built using raylib and raygui.
AlpenliCloud is now cross-platform: Windows, macOS, and Linux (with platform-specific raylib and dialog dependencies).
This project was built for the Data Structures & Algorithms final project, focusing on applying data structures to file management. AlpenliCloud supports create, update, delete, recover, copy, move, and display operations through a friendly GUI. Undo and redo are supported via stack.
- Modern GUI: Explorer-like layout with title bar, toolbar, navbar, sidebar, and body area
- File Manager Operations:
- Create file/folder with modal dialog
- Rename file/folder (F2 shortcut)
- Delete file/folder to trash
- Copy (Ctrl+C), Cut (Ctrl+X), Paste (Ctrl+V)
- Open files with the default app
- Navigation System:
- Sidebar tree structure with expand/collapse
- Navbar with path navigation and search
- Back navigation (Backspace/Alt+Left)
- Advanced Features:
- Progress bar for bulk operations (>10 items)
- Undo/Redo system with visual feedback
- Multi-selection with Ctrl+Click and Select All (Ctrl+A)
- Full keyboard shortcuts
- Trash Management:
- Soft delete to trash directory
- Recover files from trash
- Duplicate name handling
- Window Management:
- Resizable window with drag borders
- Maximize/minimize buttons
- Custom title bar
- TitleBar: Window controls (minimize, maximize, close) and window dragging
- Navbar: Path navigation, search box, and navigation buttons (back, undo, redo)
- Toolbar: File operations (New, Copy, Cut, Paste, Delete, Rename)
- Sidebar: Tree view for folder hierarchy navigation
- Body: Main content area with file/folder listing in table format
- Non-Binary Tree: Represents directory and file system hierarchy
- Stack: Powers undo and redo operations
- Queue: Manages copied/cut items and paste operations
- LinkedList: Manages selected items and trash items
- raylib: Graphics library for rendering and input handling
- raygui: Immediate mode GUI library for UI components
- C Language: Core programming language
- Platform APIs: System-specific utilities for file operations and dialogs
- Ensure your system can compile C with raylib
- Clone this repository:
git clone https://github.com/riefproject/AlpenliCloud.git
- Build and run:
- Using build script:
./build.sh # Available parameters: clean, build, rebuild # Example: ./build.sh rebuild
- Using debug script (with debug symbols):
./debug.sh
- Using Makefile:
make # optional parameter <clean | rebuild>
- Using build script:
- Build uses
lib/raylib/lib/libraylib.soif available. - If not, build will try
pkg-config --cflags --libs rayliband show a message to install raylib (libraylib-dev). - File/folder dialogs use
zenityorkdialog. Install one if missing.
- Double-click folder: Enter directory
- Double-click file: Open with default app
- Sidebar navigation: Click folder in sidebar for quick navigation
- Path bar: Type path manually to jump
- New File/Folder: Click "New" in toolbar or Ctrl+N
- Copy: Select item → Ctrl+C or Copy button
- Cut: Select item → Ctrl+X or Cut button
- Paste: Ctrl+V or Paste button
- Delete: Select item → Delete key or Delete button
- Rename: Select item → F2 or Rename button
- Single select: Click file/folder
- Multi-select: Ctrl+Click to toggle selection
- Select all: Ctrl+A or header checkbox
- Deselect all: Click empty area or Ctrl+A again
- Ctrl+C: Copy selected items
- Ctrl+X: Cut selected items
- Ctrl+V: Paste items
- Ctrl+Z: Undo last operation
- Ctrl+Y: Redo operation
- F2: Rename selected item
- F5/Ctrl+R: Refresh view
- Delete: Move to trash
- Backspace/Alt+Left: Go back
- Ctrl+A: Select/deselect all
AlpenliCloud/
├── src/
│ ├── main.c # Application entry point
│ ├── file_manager.c # Core file management logic
│ ├── utils.c # Utility functions and shortcuts
│ ├── win_utils.c # Platform-specific utilities
│ ├── gui/
│ │ ├── ctx.c # GUI context management
│ │ ├── titlebar.c # Window title bar component
│ │ ├── navbar.c # Navigation bar component
│ │ ├── toolbar.c # Toolbar component
│ │ ├── sidebar.c # Sidebar tree component
│ │ ├── body.c # Main content area
│ │ └── component.c # Reusable UI components
│ └── data_structure/ # ADT implementations
├── include/ # Header files
├── lib/raylib/ # raylib library
├── assets/ # Icons and resources
├── build/ # Build output
└── bin/ # Executable output
Contributions are welcome. Please fork the repo and submit a pull request for improvements or new features.
This project uses the MIT license.
For questions or discussion, please use GitHub Issues.