Add gtk142

This commit is contained in:
daleclack 2022-11-05 12:33:56 +08:00
parent 1fa1fbfc53
commit ce46f638a5
29 changed files with 2224 additions and 0 deletions

View File

@ -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"
}

View File

@ -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)

View File

@ -0,0 +1 @@
*.ui

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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();
};

View File

@ -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();
}
}

View File

@ -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
};

View File

@ -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;
}

View File

@ -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);
};

View File

@ -0,0 +1,7 @@
#pragma once
#include "../json_nlohmann/json.hpp"
#include <fstream>
#include <vector>
using json = nlohmann::json;

View File

@ -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);
}