Add gtk142
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
"files.associations": {
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"bitset": "cpp",
|
||||
"chrono": "cpp",
|
||||
"codecvt": "cpp",
|
||||
"compare": "cpp",
|
||||
"concepts": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"map": "cpp",
|
||||
"set": "cpp",
|
||||
"string": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"unordered_set": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"ratio": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"new": "cpp",
|
||||
"numbers": "cpp",
|
||||
"ostream": "cpp",
|
||||
"semaphore": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"stop_token": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"thread": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"valarray": "cpp",
|
||||
"variant": "cpp",
|
||||
"__bit_reference": "cpp",
|
||||
"__bits": "cpp",
|
||||
"__config": "cpp",
|
||||
"__debug": "cpp",
|
||||
"__errc": "cpp",
|
||||
"__hash_table": "cpp",
|
||||
"__locale": "cpp",
|
||||
"__mutex_base": "cpp",
|
||||
"__node_handle": "cpp",
|
||||
"__split_buffer": "cpp",
|
||||
"__threading_support": "cpp",
|
||||
"__tree": "cpp",
|
||||
"__tuple": "cpp",
|
||||
"__verbose_abort": "cpp",
|
||||
"ios": "cpp",
|
||||
"locale": "cpp",
|
||||
"queue": "cpp",
|
||||
"stack": "cpp"
|
||||
},
|
||||
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
set(CMAKE_CXX_STANDARD 17)
|
||||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(gtk142_minesweeper3 VERSION 1.0.0)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../../GCR_CMake/macros)
|
||||
include(GlibCompileResourcesSupport)
|
||||
|
||||
include(CTest)
|
||||
enable_testing()
|
||||
|
||||
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
|
||||
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
||||
|
||||
include(CPack)
|
||||
include_directories(.)
|
||||
include_directories(..)
|
||||
|
||||
#Find PkgConfig to use gtkmm3
|
||||
find_package (PkgConfig REQUIRED)
|
||||
pkg_check_modules (GTKMM4 REQUIRED gtkmm-4.0)
|
||||
include_directories (${GTKMM4_INCLUDE_DIRS})
|
||||
link_directories (${GTKMM4_LIBRARY_DIRS})
|
||||
|
||||
#Find Gettext
|
||||
# find_package (Gettext REQUIRED)
|
||||
# set(PO_DIR ${CMAKE_BINARY_DIR}/po/zh_CN/LC_MESSAGES)
|
||||
|
||||
#Source files
|
||||
set(SOURCE_FILE src/main.cc src/MineSweeper.cc src/InputBox.cc src/ScoresWin.cc)
|
||||
|
||||
#Compile Resource
|
||||
|
||||
set(RESOURCE_LIST
|
||||
icons/scalable/status/1mines.svg
|
||||
icons/scalable/status/2mines.svg
|
||||
icons/scalable/status/3mines.svg
|
||||
icons/scalable/status/4mines.svg
|
||||
icons/scalable/status/5mines.svg
|
||||
icons/scalable/status/6mines.svg
|
||||
icons/scalable/status/7mines.svg
|
||||
icons/scalable/status/8mines.svg
|
||||
icons/scalable/status/exploded.svg
|
||||
icons/scalable/status/flag.svg
|
||||
icons/scalable/status/incorrect.svg
|
||||
icons/scalable/status/maybe.svg
|
||||
icons/scalable/status/mine.svg
|
||||
STRIPBLANKS minesweeper.ui
|
||||
STRIPBLANKS win_input.ui
|
||||
STRIPBLANKS scoreswin.ui
|
||||
STRIPBLANKS mine_menu.xml)
|
||||
|
||||
compile_gresources(RESOURCE_FILE
|
||||
XML_OUT
|
||||
TYPE EMBED_C
|
||||
RESOURCES ${RESOURCE_LIST}
|
||||
PREFIX "/org/gtk/daleclack"
|
||||
SOURCE_DIR ${PROJECT_SOURCE_DIR}/res)
|
||||
|
||||
# Add a custom target to the makefile. Now make builds our resource file.
|
||||
# It depends on the output RESOURCE_FILE.
|
||||
|
||||
add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
|
||||
|
||||
#For win32 platform,use rc resource and .ico icon
|
||||
if(WIN32)
|
||||
SET(CMAKE_RC_COMPILER windres)
|
||||
set(app_WINRC ../icon.rc)
|
||||
set_property(SOURCE ../icon.rc APPEND PROPERTY
|
||||
OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/../icon.ico
|
||||
)
|
||||
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||
add_custom_command( TARGET ${PROJECT_NAME}
|
||||
COMMAND echo * > ${CMAKE_BINARY_DIR}/.gitignore
|
||||
COMMAND echo **/* > ${CMAKE_BINARY_DIR}/.hgignore)
|
||||
else()
|
||||
add_executable(${PROJECT_NAME} ${SOURCE_FILE} ${RESOURCE_FILE})
|
||||
add_custom_command( TARGET ${PROJECT_NAME}
|
||||
COMMAND echo \"*\" > ${CMAKE_BINARY_DIR}/.gitignore
|
||||
COMMAND echo \"**/*\" > ${CMAKE_BINARY_DIR}/.hgignore)
|
||||
endif(WIN32)
|
||||
|
||||
#Add command to generate .gitignore and .mo files
|
||||
# add_custom_command( TARGET ${PROJECT_NAME}
|
||||
# COMMAND mkdir -p ${PO_DIR}
|
||||
# COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ${CMAKE_SOURCE_DIR}/po/zh_CN.po -o ${PO_DIR}/${PROJECT_NAME}.mo)
|
||||
|
||||
SET (CMAKE_EXTRA_CXX_FLAGS ${GTKMM4_CFLAGS_OTHER})
|
||||
target_link_libraries (${PROJECT_NAME} ${GTKMM4_LIBRARIES} -lpthread)
|
|
@ -0,0 +1 @@
|
|||
*.ui
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd">
|
||||
<cambalache-project version="0.11.2" target_tk="gtk+-3.0">
|
||||
<ui>
|
||||
(1,None,"minesweeper.ui","minesweeper.ui",None,None,None,None,None,None,None),
|
||||
(2,None,None,"win_input.ui",None,None,None,None,None,None,None),
|
||||
(3,None,None,"scoreswin.ui",None,None,None,None,None,None,None)
|
||||
</ui>
|
||||
<object>
|
||||
(1,1,"GtkWindow","minesweeper",None,None,None,None,None,None),
|
||||
(1,2,"GtkStackSwitcher",None,1,None,"titlebar",None,-1,None),
|
||||
(1,3,"GtkStack","main_stack",1,None,None,None,1,None),
|
||||
(1,4,"GtkGrid","start_page",3,None,None,None,None,None),
|
||||
(1,5,"GtkBox","main_page",3,None,None,None,1,None),
|
||||
(1,6,"GtkGrid","custom_page",3,None,None,None,2,None),
|
||||
(2,1,"GtkDialog",None,None,None,None,None,None,None),
|
||||
(3,1,"GtkWindow","scores_win",None,None,None,None,None,None),
|
||||
(3,2,"GtkBox",None,1,None,None,None,-1,None),
|
||||
(3,3,"GtkBox","btn_box",2,None,None,None,2,None),
|
||||
(3,4,"GtkTreeView","scores_view",2,None,None,None,1,None),
|
||||
(3,5,"GtkButton","btnclose",3,None,None,None,2,None),
|
||||
(3,6,"GtkLabel",None,3,None,None,None,1,None)
|
||||
</object>
|
||||
<object_property>
|
||||
(1,1,"GtkContainer","resize-mode","queue",None,None,None,None,None),
|
||||
(1,1,"GtkWindow","default-height","400",None,None,None,None,None),
|
||||
(1,1,"GtkWindow","default-width","700",None,None,None,None,None),
|
||||
(1,3,"GtkStack","transition-type","slide-right",None,None,None,None,None),
|
||||
(1,3,"GtkWidget","halign","baseline",None,None,None,None,None),
|
||||
(1,4,"GtkGrid","column-homogeneous","True",None,None,None,None,None),
|
||||
(1,4,"GtkGrid","column-spacing","2",None,None,None,None,None),
|
||||
(1,4,"GtkGrid","row-homogeneous","True",None,None,None,None,None),
|
||||
(1,4,"GtkWidget","halign","center",None,None,None,None,None),
|
||||
(1,4,"GtkWidget","valign","center",None,None,None,None,None),
|
||||
(1,5,"GtkOrientable","orientation","vertical",None,None,None,None,None),
|
||||
(2,1,"GtkWidget","expand","True",None,None,None,None,None),
|
||||
(2,1,"GtkWidget","height-request","200",None,None,None,None,None),
|
||||
(2,1,"GtkWidget","margin-start","3",None,None,None,None,None),
|
||||
(2,1,"GtkWidget","width-request","400",None,None,None,None,None),
|
||||
(2,1,"GtkWindow","gravity","center",None,None,None,None,None),
|
||||
(3,2,"GtkOrientable","orientation","vertical",None,None,None,None,None),
|
||||
(3,3,"GtkWidget","height-request","3",None,None,None,None,None),
|
||||
(3,4,"GtkWidget","height-request","300",None,None,None,None,None),
|
||||
(3,4,"GtkWidget","valign","start",None,None,None,None,None),
|
||||
(3,4,"GtkWidget","width-request","400",None,None,None,None,None),
|
||||
(3,5,"GtkButton","label","Close",None,None,None,None,None),
|
||||
(3,6,"GtkLabel","label"," ",None,None,None,None,None),
|
||||
(3,6,"GtkWidget","hexpand","True",None,None,None,None,None)
|
||||
</object_property>
|
||||
<object_layout_property>
|
||||
(3,2,3,"GtkBoxLayoutChild","fill","False",None,None,None,None),
|
||||
(3,2,3,"GtkBoxLayoutChild","position","2",None,None,None,None),
|
||||
(3,2,4,"GtkBoxLayoutChild","position","1",None,None,None,None),
|
||||
(3,3,5,"GtkBoxLayoutChild","position","2",None,None,None,None),
|
||||
(3,3,6,"GtkBoxLayoutChild","fill","False",None,None,None,None),
|
||||
(3,3,6,"GtkBoxLayoutChild","position","1",None,None,None,None)
|
||||
</object_layout_property>
|
||||
</cambalache-project>
|
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="New document 3">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="31.76782"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="8.7441406"
|
||||
y="1046.6063"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="8.7441406"
|
||||
y="1046.6063"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">1</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="2mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="31.76782"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="11.292969"
|
||||
y="1047.0809"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="11.292969"
|
||||
y="1047.0809"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">2</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="3mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="31.76782"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="10.466797"
|
||||
y="1046.5712"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="10.466797"
|
||||
y="1046.5712"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">3</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="4mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="32.791013"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="10.150391"
|
||||
y="1046.6063"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="10.150391"
|
||||
y="1046.6063"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">4</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="5mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="32.791013"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="10.255859"
|
||||
y="1046.0966"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="10.255859"
|
||||
y="1046.0966"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">5</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="6mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="33.265622"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="9.9746094"
|
||||
y="1046.5009"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="9.9746094"
|
||||
y="1046.5009"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">6</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="7mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="33.265622"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="10.660156"
|
||||
y="1046.6063"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="10.660156"
|
||||
y="1046.6063"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">7</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3767"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="8mines.svg">
|
||||
<defs
|
||||
id="defs3769" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="33.68578"
|
||||
inkscape:cy="33.265622"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1120"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="66"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3772">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-988.36218)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="28.284271"
|
||||
y="32.685272"
|
||||
id="text4299"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(0,988.36218)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4301"
|
||||
x="28.284271"
|
||||
y="32.685272" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell"
|
||||
x="10.326172"
|
||||
y="1046.5712"
|
||||
id="text4303"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4305"
|
||||
x="10.326172"
|
||||
y="1046.5712"
|
||||
style="font-size:72px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#2e3436;font-family:Monospace;-inkscape-font-specification:Monospace Bold">8</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg1"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="bang.svg">
|
||||
<defs
|
||||
id="defs24" />
|
||||
<metadata
|
||||
id="metadata23">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="48.730753"
|
||||
inkscape:cy="40.238815"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:current-layer="svg1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:snap-bbox="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3007"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<linearGradient
|
||||
id="paint"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.5"
|
||||
y1="99"
|
||||
x2="119.5"
|
||||
y2="99">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#DA1800"
|
||||
id="stop17" />
|
||||
<stop
|
||||
offset="0.33"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop18" />
|
||||
<stop
|
||||
offset="0.66"
|
||||
style="stop-color:#FA1818"
|
||||
id="stop19" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop20" />
|
||||
</linearGradient>
|
||||
<path
|
||||
transform="matrix(1.4,0,0,1.4,-1074,-577)"
|
||||
d="m 805,435 a 15,15 0 1 1 -30,0 15,15 0 1 1 30,0 z"
|
||||
sodipodi:ry="15"
|
||||
sodipodi:rx="15"
|
||||
sodipodi:cy="435"
|
||||
sodipodi:cx="790"
|
||||
id="path2999"
|
||||
style="fill:#cc0000;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
<rect
|
||||
style="fill:#cc0000;fill-opacity:1;stroke:none"
|
||||
id="rect3001"
|
||||
width="8"
|
||||
height="64"
|
||||
x="28"
|
||||
y="0"
|
||||
rx="4.5999999"
|
||||
ry="4.5999999" />
|
||||
<rect
|
||||
ry="4.5999999"
|
||||
rx="4.5999999"
|
||||
y="-43.712814"
|
||||
x="39.712811"
|
||||
height="64"
|
||||
width="8"
|
||||
id="rect3013"
|
||||
style="fill:#cc0000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)" />
|
||||
<rect
|
||||
transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
|
||||
style="fill:#cc0000;fill-opacity:1;stroke:none"
|
||||
id="rect3015"
|
||||
width="8"
|
||||
height="64"
|
||||
x="7.7128115"
|
||||
y="-75.712807"
|
||||
rx="4.5999999"
|
||||
ry="4.5999999" />
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg9373"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="flag.svg">
|
||||
<metadata
|
||||
id="metadata9418">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs9416" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="834"
|
||||
id="namedview9414"
|
||||
showgrid="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="37.101481"
|
||||
inkscape:cy="14.748665"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg9373">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid9641"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<linearGradient
|
||||
id="paint"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.5"
|
||||
y1="99"
|
||||
x2="119.5"
|
||||
y2="99">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#DA1800"
|
||||
id="stop9404" />
|
||||
<stop
|
||||
offset="0.33"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9406" />
|
||||
<stop
|
||||
offset="0.66"
|
||||
style="stop-color:#FA1818"
|
||||
id="stop9408" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9410" />
|
||||
</linearGradient>
|
||||
<path
|
||||
style="fill:#2e3436;fill-opacity:1;stroke-width:1;stroke-miterlimit:4"
|
||||
d="M 8.086319,0.175024 17.084785,0 l 0,3.104056 L 58.104384,20.741065 17.040446,38.378074 16.99727,64 8,64 z"
|
||||
id="path9621"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg9373"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="flag.svg">
|
||||
<metadata
|
||||
id="metadata9418">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs9416" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="834"
|
||||
id="namedview9414"
|
||||
showgrid="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="37.101481"
|
||||
inkscape:cy="14.748665"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg9373">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid9641"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<linearGradient
|
||||
id="paint"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.5"
|
||||
y1="99"
|
||||
x2="119.5"
|
||||
y2="99">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#DA1800"
|
||||
id="stop9404" />
|
||||
<stop
|
||||
offset="0.33"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9406" />
|
||||
<stop
|
||||
offset="0.66"
|
||||
style="stop-color:#FA1818"
|
||||
id="stop9408" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9410" />
|
||||
</linearGradient>
|
||||
<path
|
||||
style="fill:#2e3436;fill-opacity:1;stroke-width:1;stroke-miterlimit:4"
|
||||
d="M 8.086319,0.175024 17.084785,0 l 0,3.104056 L 58.104384,20.741065 17.040446,38.378074 16.99727,64 8,64 z"
|
||||
id="path9621"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg9373"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="flag-question.svg">
|
||||
<metadata
|
||||
id="metadata9418">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs9416" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="834"
|
||||
id="namedview9414"
|
||||
showgrid="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="47.542826"
|
||||
inkscape:cy="16.424223"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg9373">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid9641"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<linearGradient
|
||||
id="paint"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.5"
|
||||
y1="99"
|
||||
x2="119.5"
|
||||
y2="99">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#DA1800"
|
||||
id="stop9404" />
|
||||
<stop
|
||||
offset="0.33"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9406" />
|
||||
<stop
|
||||
offset="0.66"
|
||||
style="stop-color:#FA1818"
|
||||
id="stop9408" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop9410" />
|
||||
</linearGradient>
|
||||
<path
|
||||
style="fill:#2e3436;fill-opacity:1;stroke-width:1;stroke-miterlimit:4"
|
||||
d="M 8.086319,0.175024 17.084785,0 l 0,3.104056 L 58.104384,20.741065 17.040446,38.378074 16.99727,64 8,64 z"
|
||||
id="path9621"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<g
|
||||
style="fill:#2e3436;fill-opacity:1"
|
||||
transform="matrix(2.7979138,0,0,2.7979138,-223.48821,-253.48342)"
|
||||
id="g15007">
|
||||
<path
|
||||
style="color:#bebebe;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 97.348014,103.46875 c 1.64243,-0.092 3.095496,1.17008 3.187496,2.8125 -1e-4,1.40136 -0.37771,1.92177 -1.593746,2.84375 -0.19093,0.14364 -0.3256,0.2506 -0.375,0.3125 -0.0494,0.0621 -0.0312,0.0332 -0.0312,0.0312 0.007,0.52831 -0.47163,1 -1,1 -0.52837,0 -1.007,-0.47169 -1,-1 0,-0.50239 0.22424,-0.94342 0.46875,-1.25 0.24451,-0.30663 0.4913,-0.51638 0.71875,-0.6875 0.20405,-0.16056 0.46083,-0.38454 0.6875,-0.65625 0.0935,-0.1121 0.129,-0.30766 0.125,-0.4375 l 0,-0.0312 c -0.0316,-0.56324 -0.49926,-0.9691 -1.0625,-0.9375 -0.56324,0.0316 -0.9691,0.43676 -0.9375,1 l -2,0 c -0.092,-1.64243 1.17007,-2.9079 2.8125,-3 z m 0.1875,8 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z"
|
||||
id="path15009"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccsccccccsccccsssss" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg1"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="mine.svg">
|
||||
<defs
|
||||
id="defs24" />
|
||||
<metadata
|
||||
id="metadata23">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="48.730753"
|
||||
inkscape:cy="40.238815"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:current-layer="svg1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:snap-bbox="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3007"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<linearGradient
|
||||
id="paint"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.5"
|
||||
y1="99"
|
||||
x2="119.5"
|
||||
y2="99">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#DA1800"
|
||||
id="stop17" />
|
||||
<stop
|
||||
offset="0.33"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop18" />
|
||||
<stop
|
||||
offset="0.66"
|
||||
style="stop-color:#FA1818"
|
||||
id="stop19" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#B42D2D"
|
||||
id="stop20" />
|
||||
</linearGradient>
|
||||
<path
|
||||
transform="matrix(1.4,0,0,1.4,-1074,-577)"
|
||||
d="m 805,435 a 15,15 0 1 1 -30,0 15,15 0 1 1 30,0 z"
|
||||
sodipodi:ry="15"
|
||||
sodipodi:rx="15"
|
||||
sodipodi:cy="435"
|
||||
sodipodi:cx="790"
|
||||
id="path2999"
|
||||
style="fill:#2e3436;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
<rect
|
||||
style="fill:#2e3436;fill-opacity:1;stroke:none"
|
||||
id="rect3001"
|
||||
width="8"
|
||||
height="64"
|
||||
x="28"
|
||||
y="0"
|
||||
rx="4.5999999"
|
||||
ry="4.5999999" />
|
||||
<rect
|
||||
ry="4.5999999"
|
||||
rx="4.5999999"
|
||||
y="-43.712814"
|
||||
x="39.712811"
|
||||
height="64"
|
||||
width="8"
|
||||
id="rect3013"
|
||||
style="fill:#2e3436;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)" />
|
||||
<rect
|
||||
transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
|
||||
style="fill:#2e3436;fill-opacity:1;stroke:none"
|
||||
id="rect3015"
|
||||
width="8"
|
||||
height="64"
|
||||
x="7.7128115"
|
||||
y="-75.712807"
|
||||
rx="4.5999999"
|
||||
ry="4.5999999" />
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<menu id = "mine_menu">
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label">New Game</attribute>
|
||||
<attribute name="action">win.new_game</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Custom Game</attribute>
|
||||
<attribute name="action">win.custom_game</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Show Scores</attribute>
|
||||
<attribute name="action">win.scores</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Show all mines</attribute>
|
||||
<attribute name="action">win.show_mines</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Quit</attribute>
|
||||
<attribute name="action">win.quit</attribute>
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
</interface>
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkWindow" id="minesweeper">
|
||||
<property name="default-height">400</property>
|
||||
<property name="default-width">700</property>
|
||||
<child type="titlebar">
|
||||
<object class="GtkStackSwitcher">
|
||||
<property name="visible">0</property>
|
||||
</object>
|
||||
</child>
|
||||
<property name="child">
|
||||
<object class="GtkStack" id="main_stack">
|
||||
<property name="visible">1</property>
|
||||
<property name="halign">baseline</property>
|
||||
<property name="transition-type">slide-right</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="start_page">
|
||||
<property name="visible">1</property>
|
||||
<property name="column-homogeneous">1</property>
|
||||
<property name="column-spacing">2</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="row-homogeneous">1</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="main_page">
|
||||
<property name="visible">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid" id="custom_page">
|
||||
<property name="visible">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</interface>
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkWindow" id="scores_win">
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="visible">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="scores_view">
|
||||
<property name="visible">1</property>
|
||||
<property name="width-request">400</property>
|
||||
<property name="height-request">300</property>
|
||||
<property name="valign">start</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="btn_box">
|
||||
<property name="valign">center</property>
|
||||
<property name="visible">1</property>
|
||||
<property name="height-request">3</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="halign">center</property>
|
||||
<property name="visible">1</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="label"> </property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btnclose">
|
||||
<property name="visible">1</property>
|
||||
<property name="label">Close</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</interface>
|
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkDialog" id="dialog">
|
||||
<property name="width-request">300</property>
|
||||
<property name="height-request">150</property>
|
||||
<child internal-child="content_area">
|
||||
<object class="GtkBox">
|
||||
<property name="visible">1</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="margin-top">10</property>
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="main_box">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="vexpand">1</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="1">Input Name:</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry_name">
|
||||
<property name="focusable">1</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="check_scores">
|
||||
<property name="label" translatable="1">Show Scores Window</property>
|
||||
<property name="focusable">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-5">btn_ok</action-widget>
|
||||
<action-widget response="-6">btn_cancel</action-widget>
|
||||
</action-widgets>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkBox">
|
||||
<property name="valign">center</property>
|
||||
<property name="visible">1</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="btn_ok">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="label" translatable="1">OK</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="receives-default">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="btn_cancel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="label" translatable="1">Cancel</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="receives-default">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -0,0 +1,99 @@
|
|||
#include "InputBox.hh"
|
||||
|
||||
InputBox::InputBox(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
||||
: Gtk::Dialog(cobject),
|
||||
ref_builder(ref_Glade)
|
||||
{
|
||||
// Get Widgets
|
||||
entry_name = ref_builder->get_widget<Gtk::Entry>("entry_name");
|
||||
check_scores = ref_builder->get_widget<Gtk::CheckButton>("check_scores");
|
||||
entry_name->signal_activate().connect(sigc::mem_fun(*this, &InputBox::entry_activated));
|
||||
}
|
||||
|
||||
void InputBox::on_response(int response_id)
|
||||
{
|
||||
// Open a file to save json data
|
||||
std::fstream outfile;
|
||||
outfile.open("scores.json", std::ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
// Insert data to json
|
||||
std::string name = std::string((entry_name->get_text()).c_str());
|
||||
names.push_back(name);
|
||||
times.push_back(game_time);
|
||||
data["name"] = names;
|
||||
data["time"] = times;
|
||||
|
||||
// Output data
|
||||
outfile << data;
|
||||
}
|
||||
outfile.close();
|
||||
if (response_id == Gtk::ResponseType::OK)
|
||||
{
|
||||
read_scores(check_scores->get_active());
|
||||
}
|
||||
hide();
|
||||
}
|
||||
|
||||
void InputBox::read_scores(bool show_scores_win)
|
||||
{
|
||||
// If show scores checkbutton is checked, show scores window
|
||||
if (show_scores_win)
|
||||
{
|
||||
scores_win1->update_and_show();
|
||||
}
|
||||
}
|
||||
|
||||
void InputBox::set_game_time(int time)
|
||||
{
|
||||
// Try to open json file
|
||||
std::fstream jsonfile;
|
||||
jsonfile.open("scores.json", std::ios_base::in);
|
||||
|
||||
// If json file opened, read the data
|
||||
if (jsonfile.is_open())
|
||||
{
|
||||
data = json::parse(jsonfile);
|
||||
std::vector<std::string> names1 = data["name"];
|
||||
std::vector<int> times1 = data["time"];
|
||||
names = names1;
|
||||
times = times1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwist, create json data
|
||||
data = json::parse(R"(
|
||||
{
|
||||
"name":[" "],
|
||||
"time":[0]
|
||||
}
|
||||
)");
|
||||
}
|
||||
jsonfile.close();
|
||||
|
||||
// Initalize time
|
||||
game_time = time;
|
||||
}
|
||||
|
||||
void InputBox::entry_activated()
|
||||
{
|
||||
// Default response
|
||||
response(Gtk::ResponseType::OK);
|
||||
}
|
||||
|
||||
void InputBox::set_scores_window(ScoresWin *win1)
|
||||
{
|
||||
// Bind Scores Window
|
||||
scores_win1 = win1;
|
||||
}
|
||||
|
||||
InputBox *InputBox::create()
|
||||
{
|
||||
// Create a inputbox object
|
||||
auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/win_input.ui");
|
||||
|
||||
InputBox *dialog;
|
||||
dialog = Gtk::Builder::get_widget_derived<InputBox>(builder, "dialog");
|
||||
|
||||
return dialog;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtkmm.h>
|
||||
#include "jsonfile.hh"
|
||||
#include "ScoresWin.hh"
|
||||
|
||||
class InputBox : public Gtk::Dialog{
|
||||
public:
|
||||
static InputBox *create();
|
||||
InputBox(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
|
||||
void read_scores(bool show_scores_win = true);
|
||||
void set_game_time(int time);
|
||||
void set_scores_window(ScoresWin *win1);
|
||||
|
||||
protected:
|
||||
void on_response(int response_id) override;
|
||||
|
||||
private:
|
||||
int game_time;
|
||||
|
||||
// Data to write to json file
|
||||
json data;
|
||||
std::vector<std::string> names;
|
||||
std::vector<int> times;
|
||||
|
||||
// Builder Object
|
||||
Glib::RefPtr<Gtk::Builder> ref_builder;
|
||||
|
||||
// Child widget
|
||||
Gtk::Entry *entry_name;
|
||||
Gtk::CheckButton *check_scores;
|
||||
|
||||
// Scores Window
|
||||
ScoresWin *scores_win1;
|
||||
|
||||
// Signal Handlers
|
||||
void entry_activated();
|
||||
};
|
|
@ -0,0 +1,295 @@
|
|||
#include "MineSweeper.hh"
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
MineSweeper::MineSweeper()
|
||||
: main_box(Gtk::Orientation::VERTICAL, 5),
|
||||
btn_box(Gtk::Orientation::HORIZONTAL, 5),
|
||||
cell(nullptr)
|
||||
{
|
||||
// Initalize Window
|
||||
set_title("MineSweeper");
|
||||
set_titlebar(header);
|
||||
header.set_show_title_buttons();
|
||||
header.set_decoration_layout("close,minimize,maximize:menu");
|
||||
header.pack_end(menu_btn);
|
||||
set_icon_name("org.gtk.daleclack");
|
||||
|
||||
// Initalize Menu
|
||||
menu_builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/mine_menu.xml");
|
||||
auto object = menu_builder->get_object<Gio::MenuModel>("mine_menu");
|
||||
popover1.set_menu_model(object);
|
||||
// popover1.show();
|
||||
menu_btn.set_popover(popover1);
|
||||
|
||||
// Add Actions
|
||||
add_action("new_game", sigc::mem_fun(*this, &MineSweeper::new_game));
|
||||
add_action("scores", sigc::mem_fun(*this, &MineSweeper::show_scores));
|
||||
add_action("show_mines", sigc::mem_fun(*this, &MineSweeper::show_mines));
|
||||
add_action("quit", sigc::mem_fun(*this, &MineSweeper::hide));
|
||||
|
||||
// Default setting
|
||||
reset_game();
|
||||
|
||||
// Buttons
|
||||
btnstart.set_label("Start/Reset");
|
||||
btnshow.set_label("Show All");
|
||||
btnexit.set_label("Exit");
|
||||
btn_box.append(btnstart);
|
||||
btn_box.append(btnshow);
|
||||
btn_box.append(btnexit);
|
||||
btnstart.signal_clicked().connect(sigc::mem_fun(*this, &MineSweeper::new_game));
|
||||
btnshow.signal_clicked().connect(sigc::mem_fun(*this, &MineSweeper::show_mines));
|
||||
btnexit.signal_clicked().connect(sigc::mem_fun(*this, &MineSweeper::hide));
|
||||
|
||||
// Pack widgets
|
||||
status_label.set_halign(Gtk::Align::CENTER);
|
||||
btn_box.set_halign(Gtk::Align::CENTER);
|
||||
mine_grid.set_halign(Gtk::Align::CENTER);
|
||||
main_box.append(status_label);
|
||||
main_box.append(mine_grid);
|
||||
main_box.append(btn_box);
|
||||
|
||||
// Create a dialog
|
||||
input_dialog = InputBox::create();
|
||||
|
||||
// Create Scores Window
|
||||
scores_win = ScoresWin::create();
|
||||
|
||||
// Bind windows
|
||||
input_dialog->set_transient_for(*this);
|
||||
scores_win->set_transient_for(*this);
|
||||
input_dialog->set_scores_window(scores_win);
|
||||
|
||||
// Show everything
|
||||
set_child(main_box);
|
||||
//show_all_children();
|
||||
}
|
||||
|
||||
MineSweeper::~MineSweeper(){
|
||||
// Delete all resources
|
||||
delete input_dialog;
|
||||
delete scores_win;
|
||||
if(cell != nullptr){
|
||||
delete[] cell;
|
||||
}
|
||||
}
|
||||
|
||||
void MineSweeper::new_game(){
|
||||
// New game = reset game
|
||||
reset_game();
|
||||
}
|
||||
|
||||
void MineSweeper::reset_game(int width, int height, int mines)
|
||||
{
|
||||
// Clear the cells
|
||||
if(cell != nullptr){
|
||||
delete[] cell;
|
||||
}
|
||||
|
||||
cell = new MineCell[width * height];
|
||||
// Reset timer
|
||||
mytimer.disconnect();
|
||||
timer_count = 0;
|
||||
mytimer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &MineSweeper::timer_func), 1000);
|
||||
|
||||
mine_count = 0;
|
||||
mines_clear = 0;
|
||||
mine_grid.set_sensitive();
|
||||
// Reset all data
|
||||
for (int i = 0; i < width; i++)
|
||||
{
|
||||
for (int j = 0; j < height; j++)
|
||||
{
|
||||
// Initalize cell
|
||||
cell[i * 7 + j].set_has_frame();
|
||||
cell[i * 7 + j].set_image_from_icon_name("", Gtk::IconSize::LARGE);
|
||||
// cell[i * 7 + j].set_always_show_image();
|
||||
cell[i * 7 + j].set_size_request(40, 40);
|
||||
cell[i * 7 + j].mines_around = 0;
|
||||
cell[i * 7 + j].has_mine = false;
|
||||
cell[i * 7 + j].cleared = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Reset mines
|
||||
while (mine_count < mines)
|
||||
{
|
||||
int index = g_random_int_range(0, width * height);
|
||||
if (!(cell[index].has_mine))
|
||||
{
|
||||
cell[index].has_mine = true;
|
||||
// cell[index].set_label("x");
|
||||
mine_count++;
|
||||
}
|
||||
}
|
||||
// std::cout << mine_count << std::endl;
|
||||
game_ended = false;
|
||||
winned = true;
|
||||
status_label.set_label(" ");
|
||||
calc_mines();
|
||||
|
||||
// Append buttons to grid
|
||||
for (int i = 0; i < height; i++)
|
||||
{
|
||||
for (int j = 0; j < width; j++)
|
||||
{
|
||||
// cell[i * 7 + j].set_label("?");
|
||||
cell[i * width + j].signal_clicked().connect(sigc::bind(
|
||||
sigc::mem_fun(*this, &MineSweeper::cell_clicked), &cell[i * width + j]));
|
||||
mine_grid.attach(cell[i * width + j], j, i);
|
||||
cell[i * width + j].set_has_frame();
|
||||
cell[i * width + j].x = j;
|
||||
cell[i * width + j].y = i;
|
||||
cell[i * width + j].cleared = false;
|
||||
}
|
||||
}
|
||||
|
||||
mine_grid.show();
|
||||
}
|
||||
|
||||
void MineSweeper::calc_mines()
|
||||
{
|
||||
// Calculate the mines around a cell
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
for (int j = 0; j < 7; j++)
|
||||
{
|
||||
int index1, index2;
|
||||
// The Search cell should not over the grids
|
||||
for (index1 = MAX(0, i - 1); index1 < MIN(i + 1, 6) + 1; index1++)
|
||||
{
|
||||
for (index2 = MAX(0, j - 1); index2 < MIN(j + 1, 6) + 1; index2++)
|
||||
{
|
||||
if ((cell[index1 * 7 + index2].has_mine))
|
||||
{
|
||||
cell[i * 7 + j].mines_around++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MineSweeper::show_mines()
|
||||
{
|
||||
// Show all cell with a mine
|
||||
for (int i = 0; i < 49; i++)
|
||||
{
|
||||
if (cell[i].has_mine)
|
||||
{
|
||||
cell[i].set_image_from_icon_name("mine", Gtk::IconSize::LARGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MineSweeper::show_scores(){
|
||||
// Show Scores Window
|
||||
input_dialog->read_scores();
|
||||
}
|
||||
|
||||
void MineSweeper::game_lost(int explode_index){
|
||||
// When a cell with mine is clicked, show other mines
|
||||
for (int i = 0; i < 49; i++)
|
||||
{
|
||||
if (cell[i].has_mine && i != explode_index)
|
||||
{
|
||||
cell[i].set_image_from_icon_name("mine", Gtk::IconSize::LARGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool MineSweeper::timer_func()
|
||||
{
|
||||
// Set timer
|
||||
char tmp[50];
|
||||
timer_count++;
|
||||
sprintf(tmp, "Time:%d", timer_count);
|
||||
status_label.set_label(tmp);
|
||||
return true;
|
||||
}
|
||||
|
||||
void MineSweeper::cell_clicked(MineCell *cell1)
|
||||
{
|
||||
cell1->set_has_frame(false);
|
||||
if (!game_ended && !cell1->cleared)
|
||||
{
|
||||
//
|
||||
// If get mine, the game will end now
|
||||
if (cell1->has_mine)
|
||||
{
|
||||
// Set game to stop
|
||||
winned = false;
|
||||
cell1->cleared = true;
|
||||
cell1->set_image_from_icon_name("exploded", Gtk::IconSize::LARGE);
|
||||
|
||||
// End the game
|
||||
game_lost(cell1->y * 7 + cell1->x);
|
||||
status_label.set_label("You lost!");
|
||||
game_ended = true;
|
||||
mytimer.disconnect();
|
||||
mine_grid.set_sensitive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If no mines, check the cell around
|
||||
check_mines(cell1->x, cell1->y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MineSweeper::check_mines(int pos_x, int pos_y)
|
||||
{
|
||||
if (pos_x >= 0 && pos_x <= 6 &&
|
||||
pos_y >= 0 && pos_y <= 6)
|
||||
{
|
||||
if (!cell[pos_y * 7 + pos_x].has_mine &&
|
||||
!cell[pos_y * 7 + pos_x].cleared)
|
||||
{
|
||||
mines_clear++;
|
||||
// Show the cell has no mines around
|
||||
if (cell[pos_y * 7 + pos_x].mines_around == 0)
|
||||
{
|
||||
cell[pos_y * 7 + pos_x].set_image_from_icon_name("", Gtk::IconSize::LARGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Show the numbers of mines around a cell
|
||||
char *label = g_strdup_printf("%dmines", cell[pos_y * 7 + pos_x].mines_around);
|
||||
cell[pos_y * 7 + pos_x].set_image_from_icon_name(label, Gtk::IconSize::LARGE);
|
||||
g_free(label);
|
||||
}
|
||||
|
||||
// make the cell without mines cleared
|
||||
cell[pos_y * 7 + pos_x].set_has_frame(false);
|
||||
cell[pos_y * 7 + pos_x].cleared = true;
|
||||
|
||||
// Check the cells around a cell that has no mines
|
||||
if (cell[pos_y * 7 + pos_x].mines_around == 0)
|
||||
{
|
||||
check_mines((pos_x - 1), (pos_y - 1));
|
||||
check_mines((pos_x + 1), (pos_y + 1));
|
||||
check_mines((pos_x - 1), (pos_y + 1));
|
||||
check_mines((pos_x + 1), (pos_y - 1));
|
||||
check_mines(pos_x, (pos_y - 1));
|
||||
check_mines(pos_x, (pos_y + 1));
|
||||
check_mines((pos_x + 1), pos_y);
|
||||
check_mines((pos_x - 1), pos_y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If all the mines has cleared, you has winned
|
||||
if (mines_clear == 40)
|
||||
{
|
||||
// Stop the game
|
||||
status_label.set_label("You winned!");
|
||||
winned = true;
|
||||
game_ended = true;
|
||||
mytimer.disconnect();
|
||||
|
||||
// Save the time of game
|
||||
input_dialog->set_game_time(timer_count);
|
||||
input_dialog->show();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtkmm.h>
|
||||
#include "InputBox.hh"
|
||||
#include "ScoresWin.hh"
|
||||
|
||||
class MineCell : public Gtk::Button
|
||||
{
|
||||
public:
|
||||
bool has_mine = false; // Whether the grid has mine
|
||||
bool cleared = false; // Whether the mine is cleared
|
||||
int mines_around; // The number near the grid
|
||||
int x, y; // The Position of the grid
|
||||
MineCell()
|
||||
{
|
||||
// Set button style
|
||||
mines_around = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class MineSweeper : public Gtk::ApplicationWindow
|
||||
{
|
||||
public:
|
||||
MineSweeper();
|
||||
~MineSweeper();
|
||||
|
||||
private:
|
||||
// HeaderBar
|
||||
Gtk::HeaderBar header;
|
||||
Gtk::MenuButton menu_btn;
|
||||
Gtk::PopoverMenu popover1;
|
||||
|
||||
// Child widgets
|
||||
Gtk::Grid mine_grid;
|
||||
Gtk::Label status_label;
|
||||
Gtk::Box main_box, btn_box;
|
||||
Gtk::Button btnstart, btnshow, btnexit;
|
||||
|
||||
// The cell to place mines
|
||||
MineCell *cell;
|
||||
bool winned, game_ended; // The status of game(win/end)
|
||||
int mines_clear, mine_count; // Whether the mine is cleared
|
||||
|
||||
// Menu
|
||||
Glib::RefPtr<Gtk::Builder> menu_builder;
|
||||
|
||||
// Timer
|
||||
int timer_count;
|
||||
sigc::connection mytimer;
|
||||
|
||||
// Input dialog
|
||||
InputBox *input_dialog;
|
||||
|
||||
// Scores Window
|
||||
ScoresWin *scores_win;
|
||||
|
||||
// Signal Handlers
|
||||
void new_game(); // "New Game" handler
|
||||
void reset_game(int width = 7, int height = 7, int mines = 9); // Reset all mines
|
||||
void calc_mines(); // Get the mines around
|
||||
void show_mines(); // Show all mines
|
||||
void show_scores(); // Show all scores
|
||||
void game_lost(int explode_index); // You lost the game
|
||||
void cell_clicked(MineCell *cell1); // Open a cell
|
||||
bool timer_func(); // Timer
|
||||
void check_mines(int pos_x, int pos_y); // Check if there is a mine
|
||||
};
|
|
@ -0,0 +1,77 @@
|
|||
#include "ScoresWin.hh"
|
||||
|
||||
ScoresWin::ScoresWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
||||
: Gtk::Window(cobject),
|
||||
ref_builder(ref_Glade)
|
||||
{
|
||||
// Get Widgets
|
||||
btnclose = ref_builder->get_widget<Gtk::Button>("btnclose");
|
||||
tree_view = ref_builder->get_widget<Gtk::TreeView>("scores_view");
|
||||
btnclose->signal_clicked().connect(sigc::mem_fun(*this, &ScoresWin::hide));
|
||||
|
||||
// Create the list store
|
||||
store = Gtk::ListStore::create(column1);
|
||||
store->set_sort_column(column1.win_time, Gtk::SortType::DESCENDING);
|
||||
// store->set_default_sort_func(sigc::mem_fun(*this, &ScoresWin::sort_func));
|
||||
tree_view->set_model(store);
|
||||
tree_view->append_column("name", column1.player_name);
|
||||
tree_view->append_column("time", column1.win_time);
|
||||
}
|
||||
|
||||
void ScoresWin::update_and_show()
|
||||
{
|
||||
std::fstream infile;
|
||||
infile.open("scores.json", std::ios_base::in);
|
||||
|
||||
if (infile.is_open())
|
||||
{
|
||||
// Read data from json file
|
||||
json data = json::parse(infile);
|
||||
std::vector<std::string> name_vec = data["name"];
|
||||
std::vector<int> time_vec = data["time"];
|
||||
|
||||
// Clear the store
|
||||
store->clear();
|
||||
|
||||
// Append data to the store
|
||||
for (int i = 0; i < name_vec.size(); i++)
|
||||
{
|
||||
auto row = *(store->append());
|
||||
row[column1.player_name] = name_vec[i];
|
||||
row[column1.win_time] = time_vec[i];
|
||||
}
|
||||
}
|
||||
|
||||
show();
|
||||
}
|
||||
|
||||
int ScoresWin::sort_func(const Gtk::TreeModel::iterator &iter1, const Gtk::TreeModel::iterator &iter2)
|
||||
{
|
||||
// Sort by the game time
|
||||
auto row1 = *iter1;
|
||||
auto row2 = *iter2;
|
||||
if (row1[column1.win_time] < row2[column1.win_time])
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (row1[column1.win_time] == row2[column1.win_time])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
ScoresWin *ScoresWin::create()
|
||||
{
|
||||
// Create a window
|
||||
auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/scoreswin.ui");
|
||||
ScoresWin *main_win;
|
||||
|
||||
// builder->get_widget_derived("scores_win", main_win);
|
||||
main_win = Gtk::Builder::get_widget_derived<ScoresWin>(builder, "scores_win");
|
||||
|
||||
return main_win;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtkmm.h>
|
||||
#include "jsonfile.hh"
|
||||
|
||||
class ScoresWin : public Gtk::Window{
|
||||
public:
|
||||
static ScoresWin *create();
|
||||
ScoresWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
|
||||
void update_and_show();
|
||||
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> ref_builder;
|
||||
|
||||
// Child widgets
|
||||
Gtk::Button *btnclose;
|
||||
Gtk::TreeView *tree_view;
|
||||
|
||||
// TreeView data
|
||||
class ModelColumns : public Gtk::TreeModelColumnRecord{
|
||||
public:
|
||||
ModelColumns(){
|
||||
add(player_name);
|
||||
add(win_time);
|
||||
}
|
||||
Gtk::TreeModelColumn<std::string> player_name;
|
||||
Gtk::TreeModelColumn<int> win_time;
|
||||
};
|
||||
ModelColumns column1;
|
||||
|
||||
Glib::RefPtr<Gtk::ListStore> store;
|
||||
|
||||
// Sort function
|
||||
int sort_func(const Gtk::TreeModel::iterator &iter1, const Gtk::TreeModel::iterator &iter2);
|
||||
};
|
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "../json_nlohmann/json.hpp"
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
using json = nlohmann::json;
|
|
@ -0,0 +1,8 @@
|
|||
#include "MineSweeper.hh"
|
||||
|
||||
int main(int argc, char **argv){
|
||||
// Create a application and run
|
||||
auto app = Gtk::Application::create("org.gtk.daleclack");
|
||||
|
||||
return app->make_window_and_run<MineSweeper>(argc,argv);
|
||||
}
|