Merge pull request 'unback' (#2) from unback into master

Reviewed-on: YanTheKaller/ubl-settings-repomanager#2
pull/4/head
commit 4663ee8949

6
.gitignore vendored

@ -1,7 +1,11 @@
.vscode/
*#
ubl-settings-TEMPLATE
ubl-settings-repomanager
ubl-settings-repo-back/ubl-settings-repo-back
*~
build/
compile/
terminal-commands/
source/ubl-cmake.h
.BUILD.md
.updatebuild.sh

@ -8,23 +8,25 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH))
CMAKE_COMMAND = cmake
CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source
CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
#CMAKE_SOURCE_DIR = ./source
#CMAKE_BUILD_DIR = ./compile
FILE_VERSION = VERSION.md
DEPENDS = /bin/cmake
PREFIX ?= /usr
PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR)
#PKGNAME = ubl-settings-manager
FILE_VER = source/${PKGNAME}.h
default_target: all
.PHONY: all init depend debug prepare check build uninstall install clean up_ver help
.PHONY: all init depend debug prepare check build uninstall install clean help
all: init build
init:
@echo "Initialize ..."; \
sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-repomanager.h; \
if [ -d ".git" ]; then \
LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
else \
LATEST_TAG="Development"; \
fi; \
sed -r "s/^(string version_application).*/\1=\"$${LATEST_TAG}\";/" -i ${FILE_VER}; \
echo "-- Build path: ${CMAKE_BUILD_DIR}"
depend:
@ -35,8 +37,8 @@ depend:
exit 1; \
fi; \
done; \
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \
echo "Check depends: OK"
# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
debug:
@echo "Debug ..."
@ -63,7 +65,7 @@ check:
build: depend prepare
@echo "Build ..."; \
make --directory=${CMAKE_BUILD_DIR}; \
$(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \
echo "Build: OK"
uninstall:
@ -88,9 +90,13 @@ uninstall:
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.checked.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.warning.svg"
@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/${PKGNAME}-banner.png"
@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.document-green-symbolic.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.document-red-symbolic.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.document-symbolic.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.folder-symbolic.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.folder-green-symbolic.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.folder-red-symbolic.svg"
@$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \
@ -112,28 +118,29 @@ install: check uninstall
install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done
@install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -dm755 "${DESTDIR}/etc/xdg"
@install -dm755 "${DESTDIR}${PREFIX}/share/applications"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images}
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}-windows.glade"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css"
@install -dm755 -d "${DESTDIR}${PREFIX}/share/${PKGNAME}/images"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-symbolic.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-green-symbolic.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-red-symbolic.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-symbolic.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-green-symbolic.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-red-symbolic.svg"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \
[ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
fi
@echo "Install: OK"
@sed -r "s/^(string version_application=\"*\").*/string version_application;/" -i source/${PKGNAME}.h; \
clean:
@echo "Clean ..."
@ -144,14 +151,6 @@ clean:
echo "Clean: OK"; \
fi
up_ver:
@CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \
MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \
MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \
VER="$${MAJOR}.$$(($${MINOR}+1))"; \
sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \
echo "Updated version to VERSION.md: $${CURRENT} to $${VER}"
help:
@echo "The following are some of the valid targets for this Makefile:"; \
echo "... all (the default if no target is provided)"; \
@ -161,5 +160,4 @@ help:
echo "... compile"; \
echo "... install"; \
echo "... uninstall"; \
echo "... clean"; \
echo "... up_ver"
echo "... clean"

@ -1,7 +1,7 @@
# ubl-settings-repomanager
# Выполнить
# Build
In order to build ubl-settings-TEMPLATE you will need:
In order to build ubl-settings-repomanager you will need:
- CMake
- C compiler

@ -1 +0,0 @@
VERSION 1.0

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg216"
sodipodi:docname="com.ublinux.ubl-settings-repomanager.document-symbolic-green.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs220" />
<sodipodi:namedview
id="namedview218"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="32"
inkscape:cx="5.453125"
inkscape:cy="11.359375"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1">
<path
id="path210"
style="fill:#2e3436"
d="M 2 0 C 1.449219 0 1 0.449219 1 1 L 1 15 C 1 15.550781 1.449219 16 2 16 L 6 16 L 9.328125 16 A 4.7300909 4.7300909 0 0 1 7.9550781 14 L 6 14 L 3 14 L 3 2 L 10.585938 2 L 13 4.4140625 L 13 7.7128906 A 4.7300909 4.7300909 0 0 1 15 8.4550781 L 15 4 C 15 3.734375 14.894531 3.4804688 14.707031 3.2929688 L 11.707031 0.29296875 C 11.519531 0.10546875 11.265625 0 11 0 L 2 0 z " />
<rect
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
id="rect876"
width="7.7469039"
height="0.63823915"
x="4.0275102"
y="5.3000002" />
<path
id="rect876-3"
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
d="M 4.0273438 7.8007812 L 4.0273438 8.4375 L 9.8203125 8.4375 A 4.7300909 4.7300909 0 0 1 11.308594 7.8007812 L 4.0273438 7.8007812 z " />
<path
id="rect876-3-6"
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
d="M 4.0273438 10.300781 L 4.0273438 10.9375 L 7.9042969 10.9375 A 4.7300909 4.7300909 0 0 1 8.1660156 10.300781 L 4.0273438 10.300781 z " />
<path
id="path854"
class="success"
style="color:#00ff00;fill:#00ff00;stroke:none;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
d="M 15.998986,12.402457 A 3.6042156,3.6042156 0 0 1 12.39477,16.006673 3.6042156,3.6042156 0 0 1 8.7905531,12.402457 3.6042156,3.6042156 0 0 1 12.39477,8.7982404 3.6042156,3.6042156 0 0 1 15.998986,12.402457 Z" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg216"
sodipodi:docname="com.ublinux.ubl-settings-repomanager.document-symbolic-red.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs220" />
<sodipodi:namedview
id="namedview218"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="32"
inkscape:cx="5.453125"
inkscape:cy="11.359375"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1">
<path
id="path210"
style="fill:#2e3436"
d="M 2 0 C 1.449219 0 1 0.449219 1 1 L 1 15 C 1 15.550781 1.449219 16 2 16 L 6 16 L 9.328125 16 A 4.7300909 4.7300909 0 0 1 7.9550781 14 L 6 14 L 3 14 L 3 2 L 10.585938 2 L 13 4.4140625 L 13 7.7128906 A 4.7300909 4.7300909 0 0 1 15 8.4550781 L 15 4 C 15 3.734375 14.894531 3.4804688 14.707031 3.2929688 L 11.707031 0.29296875 C 11.519531 0.10546875 11.265625 0 11 0 L 2 0 z " />
<rect
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
id="rect876"
width="7.7469039"
height="0.63823915"
x="4.0275102"
y="5.3000002" />
<path
id="rect876-3"
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
d="M 4.0273438 7.8007812 L 4.0273438 8.4375 L 9.8203125 8.4375 A 4.7300909 4.7300909 0 0 1 11.308594 7.8007812 L 4.0273438 7.8007812 z " />
<path
id="rect876-3-6"
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
d="M 4.0273438 10.300781 L 4.0273438 10.9375 L 7.9042969 10.9375 A 4.7300909 4.7300909 0 0 1 8.1660156 10.300781 L 4.0273438 10.300781 z " />
<path
id="path854"
class="error"
style="fill:#ff2a2a;stroke:none;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
d="M 15.998986,12.402457 A 3.6042156,3.6042156 0 0 1 12.39477,16.006673 3.6042156,3.6042156 0 0 1 8.7905531,12.402457 3.6042156,3.6042156 0 0 1 12.39477,8.7982404 3.6042156,3.6042156 0 0 1 15.998986,12.402457 Z" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg216"
sodipodi:docname="com.ublinux.ubl-settings-repomanager.document.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs220" />
<sodipodi:namedview
id="namedview218"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="45.254834"
inkscape:cx="9.2807765"
inkscape:cy="7.3583299"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g214" />
<g
fill="#2e3436"
id="g214">
<path
d="M 1,1 C 1,0.449219 1.449219,0 2,0 h 9 c 0.265625,0 0.519531,0.105469 0.707031,0.292969 l 3,3 C 14.894531,3.480469 15,3.734375 15,4 v 11 c 0,0.550781 -0.449219,1 -1,1 h -4 v -2 h 3 V 4.414062 L 10.585938,2 H 3 v 12 h 3 v 2 H 2 C 1.449219,16 1,15.550781 1,15 Z m 5,13 h 4 v 2 H 6 Z"
fill-rule="evenodd"
id="path210"
sodipodi:nodetypes="sssssssscccccccccsssccccc" />
<rect
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
id="rect876"
width="7.7469039"
height="0.63823915"
x="4.0275102"
y="5.3000002" />
<rect
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
id="rect876-3"
width="7.7469039"
height="0.63823915"
x="4.0279999"
y="7.8000002" />
<rect
style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd"
id="rect876-3-6"
width="7.7469039"
height="0.63823915"
x="4.0279999"
y="10.3"
ry="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1 1a1 1 0 00-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h12s.459.014.947-.23C15.436 14.525 16 13.833 16 13V6H3v7H2V6s0-1 1-1h11v-.832A1 1 0 0013 3H8.414L6.707 1.293A1 1 0 006 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 834 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1 1a1 1 0 00-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h12s.459.014.947-.23C15.436 14.525 16 13.833 16 13V6H3v7H2V6s0-1 1-1h11v-.832A1 1 0 0013 3H8.414L6.707 1.293A1 1 0 006 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 834 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1 1a1 1 0 00-1 1v11s-.014.459.23.947C.476 14.436 1.168 15 2 15h12s.459.014.947-.23C15.436 14.525 16 13.833 16 13V6H3v7H2V6s0-1 1-1h11v-.832A1 1 0 0013 3H8.414L6.707 1.293A1 1 0 006 1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="#2e3436" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 834 B

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/com/ublinux/ui">
<file>ubl-settings-repomanager.glade</file>
<file>ubl-settings-repomanager-windows.glade</file>
</gresource>
<gresource prefix="/com/ublinux/css">
<file>ubl-settings-repomanager.css</file>
</gresource>
<gresource prefix="/com/ublinux/images">
<file>ubl-settings-repomanager-banner.png</file>
</gresource>
</gresources>

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

