diff options
| -rw-r--r-- | MainWindow.cpp | 61 | ||||
| -rw-r--r-- | MainWindow.h | 3 | 
2 files changed, 64 insertions, 0 deletions
diff --git a/MainWindow.cpp b/MainWindow.cpp index 1c0cc27..36963be 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -27,6 +27,8 @@ FXDEFMAP(MainWindow) MainWindow_Map[]=  	FXMAPFUNC(SEL_COMMAND, MainWindow::UI_New, MainWindow::on_New_Click),  	FXMAPFUNC(SEL_RIGHTBUTTONPRESS, MainWindow::UI_Tile, MainWindow::on_Tile_Right_Click),  	FXMAPFUNC(SEL_TIMEOUT, MainWindow::UI_Timer_Tick, MainWindow::on_Timer_Tick), +	FXMAPFUNC(SEL_KEYPRESS, 0, MainWindow::on_Key_Press), +	FXMAPFUNC(SEL_KEYRELEASE, 0, MainWindow::on_Key_Release),  };  FXIMPLEMENT(MainWindow, FXMainWindow, MainWindow_Map, ARRAYNUMBER(MainWindow_Map)) @@ -353,3 +355,62 @@ MainWindow::on_New_Click(FXObject *sender, FXSelector sel, void *data)  	}  	return 1;  } + +long +MainWindow::on_Key_Press(FXObject *sender, FXSelector sel, void *data) +{ +	FXEvent* event=(FXEvent*)data; +	switch(event->code) +	{ +		/* show mine positons while left control held */ +		case KEY_Control_L: +			FXButton *button; +			Tile *tile; +			int x, y; +			for(auto b = tile_buttons.begin(); b != tile_buttons.end(); ++b) +			{ +				button = (*b).get(); +				x = matrix->colOfChild(button); +				y = matrix->rowOfChild(button); +				tile = board->get_tile_at(x, y); +				if (tile->is_mine()) +				{ +					button->setBackColor(FXRGB(0, 255, 0)); // make mines green +				} +			} +			break; +		default: +			break; +	} +	return 1; +} + +long +MainWindow::on_Key_Release(FXObject *sender, FXSelector sel, void *data) +{ +	FXEvent* event=(FXEvent*)data; +	switch(event->code) +	{ +		case KEY_Control_L: +			FXButton *button; +			Tile *tile; +			int x, y; +			for(auto b = tile_buttons.begin(); b != tile_buttons.end(); ++b) +			{ +				button = (*b).get(); +				x = matrix->colOfChild(button); +				y = matrix->rowOfChild(button); +				tile = board->get_tile_at(x, y); +				if (tile->is_mine()) +				{ +					button->setBackColor(canvasFrame->getBackColor()); // make mines normal +				} +			} +			break; + +		default: +			break; +	} + +	return 1; +} diff --git a/MainWindow.h b/MainWindow.h index 50d7493..ed252c7 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -21,6 +21,7 @@  #include <FXMessageBox.h>  #include <algorithm>  #include <string> +#include <fxkeys.h>  #include "Board.h"  #include "icons.h" @@ -46,6 +47,8 @@ class MainWindow : public FXMainWindow  		long on_New_Click(FXObject *sender, FXSelector sel, void *data);  		long on_Tile_Right_Click(FXObject *sender, FXSelector sel, void *data);  		long on_Timer_Tick(FXObject *sender, FXSelector sel, void *data); +		long on_Key_Press(FXObject *sender, FXSelector sel, void *data); +		long on_Key_Release(FXObject *sender, FXSelector sel, void *data);  		FXApp *get_app(){ return app; };  | 
