yo
This commit is contained in:
0
src/gui/elements.rs
Normal file
0
src/gui/elements.rs
Normal file
69
src/gui/mod.rs
Normal file
69
src/gui/mod.rs
Normal file
@@ -0,0 +1,69 @@
|
||||
use fltk::{
|
||||
app, prelude::*, window::Window, frame::Frame, group::{Pack, Flex},
|
||||
menu::MenuBar, button::Button, tree::Tree, enums::{FrameType, Align}
|
||||
};
|
||||
|
||||
pub struct P2PClientGUI {
|
||||
app: app::App,
|
||||
win: Window,
|
||||
}
|
||||
|
||||
impl P2PClientGUI {
|
||||
pub fn new() -> Self {
|
||||
let app = app::App::default();
|
||||
let mut win = Window::default()
|
||||
.with_size(900, 600)
|
||||
.with_label("P2P Merkle Client");
|
||||
|
||||
// 1. Main Layout: Flex (Vertical)
|
||||
let mut main_flex = Flex::default_fill().column();
|
||||
|
||||
// 2. Menu Bar (Top)
|
||||
let mut menu_bar = MenuBar::default().with_size(win.width(), 30);
|
||||
menu_bar.add_emit("File/Connect", fltk::enums::Shortcut::None, fltk::menu::MenuFlag::Invisible, app::channel().0, ());
|
||||
menu_bar.add_emit("File/Exit", fltk::enums::Shortcut::None, fltk::menu::MenuFlag::Invisible, app::channel().0, ());
|
||||
menu_bar.end();
|
||||
|
||||
// 3. Content Area: Flex (Horizontal)
|
||||
let mut content_flex = Flex::default().row();
|
||||
|
||||
// --- Central Area (Filesystem Tree)
|
||||
let mut fs_tree = Tree::default().with_label("Filesystem View");
|
||||
fs_tree.set_frame(FrameType::FlatBox);
|
||||
// Placeholder data for the tree
|
||||
fs_tree.add("root/Folder A/File 1");
|
||||
fs_tree.add("root/Folder B/File 2");
|
||||
|
||||
content_flex.fixed(&fs_tree, win.width() - 200); // 700px width
|
||||
|
||||
// --- Right-Sided Panel (Known Peers List)
|
||||
let mut right_panel = Pack::default();
|
||||
right_panel.set_frame(FrameType::EngravedBox);
|
||||
right_panel.set_spacing(5);
|
||||
|
||||
Frame::default().with_label("Known Peers").set_align(Align::Top);
|
||||
// List of Labels (placeholder)
|
||||
Frame::default().with_label("Peer A (Online)").set_frame(FrameType::ThinUpBox);
|
||||
Frame::default().with_label("Peer B (Offline)").set_frame(FrameType::ThinUpBox);
|
||||
|
||||
right_panel.end();
|
||||
content_flex.fixed(&right_panel, 200); // 200px width
|
||||
|
||||
content_flex.end();
|
||||
|
||||
main_flex.end(); // End of main layout
|
||||
|
||||
win.end();
|
||||
win.show();
|
||||
|
||||
Self { app, win }
|
||||
}
|
||||
|
||||
pub fn run(&mut self) {
|
||||
// Here you would connect signals from the GUI to the network thread.
|
||||
// For now, it just runs the application loop.
|
||||
while self.app.wait() {
|
||||
// Handle GUI events
|
||||
}
|
||||
}
|
||||
}
|
||||
2
src/network/mod.rs
Normal file
2
src/network/mod.rs
Normal file
@@ -0,0 +1,2 @@
|
||||
mod protocol;
|
||||
mod peers;
|
||||
0
src/network/peers.rs
Normal file
0
src/network/peers.rs
Normal file
0
src/network/protocol.rs
Normal file
0
src/network/protocol.rs
Normal file
Reference in New Issue
Block a user