@ -8,6 +8,11 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
#pkg_check_modules(VTE291 REQUIRED vte-2.91)
#include_directories(${VTE291_INCLUDE_DIRS})
#link_directories(${VTE291_LIBRARY_DIRS})
#add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF)
@ -21,13 +26,49 @@ endif()
configure_file(ubl-cmake.in ubl-cmake.h)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)
set(GRESOURCE_C resources.c)
set(GRESOURCE_XML gresource.xml)
find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
add_custom_target(GLADE ubl-settings-repomanager.glade)
set(DEPENDFILES
../ubl-settings-repomanager.glade
../ubl-settings-repomanager-windows.glade
../gresource.xml
../ubl-settings-repomanager-banner.png
../ubl-settings-repomanager.css
)
file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(
OUTPUT ${GRESOURCE_C}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${GLIB_COMPILE_RESOURCES}
ARGS
--generate-source
--target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
${GRESOURCE_XML}
VERBATIM
MAIN_DEPENDENCY ${GRESOURCE_XML}
DEPENDS
${GLADE}
)
add_custom_target(
dummy-resource
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection -g")
-fstack-clash-protection -fcf-protection")
set(SOURCE_FILES
ubl-settings-repomanager.c
@ -35,15 +76,22 @@ set(SOURCE_FILES
ubl-strings.h
ubl-utils.h
ubl-utils.c
ubl-cmake.h)
${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
)
set(LIBRARIES
${GTK_LIBRARIES}
${WEBKIT_LIBRARIES}
# ${VTE291_LIBRARIES}
pthread)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
install(TARGETS ubl-settings-repomanager DESTINATION bin)
set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
PROPERTIES GENERATED TRUE
)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
add_dependencies(${PROJECT_NAME} dummy-resource)

@ -1 +0,0 @@
/home/superadmin/Документы/ubl-settings-repomanager/compile/ubl-cmake.h

@ -30,7 +30,7 @@ void yon_open_browser(GtkWidget *self, char *link){
*/
void on_open_documentation_confirmation(GtkWidget *self, char *link){
if (main_config.always_open_documentation==0){
GtkBuilder *builder = gtk_builder_new_from_file(glade_path);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
documentation_confirmation_window *widgets = malloc(sizeof(documentation_confirmation_window));
widgets->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow");
widgets->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton");
@ -84,7 +84,7 @@ void on_link(GtkWidget *self, char* uri, gpointer user_data){
* Присоединять к сигналу "activate" кнопки справки типа MenuItem.
*/
void on_about(){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
GtkBuilder *builder=gtk_builder_new_from_resource(glade_path);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic");
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
@ -98,44 +98,101 @@ void on_about(){
gtk_widget_show(window);
}
void on_tree_selection_changed(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
GtkTreeIter *iter=NULL;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,iter)){
char *codeName,*branch,*version,*architecture,*components,*signature,*ipAdress,*port;
int serverType=0,trusted=0,published=0;
gtk_tree_model_get(model,iter,3,&codeName,4,&branch,5,&version,6,&architecture,7,&components,8,&signature,9,&trusted,10,&serverType,11,&ipAdress,12,&port,13,published,-1);
// gtk_label_set_text(GTK_LABEL(widgets->srgbe),)
void on_save(){
char *command = "repo-manager";
char *remove_command=NULL;
char *add_command=NULL;
char *remove_flagged = NULL;
char *add_flagged = NULL;
char *origin_flagged = NULL;
char *name_flagged = NULL;
GtkTreeIter iter, childIter;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){
remove_flagged = NULL;
add_flagged = NULL;
int repostatus=0;
gboolean renamed=0;
char *old_name=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,1,&name_flagged,3,&origin_flagged,4,&repostatus,6,&old_name,7,&renamed,-1);
// if (!strstr(name_flagged,".db.tar.gz")) name_flagged = yon_char_append(name_flagged,".db.tar.gz");
remove_command = yon_char_unite(command," remove -d ", origin_flagged, " -r ", name_flagged, NULL);
add_command = yon_char_unite(command," add -d ", origin_flagged, " -r ", name_flagged, NULL);
int valid_child=gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter);
for (;valid_child;valid_child=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&childIter)){
int status = 0,deleted = 0;
char *path=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,3,&path,4,&status,5,&deleted,-1);
gtk_tree_store_set(main_config.tree_store,&childIter,4,0,5,0,-1);
if (status==-1) { remove_flagged = yon_char_unite(remove_flagged ? yon_char_append(remove_flagged,",") : " -p ",path,NULL); /*gtk_tree_store_remove(main_config.tree_store,&childIter);*/}
else if (status == 1&&deleted==0) { add_flagged = yon_char_unite(add_flagged ? yon_char_append(add_flagged,",") : " -p ",path,NULL);gtk_tree_store_set(main_config.tree_store,&childIter,0,"com.ublinux.ubl-settings-repomanager.document-symbolic",-1); }
}
if (origin_flagged)
remove_command = remove_flagged ? yon_char_unite(remove_command,remove_flagged,NULL) : NULL;
add_command = add_flagged ? yon_char_unite(add_command, add_flagged,NULL) : add_command;
printf("%s\n%s\n",remove_command,add_command);
if (remove_command) system(remove_command);
if (add_command) system(add_command);
}
}
int yon_add_branches(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, void *dct){
printf("%d\n",1);
dictionary *dict=(dictionary*)dct;
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*);
void on_search(GtkCellEditable *self, main_window *widgets){
GtkTreeIter iter, childIter;
char *name=NULL;
gtk_tree_model_get(model,iter,0,&name,-1);
if(name){
printf("%s\n",name);
GtkTreeIter ITER,iters;
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&ITER)){
gtk_tree_store_append(main_config.tree_store,&iters,&ITER);
gtk_tree_store_set(main_config.tree_store,&iters,1,name,-1);
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,1,&name,-1);
if (strstr(name,gtk_entry_get_text(GTK_ENTRY(widgets->Finder)))) {
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter);
return;
}
gtk_tree_view_expand_row(GTK_TREE_VIEW(widgets->RepoTree),gtk_tree_model_get_path(GTK_TREE_MODEL(main_config.tree_store),&iter),1);
int child_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter);
for (;child_valid;child_valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&childIter)){
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,1,&name,-1);
if (strstr(name,gtk_entry_get_text(GTK_ENTRY(widgets->Finder)))) {
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&childIter);
return;
}
}
gtk_tree_view_expand_row(GTK_TREE_VIEW(widgets->RepoTree),gtk_tree_model_get_path(GTK_TREE_MODEL(main_config.tree_store),&iter),0);
}
}
void on_tree_selection_changed(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
char *codeName=NULL,*version=NULL,*architecture=NULL;
int serverType=0,trusted=0,published=0;
gtk_tree_model_get(model,&iter,11,&codeName,12,&version,13,&architecture,-1);
gtk_label_set_text(GTK_LABEL(widgets->CodeNameInfoLabel),codeName ? codeName : "");
gtk_label_set_text(GTK_LABEL(widgets->VersionInfoLabel),version ? version : "");
gtk_label_set_text(GTK_LABEL(widgets->ArchitectureInfoLabel),architecture ? architecture : "");
}
return 0;
}
int yon_char_find_last(char *source, char find){
int size = strlen(source);
int i=size;
for (;source[i]!=find&&i>0;i--);
return i;
}
void on_repo_add_new(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*);
char *name = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)));
if (!window->path){ yon_ubl_status_box_render(CHOOSE_PATH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); return;}
char *name=NULL;
name = window->path;
window->path = yon_char_divide(name,yon_char_find_last(window->path, '/'));
if (!name||strcmp(name,"")!=0){
on_close_subwindow(self);
GtkTreeIter *iter = yon_repo_append(widgets, name, YON_REPO_LINE_REPO_TYPE);
gtk_tree_store_set(main_config.tree_store,iter,2,window->BranchesListStore,-1);
gtk_tree_model_foreach(GTK_TREE_MODEL(window->BranchesListStore),yon_add_branches,dict);
gtk_tree_store_set(main_config.tree_store,iter,0,"com.ublinux.ubl-settings-repomanager.folder-green-symbolic",2,window->BranchesListStore,3,window->path,-1);
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else {
yon_ubl_status_box_render(EMPTY_NAME_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
@ -156,28 +213,27 @@ void on_branch_add(GtkCellRendererText *self, char*path,char *new_text, repo_cre
}
}
char *on_choose_repo_folder(GtkWidget *self,repo_create_window *window){
GtkFileFilter *file_filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(file_filter,"*db.tar.gz");
GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser),file_filter);
int res = gtk_dialog_run(GTK_DIALOG(chooser));
if (res==GTK_RESPONSE_ACCEPT){
char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
window->path=yon_char_new(filename);
}
on_close_subwindow(chooser);
}
void on_repo_new (GtkWidget *self, main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path);
repo_create_window *window = new(repo_create_window);
window->Window=yon_gtk_builder_get_widget(builder,"repoCreateWindow");
window->NameEntry=yon_gtk_builder_get_widget(builder,"repoNameEntry");
window->CancelButton=yon_gtk_builder_get_widget(builder,"repoCancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"repoSaveButton");
window->BranchesTree=yon_gtk_builder_get_widget(builder,"curRepoEditTree");
window->BranchCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"branchTextCell"));
window->BranchesListStore=GTK_LIST_STORE(gtk_builder_get_object(builder,"curRepoEditList"));
gtk_widget_show(window->Window);
GtkTreeIter iter;
gtk_list_store_append(window->BranchesListStore,&iter);
dictionary *dict = yon_dictionary_create_with_data("",widgets);
dict = yon_dictionary_create_with_data_connected(dict,"",window);
GValue *val = g_malloc0(sizeof(GValue));
g_object_get_property(G_OBJECT(window->BranchCell),"placeholder-text",val);
g_value_set_string(val,TYPE_BRANCH_NAME_LABEL);
g_object_set_property(G_OBJECT(window->BranchCell),"placeholder-text",val);
g_signal_connect(G_OBJECT(window->BranchCell),"edited",G_CALLBACK(on_branch_add),window);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_repo_add_new),dict);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
window->path=NULL;
on_choose_repo_folder(self,window);
dictionary *dict = yon_dictionary_new_with_data("",widgets);
dict = yon_dictionary_append_with_data(dict,"",window);
on_repo_add_new(self,dict);
}
void on_repo_add_file(GtkWidget *self, main_window *widgets){
@ -196,7 +252,7 @@ void on_repo_configure(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_repo_path);
repo_create_window *window = new(repo_create_window);
window->Window=yon_gtk_builder_get_widget(builder,"repoEditWindow");
window->NameEntry=yon_gtk_builder_get_widget(builder,"repoEditNameEntry");
@ -205,31 +261,39 @@ void on_repo_configure(GtkWidget *self, main_window *widgets){
window->BranchesTree=yon_gtk_builder_get_widget(builder,"repoEditBranchTree");
window->BranchesListStore=GTK_LIST_STORE(gtk_builder_get_object(builder,"curRepoEditList"));
gtk_widget_show(window->Window);
dictionary *dict = yon_dictionary_create_with_data("",widgets);
dict = yon_dictionary_create_with_data_connected(dict,"",window);
dictionary *dict = yon_dictionary_new_with_data("",widgets);
dict = yon_dictionary_append_with_data(dict,"",window);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_repo_configure_done),dict);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
gtk_list_store_clear(window->BranchesListStore);
// GtkListStore *branches;
// gtk_tree_model_get(model,&iter,2,branches,-1);
// gtk_tree_view_set_model(GTK_TREE_VIEW(window->BranchesTree),GTK_TREE_MODEL(branches));
} else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
void on_repo_configure_done(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*);
GtkTreeIter iter;
GtkTreeIter iter, parentIter;
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(main_config.tree_store),&parentIter,&iter))
iter=parentIter;
char *oldname=NULL;
int status=0;
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
gtk_tree_model_get(model,&iter,1,&oldname,4,&status,-1);
if (status==0)
gtk_tree_store_set(main_config.tree_store,&iter,1,name,6,oldname,7,1,-1);
else if (status==1)
gtk_tree_store_set(main_config.tree_store,&iter,1,name,-1);
}
on_close_subwindow(self);
}
void on_repo_load_local(GtkWidget *self, main_window *widgets){
GtkFileFilter *file_filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(file_filter,"*db.tar.gz");
GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser),file_filter);
int res = gtk_dialog_run(GTK_DIALOG(chooser));
if (res==GTK_RESPONSE_ACCEPT){
@ -248,60 +312,42 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP
GtkTreeIter iter,parentIter;
GdkPixbuf *icon = NULL;
GtkIconTheme *theme = gtk_icon_theme_get_default();
char *name_short = yon_char_new(name);
gboolean fls = 0;
while(1){
yon_char_divide_search(name_short,"/",-1);
if (!strstr(name_short,"/")) break;
}
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&parentIter)){
if (type==YON_REPO_LINE_REPO_TYPE){
icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
gtk_tree_store_append(main_config.tree_store,&iter,NULL);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.folder-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
retIter = gtk_tree_iter_copy(&iter);
}
else if (type==YON_REPO_LINE_BRANCH_TYPE){
icon = NULL;
if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){
else if (type==YON_REPO_LINE_FILE_TYPE){
GtkTreeIter branch;
if (!gtk_tree_model_iter_parent(model,&branch,&iter)){
gtk_tree_store_append(main_config.tree_store,&iter,&parentIter);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
retIter = gtk_tree_iter_copy(&iter);
} else {
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.follder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
if (gtk_tree_model_iter_parent(model,&branch,&parentIter)){
GtkTreeIter repo;
gtk_tree_store_append(main_config.tree_store,&iter,&branch);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
retIter = gtk_tree_iter_copy(&iter);
}
} else {
gtk_tree_store_append(main_config.tree_store,&iter,&parentIter);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
retIter = gtk_tree_iter_copy(&iter);
}
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
else if (type==YON_REPO_LINE_FILE_TYPE){
icon = gtk_icon_theme_load_icon_for_scale(theme,"network-server-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){
GtkTreeIter branch;
if (gtk_tree_model_iter_parent(model,&branch,&iter)){
GtkTreeIter repo;
if (!gtk_tree_model_iter_parent(model,&repo,&branch)){
gtk_tree_store_append(main_config.tree_store,&branch,&iter);
gtk_tree_store_set(main_config.tree_store,&branch,0, icon, 1, name,-1);
retIter = gtk_tree_iter_copy(&branch);
}
} else {
gtk_tree_store_append(main_config.tree_store,&iter,&parentIter);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
retIter = gtk_tree_iter_copy(&iter);
}
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else yon_ubl_status_box_render(CHOOSE_BRANCH_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter);
}
else if (type==YON_REPO_LINE_REPO_TYPE){
icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
gtk_tree_store_append(main_config.tree_store,&iter,NULL);
gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1);
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.folder-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
retIter = gtk_tree_iter_copy(&iter);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter);
} else {
@ -316,12 +362,15 @@ void yon_repo_remove_package(main_window *widgets){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
GtkTreeIter iterparent;
if (gtk_tree_model_iter_parent(model,&iterparent,&iter)){
GtkTreeIter parentparent;
if (gtk_tree_model_iter_parent(model,&parentparent,&iterparent)){
gtk_tree_store_remove(main_config.tree_store,&iter);
// gtk_tree_store_remove(main_config.tree_store,&iter);
int status = 0;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,4,&status,-1);
if (status != 1){
gtk_tree_store_set(main_config.tree_store,&iter,4,-1,-1);
gtk_tree_store_set(main_config.tree_store,&iter,0,"com.ublinux.ubl-settings-repomanager.document-red-symbolic",-1);
} else gtk_tree_store_remove(main_config.tree_store,&iter);
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
@ -330,39 +379,35 @@ void yon_repo_remove(main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
if(gtk_tree_store_iter_depth(main_config.tree_store,&iter)==0){
gtk_tree_store_remove(main_config.tree_store,&iter);
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
gtk_tree_store_set(main_config.tree_store,&iter,4,-1,0,"com.ublinux.ubl-settings-repomanager.folder-red-symbolic",-1);
}else yon_ubl_status_box_render(CHOOSE_REPO_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
void yon_repo_configure(main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
GtkTreeIter iterparent;
if (gtk_tree_model_iter_parent(model,&iterparent,&iter)){
GtkTreeIter parentparent;
if (gtk_tree_model_iter_parent(model,&parentparent,&iterparent)){
gtk_tree_store_remove(main_config.tree_store,&iter);
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
}
void yon_add_file(main_window *widgets){
GtkFileFilter *file_filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(file_filter,"*.pkg.tar.zst");
gtk_file_filter_set_name(file_filter,"*.pkg.tar.zst");
GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser),file_filter);
int res = gtk_dialog_run(GTK_DIALOG(chooser));
if (res==GTK_RESPONSE_ACCEPT){
char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
while (1){
char *ret = yon_char_divide_search(filename,"/",-1);
if (strcmp(ret,filename)==0) break;
FILE *file = popen(yon_char_unite("LC_ALL=EN pacman -Q --info --file ",filename," |grep -E \"Name|Version|Architecture\" |sed -e 's/ *//g'",NULL),"r");
char *cur_string=g_malloc0(sizeof(char)*4096);
char *packname=NULL, *packver=NULL, *packarch=NULL;
while (fgets(cur_string,4096,file)){
cur_string = yon_char_divide_search(cur_string,"\n",-1);
char *p = yon_char_divide_search(cur_string,":",-1);
if (strstr(p,"Name")) packname = yon_char_new(cur_string);
else if (strstr(p,"Version")) packver = yon_char_new(cur_string);
else if (strstr(p,"Architecture")) packarch = yon_char_new(cur_string);
}
yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE);
GtkTreeIter *iter = yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE);
gtk_tree_store_set(main_config.tree_store,iter,0,"com.ublinux.ubl-settings-repomanager.document-green-symbolic",11,packname,12,packver,13,packarch,-1);
}
on_close_subwindow(chooser);
@ -391,7 +436,7 @@ void config_init(){
main_window *setup_window(){
/* Widgets getting | Получение виджетов */
main_window *widgets = malloc(sizeof(main_window));
GtkBuilder *builder = gtk_builder_new_from_file(glade_path);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
widgets->HatLabel = yon_gtk_builder_get_widget(builder,"headerTopic");
widgets->PlugBox = yon_gtk_builder_get_widget(builder,"plugBox");
@ -417,8 +462,8 @@ main_window *setup_window(){
widgets->LoadLocalMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem");
widgets->LeftBox = yon_gtk_builder_get_widget(builder,"HeaderLeftBox");
widgets->DocumentationMenuItem = yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
widgets->AboutMenuItem = yon_gtk_builder_get_widget(builder,"AboutMenuItem");
// widgets->DocumentationMenuItem = yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
// widgets->AboutMenuItem = yon_gtk_builder_get_widget(builder,"AboutMenuItem");
widgets->GeneralTabLabel = yon_gtk_builder_get_widget(builder,"GeneralTabLabel");
widgets->PublicationTabLabel = yon_gtk_builder_get_widget(builder,"PublicationTabLabel");
@ -455,9 +500,19 @@ main_window *setup_window(){
widgets->ComponentsInfoLabel = yon_gtk_builder_get_widget(builder,"ComponentsInfoLabel");
widgets->SignatureLabel = yon_gtk_builder_get_widget(builder,"SignatureLabel");
widgets->SignatureInfoLabel = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel");
widgets->Finder = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel");
widgets->Finder = yon_gtk_builder_get_widget(builder,"RepoFinder");
widgets->SaveButton = yon_gtk_builder_get_widget(builder,"mainSaveButton");
main_config.tree_store = GTK_TREE_STORE(gtk_builder_get_object(builder,"RepoStore"));
widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); // yon_gtk_builder_get_widget(builder,"AboutMenuItem");
gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");
gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->AboutMenuItem);
if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0);
}
@ -484,9 +539,12 @@ main_window *setup_window(){
g_signal_connect(G_OBJECT(widgets->DeleteButton),"clicked",G_CALLBACK(on_repo_remove),widgets);
g_signal_connect(G_OBJECT(widgets->LoadFromLocalButton),"clicked",G_CALLBACK(on_repo_load_local),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_repo_configure),widgets);
g_signal_connect(G_OBJECT(widgets->SaveButton),"clicked",G_CALLBACK(on_save),widgets);
g_signal_connect(G_OBJECT(widgets->RepoTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->Finder),"changed",G_CALLBACK(on_search),widgets);
/* Localisation | Локализация */
gtk_widget_show_all(widgets->Window);
gtk_widget_show(widgets->Window);
return widgets;
@ -498,6 +556,7 @@ int main(int argc, char *argv[]){
config_init();
int option_index=0;
int show_help=0;
int debug_mode=0;
{
struct option long_options[] = {
{"help", 0, 0, 'h'},
@ -510,10 +569,11 @@ int main(int argc, char *argv[]){
{"socket-id", 1, 0, 's'},
{"socket-ext-id", 1,0, 'e'},
{"socket-trd-id", 1,0, 't'},
{"debug", 0,0, 'd'},
{ NULL, 0, NULL, 0 }
};
for (int i=0;i<argc;i++){
int argument=getopt_long(argc,argv,"hVvs:e:t:",long_options,&option_index);
int argument=getopt_long(argc,argv,"hVvs:e:t:d",long_options,&option_index);
switch(argument){
case 'h':
show_help=1;
@ -559,19 +619,24 @@ int main(int argc, char *argv[]){
}
}
if (getuid()!=0){
main_config.lock_load_global=1;
main_config.lock_save_global=1;
main_config.lock_save_local=1;
}
gtk_init(&argc,&argv);
main_window *widgets = setup_window();
yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);
if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel))
yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel);
yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
yon_window_config_setup(GTK_WINDOW(widgets->Window));
yon_window_config_load(config_path);
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_path(css,CssPath,NULL);
gtk_css_provider_load_from_resource(css,CssPath);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);

@ -8,7 +8,9 @@
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include "ubl-cmake.h"
#include <sys/types.h>
#include <fcntl.h>
#include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -18,10 +20,11 @@
#define _(String) gettext(String)
#define glade_path "/usr/share/ubl-settings-repomanager/ui/ubl-settings-repomanager.glade"
#define glade_repo_path "/usr/share/ubl-settings-repomanager/ui/ubl-settings-repomanager-windows.glade"
#define banner_path "/usr/share/ubl-settings-repomanager/images/ubl-settings-repomanager-banner.png"
#define CssPath "/usr/share/ubl-settings-repomanager/css/ubl-settings-repomanager.css"
#define glade_path "/com/ublinux/ui/ubl-settings-repomanager.glade"
#define glade_repo_path "/com/ublinux/ui/ubl-settings-repomanager-windows.glade"
#define banner_path "/com/ublinux/images/ubl-settings-repomanager-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-repomanager.css"
#define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-repomanager"
@ -113,6 +116,7 @@ typedef struct {
GtkWidget *SignatureLabel;
GtkWidget *SignatureInfoLabel;
GtkWidget *Finder;
GtkWidget *SaveButton;
} main_window;
typedef struct {
@ -122,8 +126,11 @@ typedef struct {
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkCellRenderer *BranchCell;
GtkWidget *repoChooseFolderButton;
GtkListStore *BranchesListStore;
GtkWidget *PathLabel;
char *path;
} repo_create_window;
typedef struct {

@ -3,13 +3,16 @@
#define TITLE_LABEL _("Repository manager")
#define TITLE_INFO_LABEL _("Repository management and configuring")
#define SUCCESS_LABEL _("Operation succeeded")
#define ABOUT_LABEL _("About")
#define DOCUMENTATION_LABEL _("Documentation")
#define SAVE_LOCAL_LABEL _("Save to local configuration")
#define SAVE_GLOBAL_LABEL _("Save to global configuration")
#define SAVE_CONFIGURATION_LABEL _("Save configuration")
#define SAVE_LABEL _("Save")
#define LOAD_LOCAL_LABEL _("Load local configuration")
#define LOAD_GLOBAL_LABEL _("Load global configuration")
#define LOAD_LABEL _("Load")
@ -23,7 +26,14 @@
#define PROJECT_HOME_LABEL _("Project Home Page")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#define GLOBAL_LOAD_SUCCESS_LABEL _("Global configuration loading succseeded.")
#define LOCAL_LOAD_SUCCESS_LABEL _("Local configuration loading succseeded.")
#define LOAD_FAILED_LABEL _("Config loading failed")
#define GLOBAL_LOCAL_SAVE_SUCCESS_LABEL _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS_LABEL _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS_LABEL _("Local configuration saving succseeded.")
#define SAVE_FAILED_LABEL
#define GLOBAL_LOAD_SUCCESS _("Global configuration loading succseeded.")
#define LOCAL_LOAD_SUCCESS _("Local configuration loading succseeded.")
@ -67,3 +77,4 @@
#define BRANCHES_LABEL _("Branches:")
#define TYPE_BRANCH_NAME_LABEL _("< Type branch name >")
#define EMPTY_NAME_LABEL _("Name must be filled!")
#define CHOOSE_PATH_LABEL _("Choose path for new repository")

File diff suppressed because it is too large Load Diff

@ -7,11 +7,13 @@
#include <pthread.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include "ubl-cmake.h"
#include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -22,32 +24,19 @@
#define new(type) malloc(sizeof(type))
#define new_arr(type,size) malloc(sizeof(type)*size)
#define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command
#define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_load_local_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_save_global_config(command) yon_config_save(command)
#define yon_ubl_save_local_config(command) yon_config_save(command)
#define for_liststore_each(liststore) GtkTreeIter iter;\
for (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore),&iter);gtk_list_store_iter_is_valid(liststore,&iter);gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore),&iter))
typedef enum
{
#ifdef __GTK_H__
DICTIONARY_GTK_WIDGETS_TYPE,
#endif
DICTIONARY_OTHER_TYPE
DICTIONARY_OTHER_TYPE=0,
DICTIONARY_CHAR_TYPE,
DICTIONARY_INT_TYPE,
DICTIONARY_BOOL_TYPE,
} DICT_TYPE;
typedef struct
{
char *command;
int *exitcode;
} thread_output;
typedef struct dictionary
{
char *key;
@ -56,6 +45,7 @@ typedef struct dictionary
struct dictionary *prev;
struct dictionary *first;
DICT_TYPE data_type;
int flag1;
} dictionary;
typedef struct apps
@ -70,6 +60,15 @@ typedef struct apps
} apps;
typedef char** config_str;
static dictionary *__yon__config__strings = NULL;
#define check_config if(__yon__config__strings&&__yon__config__strings->data_type==DICTIONARY_CHAR_TYPE)
#define config(key) yon_config_get_by_key(key)
#define for_config dictionary temp = NULL; for_dictionary(temp,__yon__config__strings)
#define yon_remalloc(pointer, size) (!pointer) ? malloc(size) : realloc(pointer, size)
// dictionary functions
/**yon_dictionary_get_data(dictionary, type)
@ -83,28 +82,36 @@ typedef char** config_str;
* [type] - тип данных, хранящихся в словаре [dictionary].
*/
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_create_with_data(key,data); \
else dict=yon_dictionary_create_with_data_connected(dict,key,data);}
dictionary *yon_dictionary_create_empty();
/**yon_dictionary_add_or_create_if_exists_with_data(dict,key,data)
* [EN]
*
* [RU]
* Добавляет элемент словаря в конец словаря [dict] c ключом [key] и данными [data].
* Если словарь не существует, создаёт его
*/
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_new_with_data(key,data); \
else dict=yon_dictionary_append_with_data(dict,key,data);}
dictionary *yon_dictionary_new();
dictionary *yon_dictionary_create_conneced(dictionary *targetdict);
dictionary *yon_dictionary_append(dictionary *targetdict);
dictionary *yon_dictionary_get_last(dictionary *dict);
dictionary *yon_dictionary_switch_places(dictionary *dict, int aim);
dictionary *yon_dictionary_swap(dictionary *dict, int aim);
void yon_dictionary_make_first(dictionary *dict);
void yon_dictionary_make_nth(dictionary *dict, int nth);
dictionary *yon_dictionary_create_with_data(char *key, void *data);
dictionary *yon_dictionary_new_with_data(char *key, void *data);
dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data);
dictionary *yon_dictionary_append_with_data(dictionary *dict, char *key, void *data);
dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect);
dictionary *yon_dictionary_find(dictionary **dict, char *key);
dictionary *yon_dictionary_get(dictionary **dict, char *key);
dictionary *yon_dictionary_rip(dictionary *dict);
@ -114,7 +121,7 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo
// char functions
char *yon_char_get_augumented(char *source, char *append);
char *yon_char_append(char *source, char *append);
char *yon_char_new(char *chr);
@ -132,7 +139,7 @@ char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete);
char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param);
@ -140,10 +147,20 @@ int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (config_str old, int *old_size, ...);
config_str yon_char_parsed_new (int *size, ...);
void yon_char_parsed_copy(config_str *source, config_str *to_copy);
config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
int yon_ubl_check_root();
char *yon_ubl_root_user_get();
// parsing functions
config_str philos_list_user(int* size);
apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size);
@ -152,31 +169,49 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size);
config_str yon_config_load(char *command, int *str_len);
int yon_config_save(char *command);
int yon_config_save_registered(char *command);
char *yon_config_get_parameter(config_str parameters, int size, char *param);
char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider);
int yon_config_load_register(char *command);
// terminal-using functions
int yon_config_remove_by_key(char *key);
int yon_config_remove_by_data(void *data);
int yon_config_remove_element(char *key, char *deleted);
void *yon_config_get_by_key(char *key);
char *yon_config_get_key_by_data(char *data);
int yon_launch_app(char *name);
int yon_config_set(char *key, void *data);
int yon_config_clean();
void yon_config_register(char *key, void *data);
config_str yon_config_get_all();
// terminal-using functions
int yon_launch_app_with_arguments(char *name, char *args);
int yon_launch(thread_output *thread);
void yon_launch(char *command);
// Gtk functions
#ifdef __GTK_H__
#ifdef VTE_TERMINAL
/**
*
*/
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument);
void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
#endif
GtkWidget *yon_ubl_menu_item_about_new(char *buttonname);
GtkWidget *yon_ubl_menu_item_documentation_new(char *buttonname);
/**yon_gtk_builder_get_widget(builder, widget_name)
* [EN]
* Returns GtkWidget from GtkBuilder *[builder].
@ -193,11 +228,9 @@ typedef struct
GtkListStore *List;
} expander_icon_view;
// GtkWidget *yon_gtk_app_chooser_apps_create();
// dictionary *yon_gtk_app_chooser_create();
void yon_window_config_setup(GtkWindow *window);
// expander_icon_view yon_gtk_icon_view_expander_create(GtkWidget *pack, ...);
int yon_window_config_load(char *path);
int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size);
@ -205,8 +238,9 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment);
int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
@ -290,10 +324,13 @@ void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type);
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#define yon_ubl_header_setup_resource(overlay, head, image, imag_path) _yon_ubl_header_setup_resource(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#endif
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_header_setup_resource(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id);
#ifdef WEBKIT_FOUND

Binary file not shown.

@ -87,6 +87,46 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">4</property>
<child>
<object class="GtkButton" id="repoChooseFolderButton">
<property name="label" translatable="yes">Choose repository folder</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="halign">start</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="repoPathLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -94,7 +134,6 @@
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="repoBranchesLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Branches:</property>
<property name="xalign">0</property>
@ -109,7 +148,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -129,7 +168,6 @@
<property name="can-focus">False</property>
<child>
<object class="GtkTreeView" id="curRepoEditTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">curRepoEditList</property>
<property name="headers-visible">False</property>
@ -154,7 +192,6 @@
</object>
</child>
<style>
<class name="nobackground"/>
<class name="noborder"/>
</style>
</object>
@ -342,7 +379,6 @@
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="repoEditBranchesLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Branches:</property>
<property name="xalign">0</property>
@ -377,14 +413,15 @@
<property name="can-focus">False</property>
<child>
<object class="GtkTreeView" id="repoEditBranchTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">curRepoEditList</property>
<property name="headers-visible">False</property>
<property name="search-column">0</property>
<property name="show-expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">

@ -48,17 +48,23 @@ background:transparent;
}
.menuitemtop *{
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
padding-top:2px;
padding-bottom:2px;
/* padding: 5px 0px 3px 5px; */
border:transparent;
}
.menuitemmiddle *{
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
padding-top:2px;
padding-bottom:2px;
/* padding: 3px 0px 3px 5px; */
border:transparent;
}
.menuitembottom *{
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
padding-top:2px;
padding-bottom:2px;
/* padding: 3px 0px 5px 5px; */
}
.menuitemtop:hover {
background:@theme_bg_color;
@ -83,19 +89,25 @@ background:transparent;
}
.menuitemtop:hover* {
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
padding-top:2px;
padding-bottom:2px;
/* padding: 5px 0 3px 5px; */
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitemmiddle:hover* {
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
margin:0 2px 0px 2px;
padding-top:2px;
padding-bottom:2px;
/* padding: 3px 0px 3px 5px; */
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitembottom:hover* {
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
padding-top:2px;
padding-bottom:2px;
/* padding: 3px 0px 5px 5px; */
background:@theme_selected_bg_color;
border-radius:2px;
}

@ -193,11 +193,33 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkTreeStore" id="RepoStore">
<columns>
<!-- column-name Picture -->
<column type="GdkPixbuf"/>
<column type="gchararray"/>
<!-- column-name DisplayName -->
<column type="gchararray"/>
<!-- column-name BranchList -->
<column type="gpointer"/>
<!-- column-name Path -->
<column type="gchararray"/>
<!-- column-name Status -->
<column type="gint"/>
<!-- column-name HideDeleted -->
<column type="gboolean"/>
<!-- column-name OldName -->
<column type="gchararray"/>
<!-- column-name Renamed -->
<column type="gboolean"/>
<!-- column-name OldRepo -->
<column type="gchararray"/>
<!-- column-name NewRepo -->
<column type="gchararray"/>
<!-- column-name Moved -->
<column type="gboolean"/>
<!-- column-name PackageName -->
<column type="gchararray"/>
<!-- column-name PackageVersion -->
<column type="gchararray"/>
<!-- column-name PackageArch -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkAdjustment" id="adjustment1">
@ -210,11 +232,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="icon-name">document-new-symbolic</property>
</object>
<object class="GtkImage" id="image10">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-edit-symbolic</property>
</object>
<object class="GtkImage" id="image11">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -238,28 +255,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">preferences-other-symbolic</property>
<property name="icon-name">system-run-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">user-trash-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">system-shutdown-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-send-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-synchronizing-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -491,28 +493,6 @@ translated and supported by community.</property>
<property name="can-focus">False</property>
<property name="take-focus">False</property>
<property name="reserve-toggle-size">False</property>
<child>
<object class="GtkMenuItem" id="DocumentationMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Documentation</property>
<property name="use-underline">True</property>
<style>
<class name="menuitemtop"/>
</style>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AboutMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">About</property>
<style>
<class name="menuitemsolo"/>
<class name="menuitembottom"/>
</style>
</object>
</child>
</object>
<object class="GtkMenu" id="menu3">
<property name="visible">True</property>
@ -703,10 +683,18 @@ translated and supported by community.</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkPaned">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="position">395</property>
<property name="position-set">True</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="spacing">5</property>
<child>
<object class="GtkBox">
@ -743,7 +731,7 @@ translated and supported by community.</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LoadNetButton">
<object class="GtkButton" id="LoadLocalButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -804,86 +792,6 @@ translated and supported by community.</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LoadLocalButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add/Remove repository from
local package sources</property>
<property name="image">image6</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkButton" id="SwitchPublishButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Enable/disable repository publish</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkButton" id="CheckDependencesButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Check dependences</property>
<property name="image">image7</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
</packing>
</child>
<child>
<object class="GtkButton" id="SignButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Sign ripository</property>
<property name="image">image10</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">10</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AddPackageButton">
<property name="visible">True</property>
@ -939,6 +847,15 @@ local package sources</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="shadow-type">none</property>
<child>
<object class="GtkTreeView" id="RepoTree">
<property name="visible">True</property>
@ -946,6 +863,7 @@ local package sources</property>
<property name="model">RepoStore</property>
<property name="headers-visible">False</property>
<property name="expander-column">treeviewcolumn2</property>
<property name="search-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
@ -960,7 +878,15 @@ local package sources</property>
<child>
<object class="GtkCellRendererPixbuf"/>
<attributes>
<attribute name="pixbuf">0</attribute>
<attribute name="icon-name">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText">
<property name="text">[D]</property>
</object>
<attributes>
<attribute name="visible">5</attribute>
</attributes>
</child>
<child>
@ -975,16 +901,16 @@ local package sources</property>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
<packing>
<property name="expand">True</property>
@ -994,19 +920,23 @@ local package sources</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkNotebook">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="show-tabs">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
@ -1038,7 +968,6 @@ local package sources</property>
<object class="GtkLabel" id="CodeNameInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">extend</property>
</object>
<packing>
<property name="expand">False</property>
@ -1055,7 +984,6 @@ local package sources</property>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">20</property>
<child>
@ -1078,7 +1006,6 @@ local package sources</property>
<object class="GtkLabel" id="BranchInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">stable</property>
</object>
<packing>
<property name="expand">False</property>
@ -1118,7 +1045,6 @@ local package sources</property>
<object class="GtkLabel" id="VersionInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">2204</property>
</object>
<packing>
<property name="expand">False</property>
@ -1158,7 +1084,6 @@ local package sources</property>
<object class="GtkLabel" id="ArchitectureInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">amd64</property>
</object>
<packing>
<property name="expand">False</property>
@ -1175,7 +1100,6 @@ local package sources</property>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">20</property>
<child>
@ -1198,7 +1122,6 @@ local package sources</property>
<object class="GtkLabel" id="ComponentsInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">main contrib non-free</property>
</object>
<packing>
<property name="expand">False</property>
@ -1215,7 +1138,6 @@ local package sources</property>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">20</property>
<child>
@ -1238,7 +1160,6 @@ local package sources</property>
<object class="GtkLabel" id="SignatureInfoLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">signed</property>
</object>
<packing>
<property name="expand">False</property>
@ -1269,6 +1190,8 @@ local package sources</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
@ -1359,9 +1282,8 @@ local package sources</property>
<item translatable="yes">192.168.1.110</item>
</items>
<child internal-child="entry">
<object class="GtkEntry" id="entry1">
<object class="GtkEntry">
<property name="can-focus">False</property>
<property name="text" translatable="yes">192.168.1.110</property>
</object>
</child>
</object>
@ -1400,6 +1322,7 @@ local package sources</property>
<object class="GtkSpinButton" id="PortSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjustment1</property>
</object>
<packing>
@ -1486,6 +1409,12 @@ local package sources</property>
</packing>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
@ -1500,6 +1429,13 @@ local package sources</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
@ -1555,7 +1491,6 @@ local package sources</property>
<property name="can-focus">False</property>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
@ -1617,9 +1552,23 @@ local package sources</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="mainSaveButton">
<property name="label" translatable="yes">Save</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="pack-type">end</property>
@ -1628,7 +1577,6 @@ local package sources</property>
</child>
<child>
<object class="GtkBox" id="HeaderLeftBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkMenuButton">
@ -1685,28 +1633,4 @@ local package sources</property>
</object>
</child>
</object>
<object class="GtkSizeGroup" id="PubSizeGroupCol1">
<widgets>
<widget name="ServerLabel"/>
<widget name="IpAdresslabel"/>
<widget name="PortLabel"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="PubSizeGroupCol2">
<widgets>
<widget name="ServerCombo"/>
<widget name="IpAdressCombo"/>
<widget name="PortSpin"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="ed">
<widgets>
<widget name="SignatureLabel"/>
<widget name="ComponentsLabel"/>
<widget name="ArchitectureLabel"/>
<widget name="VersionLabel"/>
<widget name="BranchLabel"/>
<widget name="CodeNameLabel"/>
</widgets>
</object>
</interface>

@ -73,214 +73,230 @@ msgstr ""
msgid "Repository management and configuring"
msgstr ""
#: source/ubl-strings.h:7
#: source/ubl-strings.h:6
msgid "Operation succeeded"
msgstr ""
#: source/ubl-strings.h:9
msgid "About"
msgstr ""
#: source/ubl-strings.h:8
#: source/ubl-strings.h:10
msgid "Documentation"
msgstr ""
#: source/ubl-strings.h:9
#: source/ubl-strings.h:12
msgid "Save to local configuration"
msgstr ""
#: source/ubl-strings.h:10
#: source/ubl-strings.h:13
msgid "Save to global configuration"
msgstr ""
#: source/ubl-strings.h:11
#: source/ubl-strings.h:14
msgid "Save configuration"
msgstr ""
#: source/ubl-strings.h:12
#: source/ubl-strings.h:15
msgid "Save"
msgstr ""
#: source/ubl-strings.h:13
#: source/ubl-strings.h:17
msgid "Load local configuration"
msgstr ""
#: source/ubl-strings.h:14
#: source/ubl-strings.h:18
msgid "Load global configuration"
msgstr ""
#: source/ubl-strings.h:15
#: source/ubl-strings.h:19
msgid "Load"
msgstr ""
#: source/ubl-strings.h:17
#: source/ubl-strings.h:21
msgid "Cancel"
msgstr ""
#: source/ubl-strings.h:19
#: source/ubl-strings.h:23
msgid "Would you like to read documentation in the Web?"
msgstr ""
#: source/ubl-strings.h:20
#: source/ubl-strings.h:24
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
#: source/ubl-strings.h:21
#: source/ubl-strings.h:25
msgid "Always redirect to online documentation"
msgstr ""
#: source/ubl-strings.h:22
#: source/ubl-strings.h:26
msgid "Open documentation"
msgstr ""
#: source/ubl-strings.h:23
#: source/ubl-strings.h:27
msgid "Project Home Page"
msgstr ""
#: source/ubl-strings.h:24
#: source/ubl-strings.h:28
msgid "Nothing were chosen"
msgstr ""
#: source/ubl-strings.h:27
#: source/ubl-strings.h:30 source/ubl-strings.h:38
msgid "Global configuration loading succseeded."
msgstr ""
#: source/ubl-strings.h:28
#: source/ubl-strings.h:31 source/ubl-strings.h:39
msgid "Local configuration loading succseeded."
msgstr ""
#: source/ubl-strings.h:30
#: source/ubl-strings.h:32
msgid "Config loading failed"
msgstr ""
#: source/ubl-strings.h:34 source/ubl-strings.h:41
msgid "Local and global configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:31
#: source/ubl-strings.h:35 source/ubl-strings.h:42
msgid "Global configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:32
#: source/ubl-strings.h:36 source/ubl-strings.h:43
msgid "Local configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:34
#: source/ubl-strings.h:45
msgid "General"
msgstr ""
#: source/ubl-strings.h:35
#: source/ubl-strings.h:46
msgid "Publication"
msgstr ""
#: source/ubl-strings.h:36
#: source/ubl-strings.h:47
msgid "Trusted repository"
msgstr ""
#: source/ubl-strings.h:37
#: source/ubl-strings.h:48
msgid "Server type:"
msgstr ""
#: source/ubl-strings.h:38
#: source/ubl-strings.h:49
msgid "IP adress:"
msgstr ""
#: source/ubl-strings.h:39
#: source/ubl-strings.h:50
msgid "Port:"
msgstr ""
#: source/ubl-strings.h:40
#: source/ubl-strings.h:51
msgid "Publish"
msgstr ""
#: source/ubl-strings.h:41
#: source/ubl-strings.h:52
msgid "Code name:"
msgstr ""
#: source/ubl-strings.h:42
#: source/ubl-strings.h:53
msgid "Branch:"
msgstr ""
#: source/ubl-strings.h:43
#: source/ubl-strings.h:54
msgid "Architecture:"
msgstr ""
#: source/ubl-strings.h:44
#: source/ubl-strings.h:55
msgid "Components:"
msgstr ""
#: source/ubl-strings.h:45
#: source/ubl-strings.h:56
msgid "Signature:"
msgstr ""
#: source/ubl-strings.h:47
#: source/ubl-strings.h:58
msgid "Create repository"
msgstr ""
#: source/ubl-strings.h:48
#: source/ubl-strings.h:59
msgid "Open existing repository"
msgstr ""
#: source/ubl-strings.h:49
#: source/ubl-strings.h:60
msgid "Configure repository"
msgstr ""
#: source/ubl-strings.h:50
#: source/ubl-strings.h:61
msgid "Delete repository"
msgstr ""
#: source/ubl-strings.h:51
#: source/ubl-strings.h:62
msgid ""
"Add/Remove repository from\n"
"local package sources"
msgstr ""
#: source/ubl-strings.h:52
#: source/ubl-strings.h:63
msgid "Enable/disable repository publish"
msgstr ""
#: source/ubl-strings.h:53
#: source/ubl-strings.h:64
msgid "Check dependences"
msgstr ""
#: source/ubl-strings.h:54
#: source/ubl-strings.h:65
msgid "Sign ripository"
msgstr ""
#: source/ubl-strings.h:55
#: source/ubl-strings.h:66
msgid "Add package"
msgstr ""
#: source/ubl-strings.h:56
#: source/ubl-strings.h:67
msgid "Remove package"
msgstr ""
#: source/ubl-strings.h:57
#: source/ubl-strings.h:68
msgid "Open"
msgstr ""
#: source/ubl-strings.h:59
#: source/ubl-strings.h:70
msgid "Operation done"
msgstr ""
#: source/ubl-strings.h:61
#: source/ubl-strings.h:72
msgid "Choose branch or pack in branch to add file!"
msgstr ""
#: source/ubl-strings.h:62
#: source/ubl-strings.h:73
msgid "Choose repository or branch!"
msgstr ""
#: source/ubl-strings.h:63
#: source/ubl-strings.h:74
msgid "Choose pack to delete!"
msgstr ""
#: source/ubl-strings.h:64
#: source/ubl-strings.h:75
msgid "Choose repository to delete!"
msgstr ""
#: source/ubl-strings.h:66
#: source/ubl-strings.h:77
msgid "Name:"
msgstr ""
#: source/ubl-strings.h:67
#: source/ubl-strings.h:78
msgid "Branches:"
msgstr ""
#: source/ubl-strings.h:68
#: source/ubl-strings.h:79
msgid "< Type branch name >"
msgstr ""
#: source/ubl-strings.h:80
msgid "Name must be filled!"
msgstr ""
#: source/ubl-strings.h:81
msgid "Choose path for new repository"
msgstr ""

@ -74,51 +74,56 @@ msgstr "Менеджер репозиториев"
msgid "Repository management and configuring"
msgstr "Настройка параметров и управление репозиториями системы"
#: source/ubl-strings.h:7
#: source/ubl-strings.h:6
#, fuzzy
msgid "Operation succeeded"
msgstr "Операция завершена"
#: source/ubl-strings.h:9
msgid "About"
msgstr "О программе"
#: source/ubl-strings.h:8
#: source/ubl-strings.h:10
msgid "Documentation"
msgstr "Справка"
#: source/ubl-strings.h:9
#: source/ubl-strings.h:12
msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-strings.h:10
#: source/ubl-strings.h:13
msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию"
#: source/ubl-strings.h:11
#: source/ubl-strings.h:14
msgid "Save configuration"
msgstr "Сохранить конфигурацию"
#: source/ubl-strings.h:12
#: source/ubl-strings.h:15
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:13
#: source/ubl-strings.h:17
msgid "Load local configuration"
msgstr "Загрузить локальную конфигуруцию"
#: source/ubl-strings.h:14
#: source/ubl-strings.h:18
msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию"
#: source/ubl-strings.h:15
#: source/ubl-strings.h:19
msgid "Load"
msgstr "Загрузить"
#: source/ubl-strings.h:17
#: source/ubl-strings.h:21
msgid "Cancel"
msgstr "Отмена"
#: source/ubl-strings.h:19
#: source/ubl-strings.h:23
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-strings.h:20
#: source/ubl-strings.h:24
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
@ -126,107 +131,111 @@ msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи\n"
"переводятся и поддерживаются сообществом."
#: source/ubl-strings.h:21
#: source/ubl-strings.h:25
msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять"
#: source/ubl-strings.h:22
#: source/ubl-strings.h:26
msgid "Open documentation"
msgstr "Прочитать справку"
#: source/ubl-strings.h:23
#: source/ubl-strings.h:27
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
#: source/ubl-strings.h:24
#: source/ubl-strings.h:28
msgid "Nothing were chosen"
msgstr "Ничего не было выбрано"
#: source/ubl-strings.h:27
#: source/ubl-strings.h:30 source/ubl-strings.h:38
msgid "Global configuration loading succseeded."
msgstr "Успешно загружена глобальная конфигурация"
#: source/ubl-strings.h:28
#: source/ubl-strings.h:31 source/ubl-strings.h:39
msgid "Local configuration loading succseeded."
msgstr "Успешно загружена локальная конфигурация"
#: source/ubl-strings.h:30
#: source/ubl-strings.h:32
msgid "Config loading failed"
msgstr ""
#: source/ubl-strings.h:34 source/ubl-strings.h:41
msgid "Local and global configuration saving succseeded."
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:31
#: source/ubl-strings.h:35 source/ubl-strings.h:42
msgid "Global configuration saving succseeded."
msgstr "Успешно записана глобальная конфигурация"
#: source/ubl-strings.h:32
#: source/ubl-strings.h:36 source/ubl-strings.h:43
msgid "Local configuration saving succseeded."
msgstr "Успешно записана локальная конфигурация"
#: source/ubl-strings.h:34
#: source/ubl-strings.h:45
msgid "General"
msgstr "Общие"
#: source/ubl-strings.h:35
#: source/ubl-strings.h:46
msgid "Publication"
msgstr "Публикация"
#: source/ubl-strings.h:36
#: source/ubl-strings.h:47
msgid "Trusted repository"
msgstr "Доверенный репозиторий"
#: source/ubl-strings.h:37
#: source/ubl-strings.h:48
msgid "Server type:"
msgstr "Тип сервера:"
#: source/ubl-strings.h:38
#: source/ubl-strings.h:49
msgid "IP adress:"
msgstr "IP-адрес:"
#: source/ubl-strings.h:39
#: source/ubl-strings.h:50
msgid "Port:"
msgstr "Порт:"
#: source/ubl-strings.h:40
#: source/ubl-strings.h:51
msgid "Publish"
msgstr "Опубликовать"
#: source/ubl-strings.h:41
#: source/ubl-strings.h:52
msgid "Code name:"
msgstr "Кодовое имя:"
#: source/ubl-strings.h:42
#: source/ubl-strings.h:53
msgid "Branch:"
msgstr "Ветка:"
#: source/ubl-strings.h:43
#: source/ubl-strings.h:54
msgid "Architecture:"
msgstr "Архитектура:"
#: source/ubl-strings.h:44
#: source/ubl-strings.h:55
msgid "Components:"
msgstr "Компоненты"
#: source/ubl-strings.h:45
#: source/ubl-strings.h:56
msgid "Signature:"
msgstr "Подпись"
#: source/ubl-strings.h:47
#: source/ubl-strings.h:58
msgid "Create repository"
msgstr "Создать репозиторий"
#: source/ubl-strings.h:48
#: source/ubl-strings.h:59
msgid "Open existing repository"
msgstr "Открыть и добавить репозиторий"
#: source/ubl-strings.h:49
#: source/ubl-strings.h:60
msgid "Configure repository"
msgstr "Редактировать репозиторий"
#: source/ubl-strings.h:50
#: source/ubl-strings.h:61
msgid "Delete repository"
msgstr "Удалить репозиторий"
#: source/ubl-strings.h:51
#: source/ubl-strings.h:62
msgid ""
"Add/Remove repository from\n"
"local package sources"
@ -234,59 +243,68 @@ msgstr ""
"Добавить/удалить репу из\n"
" локальных источников пакетов"
#: source/ubl-strings.h:52
#: source/ubl-strings.h:63
msgid "Enable/disable repository publish"
msgstr "Включить/отключить публикацию"
#: source/ubl-strings.h:53
#: source/ubl-strings.h:64
msgid "Check dependences"
msgstr "Проверить на битые зависимости"
#: source/ubl-strings.h:54
#: source/ubl-strings.h:65
msgid "Sign ripository"
msgstr "Подпись пакетов"
#: source/ubl-strings.h:55
#: source/ubl-strings.h:66
msgid "Add package"
msgstr "Добавить пакет"
#: source/ubl-strings.h:56
#: source/ubl-strings.h:67
msgid "Remove package"
msgstr "Удалить пакет"
#: source/ubl-strings.h:57
#: source/ubl-strings.h:68
msgid "Open"
msgstr "Открыть"
#: source/ubl-strings.h:59
#: source/ubl-strings.h:70
msgid "Operation done"
msgstr "Операция завершена"
#: source/ubl-strings.h:61
#: source/ubl-strings.h:72
msgid "Choose branch or pack in branch to add file!"
msgstr "Выберите ветку чтобы добавить пакет!"
#: source/ubl-strings.h:62
#: source/ubl-strings.h:73
msgid "Choose repository or branch!"
msgstr "Выберите репозиторий!"
#: source/ubl-strings.h:63
#: source/ubl-strings.h:74
msgid "Choose pack to delete!"
msgstr "Выберите пакет для удаления!"
#: source/ubl-strings.h:64
#: source/ubl-strings.h:75
msgid "Choose repository to delete!"
msgstr "Выберите репозиторий для удаления!"
#: source/ubl-strings.h:66
#: source/ubl-strings.h:77
msgid "Name:"
msgstr "Название:"
#: source/ubl-strings.h:67
#: source/ubl-strings.h:78
#, fuzzy
msgid "Branches:"
msgstr "Ветки:"
#: source/ubl-strings.h:68
#: source/ubl-strings.h:79
msgid "< Type branch name >"
msgstr "< Введите название ветки >"
#: source/ubl-strings.h:80
msgid "Name must be filled!"
msgstr "Введите название!"
#: source/ubl-strings.h:81
#, fuzzy
msgid "Choose path for new repository"
msgstr "Выбрать расположение нового репозитория"

Loading…
Cancel
Save