Add gtk131

This commit is contained in:
daleclack 2022-06-09 16:27:22 +08:00
parent a233a4fe4b
commit 77444c1ca8
9 changed files with 913 additions and 0 deletions

View File

@ -0,0 +1,73 @@
set(CMAKE_CXX_STANDARD 17)
cmake_minimum_required(VERSION 3.0.0)
project(gtk131_calc2 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 (GTKMM3 REQUIRED gtkmm-3.0)
include_directories (${GTKMM3_INCLUDE_DIRS})
link_directories (${GTKMM3_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/MyWin.cc src/calc.cc)
#Compile Resource
set(RESOURCE_LIST
icons/scalable/status/calcapp.svg
window.ui)
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 x86_64-w64-mingw32-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 ${GTKMM3_CFLAGS_OTHER})
target_link_libraries (${PROJECT_NAME} ${GTKMM3_LIBRARIES} -lpthread)

View File

@ -0,0 +1,67 @@
#: src/MyWin.cc:8
msgid "Open Image"
msgstr "打开图像文件"
#: src/MyWin.cc:11
msgid "Position"
msgstr "位置"
#: src/MyWin.cc:12
msgid "rgb()/rgba() for css3"
msgstr "用于css3的rgb()/rgba()代码"
#: src/MyWin.cc:13
msgid "(A)RGB Code"
msgstr "(A)RGB代码"
#: src/MyWin.cc:16
msgid "Color Settings And Position info"
msgstr "颜色与位置信息"
#: src/MyWin.cc:18
msgid "Copy Css3 Code"
msgstr "复制css3代码"
#: src/MyWin.cc:19
msgid "Copy (A)RGB String"
msgstr "复制(A)RGB代码"
#: src/MyWin.cc:20
msgid "Pick Color"
msgstr "拾取颜色"
#: src/MyWin.cc:22
msgid "Color Picker"
msgstr "颜色拾取器"
#: src/MyWin.cc:152
msgid "Open a image file"
msgstr "打开图像文件"
#: src/MyWin.cc:153
msgid "OK"
msgstr "确定"
#: src/MyWin.cc:153
msgid "Cancel"
msgstr "取消"
#: src/MyWin.cc:157
msgid "Image Files"
msgstr "图像文件"
#: src/MyWin.cc:172
msgid "Any Files"
msgstr "所有文件"
msgid "Color Panel"
msgstr "调色板"
msgid "Color Reference"
msgstr "颜色参考"
msgid "Color:"
msgstr "颜色:"
msgid "Copy Color Code"
msgstr "复制颜色代码"

View File

@ -0,0 +1,192 @@
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linearGradient1129">
<stop offset="0"/>
<stop stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient964" x1="9.3898" x2="15.269" y1="15.064" y2="9.1855" gradientTransform="translate(21.524)" gradientUnits="userSpaceOnUse">
<stop stop-color="#2f5fdd" offset="0"/>
<stop stop-color="#1a7fd4" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient966" cx="12.171" cy="12.171" r="4.7624" gradientTransform="translate(21.524)" gradientUnits="userSpaceOnUse">
<stop offset="0"/>
<stop stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient968" x1="8.4665" x2="8.4665" y1="15.875" y2="1.0583" gradientTransform="translate(21.524 .0079998)" gradientUnits="userSpaceOnUse">
<stop stop-color="#292929" offset="0"/>
<stop stop-color="#5c5c5c" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient1102" x1="8.4665" x2="8.4665" y1="15.875" y2="1.0583" gradientTransform="matrix(.89283 0 0 .89283 44.221 .9146)" gradientUnits="userSpaceOnUse">
<stop stop-color="#161616" offset="0"/>
<stop stop-color="#474747" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient1110" x1="8.4668" x2="8.4668" y1="14.808" y2="2.1086" gradientTransform="translate(43.314 .0079998)" gradientUnits="userSpaceOnUse">
<stop stop-color="#2f5fdd" offset="0"/>
<stop stop-color="#1a7fd4" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient1131" x1="8.4665" x2="8.4665" y1="1.852" y2="2.6458" gradientTransform="matrix(1,0,0,2,0,-1.852)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1129"/>
<radialGradient id="radialGradient1146" cx="16" cy="16" r="4.5" gradientTransform="matrix(6.7193e-8,-2,2,-1.4533e-7,-16,48)" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0" offset="0"/>
<stop stop-opacity="0" offset=".33333"/>
<stop offset="1"/>
</radialGradient>
<radialGradient id="radialGradient1152" cx="16" cy="16" r="4.5" gradientTransform="matrix(1.7778e-8 .52916 .52916 3.845e-8 -4.2333 4.2332)" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0" offset="0"/>
<stop stop-opacity="0" offset=".33333"/>
<stop offset="1"/>
</radialGradient>
<linearGradient id="linearGradient1156" x1="8.4665" x2="8.4665" y1="1.852" y2="2.6458" gradientTransform="matrix(1,0,0,2,-16.933,-1.852)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1129"/>
<linearGradient id="linearGradient1160" x1="8.4665" x2="8.4665" y1="1.852" y2="2.6458" gradientTransform="matrix(.5 0 0 2 -10.583 -18.785)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1129"/>
<radialGradient id="radialGradient1164" cx="16" cy="16" r="4.5" gradientTransform="matrix(.52916 1.7778e-8 3.845e-8 .52916 4.2332 -4.2333)" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0" offset="0"/>
<stop stop-opacity="0" offset=".33333"/>
<stop offset="1"/>
</radialGradient>
<linearGradient id="linearGradient1168" x1="8.4665" x2="8.4665" y1="1.852" y2="2.6458" gradientTransform="matrix(.5 0 0 2 2.1166 -18.785)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1129"/>
<linearGradient id="linearGradient1249" x1="8.4665" x2="8.4665" y1="15.875" y2="1.0583" gradientUnits="userSpaceOnUse">
<stop stop-color="#bfbfbd" offset="0"/>
<stop stop-color="#d4d6d6" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient4687" x1="-1.7842" x2="6.9662" y1="-27.458" y2="-19.626" gradientTransform="matrix(3.2483 0 0 3.192 25.795 106.65)" gradientUnits="userSpaceOnUse">
<stop stop-color="#4d5055" offset="0"/>
<stop stop-color="#131311" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient1090" x1="11.906" x2="11.906" y1="15.081" y2="10.054" gradientTransform="scale(3.7796)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1110"/>
<filter id="filter1411" x="-.23314" y="-.1632" width="1.4663" height="1.3264" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="0.719652"/>
</filter>
<linearGradient id="linearGradient1499" x1="8.4668" x2="8.4668" y1="14.808" y2="2.1086" gradientTransform="translate(43.314 .0079998)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1110"/>
</defs>
<g transform="translate(21.524)" shape-rendering="auto">
<path d="m4.3693 0.52916c-2.1142 0-3.8402 1.7835-3.8402 3.9682v8.4675c0 2.1846 1.726 3.9682 3.8402 3.9682h8.1944c2.1142 0 3.8402-1.7835 3.8402-3.9682v-8.4675c0-2.1846-1.726-3.9682-3.8402-3.9682zm0.25704 0.52089h7.6808c1.8443 0 3.3291 1.5342 3.3291 3.44v7.9368c0 1.9058-1.4847 3.44-3.3291 3.44h-7.6808c-1.8443 0-3.3291-1.5342-3.3291-3.44v-7.9368c0-1.9058 1.4847-3.44 3.3291-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3587 0.79373c-1.9668 0-3.5639 1.6528-3.5639 3.6876v8.4996c0 2.0348 1.5971 3.6876 3.5639 3.6876h8.2162c1.9668 0 3.5644-1.6528 3.5644-3.6876v-8.4996c0-2.0348-1.5976-3.6876-3.5644-3.6876zm0.27222 0.25631h7.6718c1.8422 0 3.3251 1.5342 3.3251 3.44v7.9368c0 1.9058-1.483 3.44-3.3251 3.44h-7.6718c-1.8422 0-3.3251-1.5342-3.3251-3.44v-7.9368c0-1.9058 1.483-3.44 3.3251-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3097 1.0583c-1.8657 0-3.3751 1.5383-3.3751 3.439v8.4675c0 1.9007 1.57 3.439 3.4357 3.439h8.1996c1.8657 0 3.4274-1.5383 3.4274-3.439v-8.4675c0-1.9007-1.51-3.439-3.3756-3.439h-0.09688c1.794 0.086515 3.2138 1.5819 3.2138 3.4318v7.9368c0 1.9058-1.5059 3.44-3.3766 3.44h-7.7905c-1.8707 0-3.3766-1.5342-3.3766-3.44v-7.9368c0-1.8498 1.4199-3.3451 3.2138-3.4318z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path transform="scale(.26458)" d="m4 46.969v2.0312c0 6.6479 5.8957 12 12.544 12h30.961c6.6479 0 12.495-5.3521 12.495-12v-1.9922c-0.02117 7.1849-5.81 12.963-13 12.963h-29.998c-7.2032 0-13.002-5.7987-13.002-13.002z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m1.0583 11.906v0.59234c0 1.9386 1.5729 3.4993 3.3318 3.4993h8.1603c1.7589 0 3.3243-1.5608 3.3243-3.4993v-0.58095c-0.0056 2.0952-1.5372 3.7801-3.4395 3.7801h-7.9368c-1.9058 0-3.44-1.691-3.44-3.7915z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".05" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</g>
<rect x="22.582" y="1.058" width="14.817" height="14.817" ry="3.175" fill="url(#linearGradient968)"/>
<path d="m29.951 1.0583v7.3684h-7.3684v0.07958h7.3684v7.3684h0.07958v-7.3684h7.3684v-0.07958h-7.3684v-7.3684z" opacity=".5" stroke-linecap="round" stroke-linejoin="round" stroke-width=".57966"/>
<path d="m25.758 15.875c-1.759 0-3.1749-1.416-3.1749-3.1749v-0.27285c0 1.759 1.416 3.1749 3.1749 3.1749h8.467c1.759 0 3.1749-1.416 3.1749-3.1749v0.27285c0 1.759-1.416 3.1749-3.1749 3.1749z" opacity=".25"/>
<circle cx="33.695" cy="12.171" r="4.7624" fill="url(#radialGradient966)" stroke-width="1.125"/>
<circle cx="33.695" cy="11.906" r="4.2333" fill="url(#linearGradient964)"/>
<path d="m26.683 4.4104c-0.07329 0-0.13229 0.059001-0.13229 0.13229v0.92603h-0.92603c-0.07329 0-0.13229 0.059001-0.13229 0.13229s0.059 0.13229 0.13229 0.13229h0.92603v0.92603c0 0.073289 0.059 0.13229 0.13229 0.13229s0.13229-0.059001 0.13229-0.13229v-0.92603h0.92603c0.07329 0 0.13229-0.059001 0.13229-0.13229s-0.059-0.13229-0.13229-0.13229h-0.92603v-0.92603c0-0.073289-0.059-0.13229-0.13229-0.13229z" opacity=".15" stroke-width=".26458"/>
<path d="m34.488 5.601c0 0.073288-0.059 0.13229-0.13229 0.13229h-2.1166c-0.07329 0-0.13229-0.059001-0.13229-0.13229 0-0.073288 0.059-0.13229 0.13229-0.13229h2.1166c0.07329 0 0.13229 0.059001 0.13229 0.13229z" opacity=".15"/>
<path d="m27.525 10.977c-0.05182-0.05182-0.13526-0.05182-0.18708 0l-0.6548 0.6548-0.6548-0.6548c-0.05182-0.05182-0.13526-0.05182-0.18708 0s-0.05182 0.13526 0 0.18708l0.6548 0.6548-0.6548 0.6548c-0.05182 0.05182-0.05182 0.13526 0 0.18708s0.13526 0.05182 0.18708 0l0.6548-0.6548 0.6548 0.6548c0.05182 0.05182 0.13526 0.05182 0.18708 0s0.05182-0.13526 0-0.18708l-0.6548-0.6548 0.6548-0.6548c0.05182-0.05182 0.05182-0.13526 0-0.18708z" opacity=".15"/>
<g fill="#fff">
<path d="m26.683 4.2333c-0.07329 0-0.13229 0.059001-0.13229 0.13229v0.92603h-0.92603c-0.07329 0-0.13229 0.059001-0.13229 0.13229s0.059 0.13229 0.13229 0.13229h0.92603v0.92603c0 0.073289 0.059 0.13229 0.13229 0.13229s0.13229-0.059001 0.13229-0.13229v-0.92603h0.92603c0.07329 0 0.13229-0.059001 0.13229-0.13229s-0.059-0.13229-0.13229-0.13229h-0.92603v-0.92603c0-0.073289-0.059-0.13229-0.13229-0.13229z" stroke-width=".26458"/>
<path d="m34.488 5.4239c0 0.073288-0.059 0.13229-0.13229 0.13229h-2.1166c-0.07329 0-0.13229-0.059001-0.13229-0.13229 0-0.073288 0.059-0.13229 0.13229-0.13229h2.1166c0.07329 0 0.13229 0.059001 0.13229 0.13229z"/>
<path d="m27.525 10.8c-0.05182-0.05182-0.13526-0.05182-0.18708 0l-0.6548 0.6548-0.6548-0.6548c-0.05182-0.05182-0.13526-0.05182-0.18708 0s-0.05182 0.13526 0 0.18708l0.6548 0.6548-0.6548 0.6548c-0.05182 0.05182-0.05182 0.13526 0 0.18708s0.13526 0.05182 0.18708 0l0.6548-0.6548 0.6548 0.6548c0.05182 0.05182 0.13526 0.05182 0.18708 0s0.05182-0.13526 0-0.18708l-0.6548-0.6548 0.6548-0.6548c0.05182-0.05182 0.05182-0.13526 0-0.18708z"/>
</g>
<path d="m35.017 11.378c0 0.07329-0.06555 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06555-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" opacity=".15" stroke-width="1.0541"/>
<path d="m35.017 12.7c0 0.07329-0.06555 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06555-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" opacity=".15" stroke-width="1.0541"/>
<g fill="#fff">
<path d="m35.017 11.245c0 0.07329-0.06556 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06556-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" stroke-width="1.0541"/>
<path d="m35.017 12.567c0 0.07329-0.06556 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06556-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" stroke-width="1.0541"/>
<path d="m25.757 1.0583c-1.759 0-3.1749 1.416-3.1749 3.1749v0.27285c0-1.759 1.416-3.1749 3.1749-3.1749h8.467c1.759 0 3.1749 1.416 3.1749 3.1749v-0.27285c0-1.759-1.416-3.1749-3.1749-3.1749z" opacity=".1"/>
<path d="m33.695 7.6728a4.2333 4.2333 0 0 0-4.2333 4.2333 4.2333 4.2333 0 0 0 0.0021 0.13126 4.2333 4.2333 0 0 1 4.2312-4.0999 4.2333 4.2333 0 0 1 4.2312 4.0973 4.2333 4.2333 0 0 0 0.0021-0.12867 4.2333 4.2333 0 0 0-4.2333-4.2333z" opacity=".05"/>
</g>
<path d="m33.695 16.139a4.2333 4.2333 0 0 1-4.2332-4.2332 4.2333 4.2333 0 0 1 0.0021-0.13126 4.2333 4.2333 0 0 0 4.2312 4.0999 4.2333 4.2333 0 0 0 4.2312-4.0973 4.2333 4.2333 0 0 1 0.0021 0.12867 4.2333 4.2333 0 0 1-4.2332 4.2332z" opacity=".15"/>
<g transform="translate(-43.314 -6e-5)">
<g transform="translate(43.314)" shape-rendering="auto">
<path d="m4.3693 0.52916c-2.1142 0-3.8402 1.7835-3.8402 3.9682v8.4675c0 2.1846 1.726 3.9682 3.8402 3.9682h8.1944c2.1142 0 3.8402-1.7835 3.8402-3.9682v-8.4675c0-2.1846-1.726-3.9682-3.8402-3.9682zm0.25704 0.52089h7.6808c1.8443 0 3.3291 1.5342 3.3291 3.44v7.9368c0 1.9058-1.4847 3.44-3.3291 3.44h-7.6808c-1.8443 0-3.3291-1.5342-3.3291-3.44v-7.9368c0-1.9058 1.4847-3.44 3.3291-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3587 0.79373c-1.9668 0-3.5639 1.6528-3.5639 3.6876v8.4996c0 2.0348 1.5971 3.6876 3.5639 3.6876h8.2162c1.9668 0 3.5644-1.6528 3.5644-3.6876v-8.4996c0-2.0348-1.5976-3.6876-3.5644-3.6876zm0.27222 0.25631h7.6718c1.8422 0 3.3251 1.5342 3.3251 3.44v7.9368c0 1.9058-1.483 3.44-3.3251 3.44h-7.6718c-1.8422 0-3.3251-1.5342-3.3251-3.44v-7.9368c0-1.9058 1.483-3.44 3.3251-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3097 1.0583c-1.8657 0-3.3751 1.5383-3.3751 3.439v8.4675c0 1.9007 1.57 3.439 3.4357 3.439h8.1996c1.8657 0 3.4274-1.5383 3.4274-3.439v-8.4675c0-1.9007-1.51-3.439-3.3756-3.439h-0.09688c1.794 0.086515 3.2138 1.5819 3.2138 3.4318v7.9368c0 1.9058-1.5059 3.44-3.3766 3.44h-7.7905c-1.8707 0-3.3766-1.5342-3.3766-3.44v-7.9368c0-1.8498 1.4199-3.3451 3.2138-3.4318z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path transform="scale(.26458)" d="m4 46.969v2.0312c0 6.6479 5.8957 12 12.544 12h30.961c6.6479 0 12.495-5.3521 12.495-12v-1.9922c-0.02117 7.1849-5.81 12.963-13 12.963h-29.998c-7.2032 0-13.002-5.7987-13.002-13.002z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m1.0583 11.906v0.59234c0 1.9386 1.5729 3.4993 3.3318 3.4993h8.1603c1.7589 0 3.3243-1.5608 3.3243-3.4993v-0.58095c-0.0056 2.0952-1.5372 3.7801-3.4395 3.7801h-7.9368c-1.9058 0-3.44-1.691-3.44-3.7915z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".05" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</g>
<rect x="44.372" y="1.058" width="14.817" height="14.817" rx="3.1753" ry="3.1753" fill="url(#linearGradient1499)"/>
<path d="m47.547 1.8521c-1.3192 0-2.3812 1.062-2.3812 2.3812v8.4666c0 1.3192 1.062 2.3812 2.3812 2.3812h4.2333v-5.027c0-0.87946 0.70802-1.5875 1.5875-1.5875h5.027v-4.2333c0-1.3192-1.062-2.3812-2.3812-2.3812z" fill="url(#linearGradient1102)" stroke-width=".26458"/>
<g transform="translate(43.314)" stroke-linecap="round" stroke-linejoin="round">
<rect x="4.2333" y="1.852" width="8.4665" height="1.5875" rx="0" ry="0" fill="url(#linearGradient1131)" opacity=".15" stroke-width=".57966"/>
<path transform="scale(.26458)" d="m15.99 7a9 9 0 0 0-8.9902 9h9v-9a9 9 0 0 0-0.0098 0z" fill="url(#radialGradient1146)" opacity=".15" stroke-width="2.5714"/>
<path d="m4.2307 15.081a2.3812 2.3812 0 0 1-2.3786-2.3812h2.3812v2.3812a2.3812 2.3812 0 0 1-0.00258 0z" fill="url(#radialGradient1152)" opacity=".15" stroke-width=".68034"/>
<rect transform="rotate(-90)" x="-12.7" y="1.852" width="8.4665" height="1.5875" rx="0" ry="0" fill="url(#linearGradient1156)" opacity=".15" stroke-width=".57966"/>
<rect transform="matrix(0,-1,-1,0,0,0)" x="-8.4665" y="-15.081" width="4.2333" height="1.5875" rx="0" ry="0" fill="url(#linearGradient1160)" opacity=".15" stroke-width=".40988"/>
<path d="m15.081 4.2307a2.3812 2.3812 0 0 0-2.3812-2.3786v2.3812h2.3812a2.3812 2.3812 0 0 0 0-0.0026z" fill="url(#radialGradient1164)" opacity=".15" stroke-width=".68034"/>
<rect transform="scale(1,-1)" x="4.2333" y="-15.081" width="4.2332" height="1.5875" rx="0" ry="0" fill="url(#linearGradient1168)" opacity=".15" stroke-width=".40988"/>
</g>
<g transform="translate(43.314)">
<path d="m5.1596 4.4104c-0.07329 0-0.13229 0.059001-0.13229 0.13229v0.92603h-0.92603c-0.07329 0-0.13229 0.059001-0.13229 0.13229s0.059 0.13229 0.13229 0.13229h0.92603v0.92603c0 0.073289 0.059 0.13229 0.13229 0.13229s0.13229-0.059001 0.13229-0.13229v-0.92603h0.92603c0.07329 0 0.13229-0.059001 0.13229-0.13229s-0.059-0.13229-0.13229-0.13229h-0.92603v-0.92603c0-0.073289-0.059-0.13229-0.13229-0.13229z" opacity=".15" stroke-width=".26458"/>
<path d="m12.964 5.601c0 0.073288-0.059 0.13229-0.13229 0.13229h-2.1166c-0.07329 0-0.13229-0.059001-0.13229-0.13229 0-0.073288 0.059-0.13229 0.13229-0.13229h2.1166c0.07329 0 0.13229 0.059001 0.13229 0.13229z" opacity=".15"/>
<path d="m6.0015 10.977c-0.05182-0.05182-0.13526-0.05182-0.18708 0l-0.6548 0.6548-0.6548-0.6548c-0.05182-0.05182-0.13526-0.05182-0.18708 0s-0.05182 0.13526 0 0.18708l0.6548 0.6548-0.6548 0.6548c-0.05182 0.05182-0.05182 0.13526 0 0.18708s0.13526 0.05182 0.18708 0l0.6548-0.6548 0.6548 0.6548c0.05182 0.05182 0.13526 0.05182 0.18708 0s0.05182-0.13526 0-0.18708l-0.6548-0.6548 0.6548-0.6548c0.05182-0.05182 0.05182-0.13526 0-0.18708z" opacity=".15"/>
<g fill="#fff">
<path d="m5.1596 4.2333c-0.07329 0-0.13229 0.059001-0.13229 0.13229v0.92603h-0.92603c-0.07329 0-0.13229 0.059001-0.13229 0.13229s0.059 0.13229 0.13229 0.13229h0.92603v0.92603c0 0.073289 0.059 0.13229 0.13229 0.13229s0.13229-0.059001 0.13229-0.13229v-0.92603h0.92603c0.07329 0 0.13229-0.059001 0.13229-0.13229s-0.059-0.13229-0.13229-0.13229h-0.92603v-0.92603c0-0.073289-0.059-0.13229-0.13229-0.13229z" stroke-width=".26458"/>
<path d="m12.964 5.4239c0 0.073288-0.059 0.13229-0.13229 0.13229h-2.1166c-0.07329 0-0.13229-0.059001-0.13229-0.13229 0-0.073288 0.059-0.13229 0.13229-0.13229h2.1166c0.07329 0 0.13229 0.059001 0.13229 0.13229z"/>
<path d="m6.0015 10.8c-0.05182-0.05182-0.13526-0.05182-0.18708 0l-0.6548 0.6548-0.6548-0.6548c-0.05182-0.05182-0.13526-0.05182-0.18708 0s-0.05182 0.13526 0 0.18708l0.6548 0.6548-0.6548 0.6548c-0.05182 0.05182-0.05182 0.13526 0 0.18708s0.13526 0.05182 0.18708 0l0.6548-0.6548 0.6548 0.6548c0.05182 0.05182 0.13526 0.05182 0.18708 0s0.05182-0.13526 0-0.18708l-0.6548-0.6548 0.6548-0.6548c0.05182-0.05182 0.05182-0.13526 0-0.18708z"/>
</g>
<g stroke-width="1.0541">
<path d="m13.229 11.378c0 0.07329-0.06555 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06555-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" opacity=".15"/>
<path d="m13.229 12.7c0 0.07329-0.06555 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06555-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" opacity=".15"/>
<path d="m13.229 11.245c0 0.07329-0.06556 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06556-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" fill="#fff"/>
<path d="m13.229 12.567c0 0.07329-0.06556 0.13229-0.14699 0.13229h-2.3518c-0.08143 0-0.14699-0.059-0.14699-0.13229s0.06556-0.13229 0.14699-0.13229h2.3518c0.08143 0 0.14699 0.059 0.14699 0.13229z" fill="#fff"/>
</g>
</g>
<path d="m53.368 8.202c-1.026 0-1.8521 0.82602-1.8521 1.8521v5.027h0.26458v-5.027c0-0.87946 0.70802-1.5875 1.5875-1.5875h5.027v-0.26458z" opacity=".1" stroke-linecap="round" stroke-linejoin="round" stroke-width=".52916"/>
</g>
<g transform="translate(41.424)">
<g transform="translate(0,-6e-5)" shape-rendering="auto">
<path d="m4.3693 0.52916c-2.1142 0-3.8402 1.7835-3.8402 3.9682v8.4675c0 2.1846 1.726 3.9682 3.8402 3.9682h8.1944c2.1142 0 3.8402-1.7835 3.8402-3.9682v-8.4675c0-2.1846-1.726-3.9682-3.8402-3.9682zm0.25704 0.52089h7.6808c1.8443 0 3.3291 1.5342 3.3291 3.44v7.9368c0 1.9058-1.4847 3.44-3.3291 3.44h-7.6808c-1.8443 0-3.3291-1.5342-3.3291-3.44v-7.9368c0-1.9058 1.4847-3.44 3.3291-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3587 0.79373c-1.9668 0-3.5639 1.6528-3.5639 3.6876v8.4996c0 2.0348 1.5971 3.6876 3.5639 3.6876h8.2162c1.9668 0 3.5644-1.6528 3.5644-3.6876v-8.4996c0-2.0348-1.5976-3.6876-3.5644-3.6876zm0.27222 0.25631h7.6718c1.8422 0 3.3251 1.5342 3.3251 3.44v7.9368c0 1.9058-1.483 3.44-3.3251 3.44h-7.6718c-1.8422 0-3.3251-1.5342-3.3251-3.44v-7.9368c0-1.9058 1.483-3.44 3.3251-3.44z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".01" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m4.3097 1.0583c-1.8657 0-3.3751 1.5383-3.3751 3.439v8.4675c0 1.9007 1.57 3.439 3.4357 3.439h8.1996c1.8657 0 3.4274-1.5383 3.4274-3.439v-8.4675c0-1.9007-1.51-3.439-3.3756-3.439h-0.09688c1.794 0.086515 3.2138 1.5819 3.2138 3.4318v7.9368c0 1.9058-1.5059 3.44-3.3766 3.44h-7.7905c-1.8707 0-3.3766-1.5342-3.3766-3.44v-7.9368c0-1.8498 1.4199-3.3451 3.2138-3.4318z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path transform="scale(.26458)" d="m4 46.969v2.0312c0 6.6479 5.8957 12 12.544 12h30.961c6.6479 0 12.495-5.3521 12.495-12v-1.9922c-0.02117 7.1849-5.81 12.963-13 12.963h-29.998c-7.2032 0-13.002-5.7987-13.002-13.002z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".03" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
<path d="m1.0583 11.906v0.59234c0 1.9386 1.5729 3.4993 3.3318 3.4993h8.1603c1.7589 0 3.3243-1.5608 3.3243-3.4993v-0.58095c-0.0056 2.0952-1.5372 3.7801-3.4395 3.7801h-7.9368c-1.9058 0-3.44-1.691-3.44-3.7915z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" opacity=".05" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</g>
<rect x="1.0583" y="1.05" width="14.817" height="14.817" ry="3.175" fill="url(#linearGradient1249)"/>
<path d="m6.0853 3.7041h4.7624c0.73288 0 1.3229 0.59001 1.3229 1.3229v7.9373c0 0.73288-0.59001 1.3229-1.3229 1.3229h-4.7624c-0.73288 0-1.3229-0.59001-1.3229-1.3229v-7.9373c0-0.73288 0.59001-1.3229 1.3229-1.3229z" filter="url(#filter1411)" opacity=".5"/>
<path transform="scale(.26458)" d="m23 12c-2.77 0-5 2.23-5 5v30c0 2.77 2.23 5 5 5h18v-11.301h5v-23.699c0-2.77-2.23-5-5-5zm23 35c0 0.31939-0.03309 0.62934-0.08984 0.93164 0.056602-0.30219 0.08984-0.61254 0.08984-0.93164zm-0.09961 0.99219c-0.01636 0.08158-0.05006 0.15627-0.07031 0.23633 0.02027-0.08029 0.05396-0.15452 0.07031-0.23633zm-0.28516 0.93164c-0.04728 0.11361-0.11468 0.21509-0.16992 0.32422 0.05521-0.10928 0.12267-0.21046 0.16992-0.32422zm-0.4375 0.82227c-0.09802 0.14882-0.21709 0.28092-0.33008 0.41797 0.11295-0.13733 0.23211-0.26886 0.33008-0.41797zm-0.58203 0.72461c-0.12833 0.1326-0.27368 0.24752-0.41602 0.36524 0.14249-0.11814 0.28759-0.23217 0.41602-0.36524zm-0.71484 0.61133c-0.15345 0.108-0.32072 0.19466-0.48633 0.28516 0.16565-0.09077 0.33286-0.17684 0.48633-0.28516zm-0.81445 0.46289c-0.17031 0.07702-0.35128 0.13348-0.53125 0.19141 0.18044-0.05821 0.36054-0.11396 0.53125-0.19141zm-0.91406 0.30859c-0.27895 0.06548-0.5643 0.11579-0.85938 0.13281 0.29536-0.01703 0.58022-0.0671 0.85938-0.13281z" fill="url(#linearGradient4687)" stroke-width="3.7796"/>
<g fill="#fff" stroke-linecap="square">
<g stroke-width=".28983">
<rect x="4.7624" y="6.0059" width="7.4082" height=".079373" rx="0" ry="0" opacity=".15"/>
<rect x="4.7624" y="7.5934" width="7.4082" height=".079373" rx="0" ry="0" opacity=".15"/>
<rect x="4.7624" y="9.1809" width="7.4082" height=".079373" rx="0" ry="0" opacity=".15"/>
<rect x="4.7624" y="10.768" width="7.4082" height=".079373" rx="0" ry="0" opacity=".15"/>
</g>
<rect x="4.7624" y="12.356" width="6.0853" height=".079373" rx="0" ry="0" opacity=".15" stroke-width=".26268"/>
</g>
<path transform="scale(.26458)" d="m41 40.7 1e-6 11.3 0.28711-0.01367c2.6344-0.1489 4.7129-2.3135 4.7129-4.9863l0.0085-6.3z" fill="url(#linearGradient1090)" stroke-linecap="square" stroke-width="2"/>
<g fill="#fff">
<g stroke-linecap="square">
<g stroke-width="1.0272">
<rect x="10.848" y="6.0853" width=".079373" height="7.6728" rx="0" ry="0" opacity=".15"/>
<rect x="9.2602" y="6.0853" width=".079373" height="7.6728" rx="0" ry="0" opacity=".15"/>
<rect x="7.6728" y="6.0853" width=".079373" height="7.6728" rx="0" ry="0" opacity=".15"/>
<rect x="6.0853" y="6.0853" width=".079373" height="7.6728" rx="0" ry="0" opacity=".15"/>
</g>
<rect x="4.7624" y="6.0853" width="7.4082" height="3.0956" rx="0" ry="0" opacity=".05" stroke-width="1.7916"/>
<path transform="scale(.26458)" d="m35.301 35v17h5.6992v-11h5v-6z" opacity=".05" stroke-width="5.0458"/>
</g>
<g stroke-width=".027039">
<g transform="matrix(.66656 0 0 .66656 1.7688 3.3453)" aria-label="1">
<path d="m5.4419 10.44h-0.060567v-0.5743q0-0.046507 0-0.075709 0.00108-0.030283 0.00216-0.057322-0.015142 0.015142-0.029202 0.025957-0.012979 0.010815-0.033528 0.027039l-0.10707 0.08328-0.033528-0.043262 0.20982-0.15791h0.051914z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66656 0 0 .66656 2.2704 3.3524)" aria-label="2">
<path d="m7.1585 10.445h-0.48886v-0.05191l0.22172-0.23037q0.055159-0.05732 0.093013-0.10275 0.037854-0.04542 0.057322-0.09085 0.019468-0.045425 0.019468-0.10167 0-0.072464-0.04218-0.1114-0.04218-0.040017-0.11356-0.040017-0.051914 0-0.097339 0.018386t-0.089769 0.052996l-0.033528-0.043262q0.047588-0.038936 0.10383-0.060567 0.056241-0.021631 0.11681-0.021631 0.099503 0 0.15899 0.055159 0.060567 0.055159 0.060567 0.14709 0 0.06273-0.022712 0.11464-0.022713 0.051914-0.063811 0.10167-0.041099 0.04975-0.096258 0.10599l-0.1936 0.19901v0.0022h0.40991z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66656 0 0 .66656 2.8336 3.3524)" aria-label="3">
<path d="m8.7211 9.8464q0 0.07679-0.045425 0.12546-0.045425 0.04867-0.11681 0.061649v0.0032q0.18603 0.02488 0.18603 0.18819 0 0.0995-0.070301 0.16331-0.069219 0.06273-0.2109 0.06273-0.1233 0-0.21415-0.04434v-0.05949q0.044344 0.02271 0.10167 0.03677 0.057322 0.01298 0.11356 0.01298 0.11032 0 0.16223-0.04651 0.052996-0.04651 0.052996-0.12654 0-0.08436-0.06273-0.12005-0.06273-0.03677-0.16764-0.03677h-0.082198v-0.05408h0.083279q0.089769 0 0.14817-0.041099 0.058404-0.042181 0.058404-0.12222 0-0.068138-0.044343-0.10383-0.044344-0.035691-0.11789-0.035691-0.061648 0-0.1114 0.019468-0.04867 0.018386-0.096258 0.050833l-0.031365-0.043262q0.044344-0.03461 0.10383-0.057322 0.060567-0.022713 0.13519-0.022713 0.10707 0 0.16656 0.051914 0.059485 0.050833 0.059485 0.13736z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66126 0 0 .66126 1.852 3.9475)" aria-label="4">
<path d="m5.6777 11.835h-0.1287v0.19252h-0.059485v-0.19252h-0.38828v-0.05083l0.38395-0.53321h0.063811v0.5278h0.1287zm-0.18819-0.05624v-0.28661q0-0.04218 0-0.07138t0.00108-0.05191q0.00108-0.02379 0.00216-0.04975h-0.00324q-0.01406 0.02488-0.027039 0.04651t-0.031365 0.04651l-0.2639 0.36665z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66126 0 0 .66126 2.3278 3.942)" aria-label="5">
<path d="m6.9087 11.566q0.11681 0 0.18495 0.05949 0.069219 0.0584 0.069219 0.16656 0 0.11789-0.075709 0.18494-0.075709 0.06706-0.20441 0.06706-0.061648 0-0.11248-0.0119-0.049751-0.0119-0.084361-0.03245v-0.06057q0.036773 0.02271 0.088687 0.03677 0.052996 0.01406 0.10816 0.01406 0.09734 0 0.15682-0.04867 0.060567-0.04975 0.060567-0.14385 0-0.08436-0.051914-0.13087-0.050833-0.04759-0.15574-0.04759-0.040017 0-0.080035 0.0065-0.038936 0.0065-0.070301 0.01406l-0.03461-0.02271 0.031365-0.35583h0.37422v0.05624h-0.32122l-0.022712 0.26498q0.022712-0.0043 0.057322-0.0097 0.03461-0.0065 0.082198-0.0065z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66126 0 0 .66126 2.8305 3.9455)" aria-label="6 ">
<path d="m8.2669 11.699q0-0.13844 0.03461-0.2401 0.03461-0.10275 0.10924-0.15899 0.075709-0.05624 0.19468-0.05624 0.058404 0 0.10058 0.0119v0.05516q-0.042181-0.01514-0.099503-0.01514-0.13952 0-0.20658 0.09409-0.067056 0.09409-0.072464 0.26714h0.00433q0.022713-0.0411 0.072464-0.07463 0.050833-0.03353 0.13195-0.03353 0.10383 0 0.1644 0.06273 0.060567 0.06165 0.060567 0.1698 0 0.11681-0.063811 0.18711-0.06273 0.0703-0.17413 0.0703-0.083279 0-0.1406-0.04326-0.057322-0.04434-0.086524-0.12005-0.029202-0.07679-0.029202-0.17629zm0.25525 0.28553q0.083279 0 0.12979-0.05192 0.047588-0.05191 0.047588-0.15142 0-0.08436-0.043262-0.13303t-0.12979-0.04867q-0.059485 0-0.10383 0.02487-0.043262 0.0238-0.067056 0.05949t-0.023794 0.0703 0.00973 0.07463q0.00973 0.03894 0.031365 0.07463 0.022713 0.03569 0.059485 0.0584 0.036773 0.02271 0.089769 0.02271z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66221 0 0 .66221 1.9296 4.3853)" aria-label="7">
<path d="m5.2494 13.477 0.31906-0.71599h-0.43695v-0.05624h0.504v0.04542l-0.31798 0.7268z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66221 0 0 .66221 2.2947 4.3582)" aria-label="8">
<path d="m6.9184 12.7q0.099503 0 0.16007 0.04759 0.061648 0.04651 0.061648 0.13303 0 0.0703-0.046507 0.11573-0.045425 0.04434-0.11573 0.07571 0.083279 0.03353 0.13519 0.08328 0.052996 0.04867 0.052996 0.12979 0 0.06597-0.032446 0.11248-0.031365 0.04651-0.087606 0.07138t-0.12762 0.02487q-0.11356 0-0.17954-0.05516-0.065975-0.05516-0.065975-0.14925 0-0.08328 0.050833-0.13303 0.051914-0.05083 0.12979-0.08112-0.043262-0.02055-0.078953-0.04542-0.035691-0.02596-0.056241-0.06165-0.020549-0.03677-0.020549-0.08761 0-0.05624 0.02812-0.09626 0.02812-0.0411 0.077872-0.06273 0.050833-0.02163 0.11464-0.02163zm0 0.05191q-0.070301 0-0.11573 0.03461-0.044344 0.03353-0.044344 0.09626 0 0.06489 0.045425 0.10167 0.046507 0.03569 0.11897 0.06273 0.072464-0.03028 0.11356-0.06706 0.042181-0.03677 0.042181-0.09842 0-0.06381-0.043262-0.09626-0.043262-0.03353-0.11681-0.03353zm-0.18495 0.53861q0 0.06814 0.047588 0.11032 0.04867 0.0411 0.13628 0.0411 0.085443 0 0.13628-0.0411 0.050833-0.0411 0.050833-0.11573 0-0.06273-0.045425-0.10383-0.044344-0.0411-0.12546-0.07138l-0.023794-0.0087q-0.078953 0.03028-0.12762 0.07354-0.04867 0.04218-0.04867 0.11573z" fill="#fff" stroke-width=".027039"/>
</g>
<g transform="matrix(.66221 0 0 .66221 2.8334 4.3338)" aria-label="9">
<path d="m8.7514 13.033q0 0.13844-0.035691 0.24119-0.03461 0.10167-0.10924 0.15899-0.074627 0.05624-0.1936 0.05624-0.027039 0-0.057322-0.0032t-0.049751-0.0097v-0.05516q0.019468 0.0065 0.047588 0.01081 0.029202 0.0043 0.058404 0.0043 0.13844 0 0.20549-0.09409 0.068138-0.09409 0.072464-0.26714h-0.00433q-0.022713 0.04218-0.073545 0.07571-0.050833 0.03353-0.13195 0.03353-0.10383 0-0.16331-0.06165-0.059485-0.06273-0.059485-0.17197 0-0.11681 0.063811-0.18603 0.063811-0.0703 0.17521-0.0703 0.083279 0 0.13952 0.04326 0.057322 0.04326 0.086524 0.12005 0.029202 0.07571 0.029202 0.17521zm-0.25525-0.28553q-0.083279 0-0.13087 0.053-0.046507 0.05191-0.046507 0.14925 0 0.08544 0.04218 0.13519 0.04218 0.04867 0.12979 0.04867 0.060567 0 0.10383-0.02379 0.044344-0.02487 0.068138-0.06057 0.023794-0.03677 0.023794-0.07246 0-0.03245-0.010815-0.07138-0.00973-0.04002-0.031365-0.07571-0.021631-0.03569-0.058404-0.0584-0.036773-0.02379-0.089769-0.02379z" fill="#fff" stroke-width=".027039"/>
</g>
</g>
<rect x="11.292" y="11.906" width=".52916" height=".079373" rx="0" ry="0" stroke-linecap="square" stroke-width=".40286"/>
<rect x="11.292" y="12.171" width=".52916" height=".079373" rx="0" ry="0" stroke-linecap="square" stroke-width=".40286"/>
</g>
<text x="6.5299749" y="5.5413179" fill="#ffffff" font-family="Cantarell" font-size="1.4822px" font-weight="300" letter-spacing="0px" stroke-width=".037056" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="6.5299749" y="5.5413179" fill="#ffffff" font-family="Cantarell" font-weight="300" stroke-width=".037056">3.14159</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkWindow" id="window">
<property name="can-focus">False</property>
<property name="default-width">440</property>
<property name="default-height">260</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Input expression to calculate:</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_ans">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<!-- n-columns=5 n-rows=5 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="row-homogeneous">True</property>
<property name="column-homogeneous">True</property>
<child>
<object class="GtkButton" id="btn7">
<property name="label" translatable="yes">7</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn8">
<property name="label" translatable="yes">8</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn9">
<property name="label" translatable="yes">9</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnadd">
<property name="label" translatable="yes">+</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn4">
<property name="label" translatable="yes">4</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn5">
<property name="label" translatable="yes">5</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn6">
<property name="label" translatable="yes">6</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnsubb">
<property name="label" translatable="yes">-</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn1">
<property name="label" translatable="yes">1</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn2">
<property name="label" translatable="yes">2</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn3">
<property name="label" translatable="yes">3</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnmul">
<property name="label" translatable="yes">*</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnleft">
<property name="label" translatable="yes">(</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn0">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnright">
<property name="label" translatable="yes">)</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btndiv">
<property name="label" translatable="yes">/</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnback">
<property name="label" translatable="yes">BackSpace</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">4</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnclear">
<property name="label" translatable="yes">CE</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">4</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnanswer">
<property name="label" translatable="yes">=</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">4</property>
<property name="top-attach">2</property>
<property name="height">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnpoint">
<property name="label" translatable="yes">.</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnsqrt">
<property name="label" translatable="yes">sqrt(x)</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnpow">
<property name="label" translatable="yes">x^2</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View File

@ -0,0 +1,119 @@
#include "MyWin.hh"
#include "calc.hh"
#include <iostream>
MyWin::MyWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
: Gtk::Window(cobject),
ref_builder(ref_Glade),
winned(true)
{
set_icon_name("calcapp");
set_title("Calculator");
// Get Widgets
//ref_builder->get_widget("label_numbers", label_numbers);
ref_builder->get_widget("entry_ans", entry_ans);
ref_builder->get_widget("btnanswer", btnanswer);
ref_builder->get_widget("btnback",btnback);
ref_builder->get_widget("btnclear",btnclear);
ref_builder->get_widget("btn0", btns[0]);
ref_builder->get_widget("btn1", btns[1]);
ref_builder->get_widget("btn2", btns[2]);
ref_builder->get_widget("btn3", btns[3]);
ref_builder->get_widget("btn4", btns[4]);
ref_builder->get_widget("btn5", btns[5]);
ref_builder->get_widget("btn6", btns[6]);
ref_builder->get_widget("btn7", btns[7]);
ref_builder->get_widget("btn8", btns[8]);
ref_builder->get_widget("btn9", btns[9]);
ref_builder->get_widget("btnadd", btns[10]);
ref_builder->get_widget("btnsubb", btns[11]);
ref_builder->get_widget("btnmul", btns[12]);
ref_builder->get_widget("btndiv", btns[13]);
ref_builder->get_widget("btnleft", btns[14]);
ref_builder->get_widget("btnright", btns[15]);
// Link Signals
btnclear->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnclear_clicked));
btnback->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnback_clicked));
btnanswer->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnanswer_clicked));
for (int i = 0; i < 16; i++)
{
btns[i]->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &MyWin::btns_clicked), btns[i]));
}
entry_ans->signal_grab_focus().connect(sigc::mem_fun(*this, &MyWin::entry_ans_focus));
}
void MyWin::btns_clicked(Gtk::Button *button)
{
// Get Original text and add number from button
// 1.Get text buffer for insert
auto buffer = entry_ans->get_buffer();
// 2.Get text to insert
Glib::ustring label = button->get_label();
if (focused)
{
pos = entry_ans->get_position();
}
// 3.Get Position
buffer->insert_text(pos, label);
pos++;
focused = false;
}
void MyWin::entry_ans_focus()
{
focused = true;
}
void MyWin::btnclear_clicked(){
// Clear the text
entry_ans->set_text("");
}
void MyWin::btnback_clicked(){
// Get Original text and add number from button
// 1.Get text buffer for insert
auto buffer = entry_ans->get_buffer();
// 2.Get Position to delete
if (focused)
{
pos = entry_ans->get_position();
}
// std::cout<<pos<<std::endl;
pos--;
// 3.Delete text in the position of cursor
buffer->delete_text(pos,1);
focused = false;
}
void MyWin::btnanswer_clicked(){
// Get expression
Glib::ustring text = entry_ans->get_text();
//std::cout<<text<<std::endl;
// Calculation
calc_reset();
int result = calc_expression_value(text.c_str());
char result_str[40];
sprintf(result_str,"%d",result);
entry_ans->set_text(Glib::ustring(result_str));
}
MyWin *MyWin::create()
{
// Create a new window
MyWin *window = nullptr;
auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/window.ui");
builder->get_widget_derived("window", window);
return window;
}

