aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/gui.rs b/src/gui.rs
index 5c4c06a..e84d6ce 100644
--- a/src/gui.rs
+++ b/src/gui.rs
@@ -15,7 +15,7 @@
along with Foobar. If not, see <https://www.gnu.org/licenses/>.
*/
-use fltk::{app::*, button::*, draw::*, frame::*, menu::*, text::*, window::*};
+use fltk::{app::*, button::*, draw::*, menu::*, text::*, window::*};
use crate::game::*;
@@ -26,7 +26,7 @@ struct BoardRendererBackend {
}
impl BoardRendererBackend {
- fn initialise(frame: &Frame, frame_pad: i32, game_size: i32) -> BoardRendererBackend {
+ fn initialise(frame: &Button, frame_pad: i32, game_size: i32) -> BoardRendererBackend {
let x0 = frame.x();
let y0 = frame.y();
let xorg = x0 + frame_pad;
@@ -215,13 +215,13 @@ impl BoardRenderer {
}
struct GUIBoard {
- frame: Frame,
+ frame: Button,
renderer: BoardRenderer,
size: i32,
}
impl GUIBoard {
- fn new(frame: Frame, size: i32) -> GUIBoard {
+ fn new(frame: Button, size: i32) -> GUIBoard {
let renderer = BoardRenderer::default().with_size(size);
let mut g = GUIBoard {
frame,
@@ -232,7 +232,7 @@ impl GUIBoard {
return g;
}
- fn render(&self) -> impl Fn(&mut Frame) {
+ fn render(&self) -> impl Fn(&mut Button) {
let renderer = self.renderer;
let game_size = self.size;
@@ -279,7 +279,7 @@ impl GUIBoard {
},
];
- move |frame: &mut Frame| {
+ move |frame: &mut Button| {
let backend = BoardRendererBackend::initialise(frame, 5, game_size);
renderer.render_board(&backend);
@@ -295,6 +295,7 @@ impl GUIBoard {
enum GUIMessage {
None,
Test,
+ BoardClick,
}
pub struct GUI {
@@ -347,12 +348,13 @@ impl GUI {
.with_size(LOG_WIDTH, 600 - menu.height())
.with_pos(800 - LOG_WIDTH, menu.height());
log.set_buffer(Some(TextBuffer::default()));
- log.insert("test");
+ log.insert("test\n");
- let mut board_frame = Frame::default()
+ let mut board_frame = Button::default()
.with_size(800 - LOG_WIDTH, 600 - menu.height())
.below_of(&menu, 0);
board_frame.set_frame(FrameType::EmbossedBox);
+ board_frame.emit(sender, GUIMessage::BoardClick);
window.resizable(&mut board_frame);
window.end();
@@ -376,6 +378,11 @@ impl GUI {
while self.app.wait() {
if let Some(msg) = self.receiver.recv() {
match msg {
+ GUIMessage::BoardClick => {
+ let x = event_x();
+ let y = event_y();
+ self.log.insert(&format!("Board click ({},{})\n", x, y));
+ }
_ => (),
}
}