From 6be8ba1685b2e3ceb027b90c0c29e53fcd27f3d1 Mon Sep 17 00:00:00 2001 From: daleclack Date: Tue, 30 Aug 2022 14:42:34 +0800 Subject: [PATCH] Add gtk140 --- Gtkmm3/gtk140_minesweeper/src/MineSweeper.cc | 34 ++++++++++++++++++++ Gtkmm3/gtk140_minesweeper/src/MineSweeper.hh | 28 ++++++++++++++++ Gtkmm3/gtk140_minesweeper/src/main.cc | 7 +++- clean_cache.cmd | 2 ++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 clean_cache.cmd diff --git a/Gtkmm3/gtk140_minesweeper/src/MineSweeper.cc b/Gtkmm3/gtk140_minesweeper/src/MineSweeper.cc index e69de29..d5fe0c1 100644 --- a/Gtkmm3/gtk140_minesweeper/src/MineSweeper.cc +++ b/Gtkmm3/gtk140_minesweeper/src/MineSweeper.cc @@ -0,0 +1,34 @@ +#include "MineSweeper.hh" + +MineSweeper::MineSweeper() +{ + // Initalize Window + set_title("Gtkmm MineSweeper"); + set_icon_name("org.gtk.daleclack"); + + // Append buttons to grid + for (int i = 0; i < 7; i++) + { + for (int j = 0; j < 7; j++) + { + cell[i * 7 + j].set_label("?"); + cell[i * 7 + j].signal_clicked().connect(sigc::bind( + sigc::mem_fun(*this, &MineSweeper::cell_clicked), &cell[i * 7 + j])); + mine_grid.attach(cell[i * 7 + j], j, i); + } + } + + // Show everything + add(mine_grid); + show_all_children(); +} + +void MineSweeper::reset_game() +{ + // Append item +} + +void MineSweeper::cell_clicked(MineCell *cell) +{ + +} diff --git a/Gtkmm3/gtk140_minesweeper/src/MineSweeper.hh b/Gtkmm3/gtk140_minesweeper/src/MineSweeper.hh index 85e0b63..3a18bfe 100644 --- a/Gtkmm3/gtk140_minesweeper/src/MineSweeper.hh +++ b/Gtkmm3/gtk140_minesweeper/src/MineSweeper.hh @@ -2,3 +2,31 @@ #include +class MineCell : public Gtk::Button +{ +public: + bool is_mine = false; + int mines_around; + MineCell(){ + // Set button style + set_relief(Gtk::RELIEF_NONE); + } +}; + +class MineSweeper : public Gtk::ApplicationWindow +{ +public: + MineSweeper(); + +private: + // Child widgets + Gtk::Grid mine_grid; + MineCell cell[49]; + + // Timer + sigc::connection mytimer; + + // Signal Handlers + void reset_game(); + void cell_clicked(MineCell *cell); +}; diff --git a/Gtkmm3/gtk140_minesweeper/src/main.cc b/Gtkmm3/gtk140_minesweeper/src/main.cc index b378c76..13a35c2 100644 --- a/Gtkmm3/gtk140_minesweeper/src/main.cc +++ b/Gtkmm3/gtk140_minesweeper/src/main.cc @@ -1,3 +1,8 @@ #include "MineSweeper.hh" -int main(int argc, char **argv){} \ No newline at end of file +int main(int argc, char **argv){ + // Create a application and run + auto app = Gtk::Application::create(argc,argv,"org.gtk.daleclack"); + MineSweeper window; + return app->run(window); +} \ No newline at end of file diff --git a/clean_cache.cmd b/clean_cache.cmd new file mode 100644 index 0000000..6cab299 --- /dev/null +++ b/clean_cache.cmd @@ -0,0 +1,2 @@ +rm .\AppData\Local\Microsoft\vscode-cpptools\ipch\* +rm .\AppData\Roaming\Code\User\workspaceStorage\* \ No newline at end of file