View File

@ -0,0 +1,30 @@
#pragma once
#include <gtkmm.h>
class MyWin : public Gtk::Window
{
public:
static MyWin *create();
MyWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
private:
// Main GtkBuilder
Glib::RefPtr<Gtk::Builder> ref_builder;
// Calculator Class
int pos;
bool focused, winned;
Glib::ustring tmp;
// Child widgets
Gtk::Entry *entry_ans;
Gtk::Button *btns[16], *btnback, *btnclear, *btnanswer;
// Signal Handlers
void btns_clicked(Gtk::Button *button);
void btnclear_clicked();
void btnback_clicked();
void btnanswer_clicked();
void entry_ans_focus();
};

View File

@ -0,0 +1,61 @@
#include <iostream>
#include <cstdlib>
#include <cstring>
#include "calc.hh"
static int pos = 0;
void calc_reset(){
pos = 0;
}
int calc_factor_value(const char * factor){
int result = 0;
char c = factor[pos];
if( c == '('){ // if expression has '(', calculate the expression in the '()'
pos++;
result = calc_expression_value(factor);
pos++;
}else{
while(isdigit(c)){ // Get the number to calculate
result = 10 * result + c - '0';
pos++;
c = factor[pos];
}
}
return result;
}
int calc_term_value(const char * term){
int result = calc_factor_value(term); // Get the first number
while(true){
//pos++; // Calc the multiplication and divide
char op = term[pos];
if(op == '*' || op == '/'){
pos++;
int value = calc_factor_value(term); // Get another value
if(op == '*') result *= value;
else result /= value;
}else{
break;
}
}
return result;
}
int calc_expression_value(const char * expression){
int result = calc_term_value(expression); // Calc the result of expression
//bool more = true;
while(true){
char op = expression[pos];
if(op == '+' || op == '-'){ // Calculate for add and subb
pos++;
int value = calc_term_value(expression);
if( op == '+') result += value;
else result -= value;
}else{
break;
}
}
return result;
}

View File

@ -0,0 +1,5 @@
#pragma once
int calc_expression_value(const char * expression);
void calc_reset();

View File

@ -0,0 +1,9 @@
#include "MyWin.hh"
int main(int argc,char **argv){
auto app = Gtk::Application::create(argc,argv,"org.gtk.daleclack");
auto window = MyWin::create();
return app->run(*window);
}