master #108

Merged
asmeron merged 30 commits from YanTheKaller/ubl-settings-repomanager:master into master 4 months ago

@ -12,7 +12,6 @@ DEPENDS = /bin/cmake
PREFIX ?= /usr/local PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR) PKGNAME = $(MAKEFILE_DIR)
FILE_VER = source/${PKGNAME}.h FILE_VER = source/${PKGNAME}.h
PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX}))
default_target: all default_target: all
@ -22,11 +21,13 @@ all: init build
init: init:
@echo "Initialize ..."; \ @echo "Initialize ..."; \
if [ -d ".git" ]; then \ if [[ -d ".git" ]]; then \
LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
if [ -z "$${LATEST_TAG}" ]; then \ if [[ -z "$${LATEST_TAG}" ]]; \
LATEST_TAG="0.0"; \ then \
fi; \ LATEST_TAG=$$"0.0"; \
echo "$${LATEST_TAG} is empty"; \
fi; \
else \ else \
LATEST_TAG="Development"; \ LATEST_TAG="Development"; \
fi; \ fi; \
@ -36,7 +37,7 @@ init:
depend: depend:
@echo "Check depends ..." @echo "Check depends ..."
@for FILE_DEPEND in $(DEPENDS); do \ @for FILE_DEPEND in $(DEPENDS); do \
if [ ! -f $${FILE_DEPEND} ]; then \ if [[ ! -f "$${FILE_DEPEND}" ]]; then \
echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \ echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \
exit 1; \ exit 1; \
fi; \ fi; \
@ -46,21 +47,21 @@ depend:
debug: debug:
@echo "Debug ..." @echo "Debug ..."
if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ if [[ ! -d "${CMAKE_BUILD_DIR}" ]]; then \
$(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
fi; \ fi; \
echo "Debug: OK" echo "Debug: OK"
prepare: prepare:
@echo "Prepare ..."; \ @echo "Prepare ..."; \
if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ if [[ ! -d "${CMAKE_BUILD_DIR}" ]]; then \
$(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
fi; \ fi; \
echo "Prepare: OK" echo "Prepare: OK"
check: check:
@echo "Check ..."; \ @echo "Check ..."; \
if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \ if [[ -f "${CMAKE_BUILD_DIR}/${PKGNAME}" ]]; then \
echo "Check: OK"; \ echo "Check: OK"; \
else \ else \
echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \ echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \
@ -75,10 +76,9 @@ build: depend prepare
uninstall: uninstall:
@echo "Uninstall ..." @echo "Uninstall ..."
@for FILE_PO in $(wildcard *.po); do \ @for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ # PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
$(RM) "$${PATH_FILE_MO}"; \ $(RM) "$${PATH_FILE_MO}"; \
done done
@for SIZE in 16x16 32x32 48x48 scalable; do \ @for SIZE in 16x16 32x32 48x48 scalable; do \
@ -90,64 +90,64 @@ uninstall:
$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \ $(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \
done; \ done; \
done done
@for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/$${SUB_NAME}/$${FILE_ICON}"; \
done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
@$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"; \
@if [ -z ${DESTDIR} ]; then \ else \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ # $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@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; \ update-desktop-database --quiet &>/dev/null || true; \
[ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ [[ -d "${DESTDIR}${PREFIX}/share/applications" ]] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
fi fi
@echo "Uninstall: OK" @echo "Uninstall: OK"
install: check uninstall install: check uninstall
@echo "Install ..." @echo "Install ..."
@for FILE_PO in $(wildcard *.po); do \ @for LANG in $$(find ./locale -iname "*.po" -print | sed -En "s/.+_([[:alpha:]]+)\.po/\1/p" | sort -u); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
install -dm755 "${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES"; \ # PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/${PKGNAME}.mo"; \
PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ PKGNAME_PO="./locale/${PKGNAME}_$${LANG}.po"; [[ -f "$${PKGNAME_PO}" ]] || PKGNAME_PO= ; \
echo "$${FILE_PO}"; \ msgfmt --verbose --use-fuzzy --output-file "$${PATH_FILE_MO}" - < <(msgcat --use-first --no-wrap $${PKGNAME_PO} ./locale/*_$${LANG}.po); \
msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
done done
@for SIZE in 16 32 48; do \ @for SIZE in 16 32 48; do \
install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ 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}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done
@for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \
done done
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-green-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-red-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-sign-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-green-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-red-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.folder-red-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.document-sign-error-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.chain-error-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.chain-symbolic.svg"
@install -Dm755 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "crypt-key.csv"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy @if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \
@if [ -z ${DESTDIR} ]; then \ install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ else \
# install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
# sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@if [[ -z "${DESTDIR}" ]]; then \
ldconfig -n ${DESTDIR}${PREFIX}/lib; \
[[ -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; \ update-desktop-database --quiet &>/dev/null || true; \
[ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ [[ -d "${DESTDIR}${PREFIX}/share/applications" ]] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
fi fi
@echo "Install: OK" @echo "Install: OK"
clean: clean:
@echo "Clean ..." @echo "Clean ..."
@$(RM) -rd ${CMAKE_BUILD_DIR} @$(RM) -rd ${CMAKE_BUILD_DIR}
@if [ -d ${CMAKE_BUILD_DIR} ]; then \ @if [[ -d "${CMAKE_BUILD_DIR}" ]]; then \
echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \ echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
else \ else \
echo "Clean: OK"; \ echo "Clean: OK"; \
@ -159,7 +159,7 @@ help:
echo "... init"; \ echo "... init"; \
echo "... debug"; \ echo "... debug"; \
echo "... prepare"; \ echo "... prepare"; \
echo "... build"; \ echo "... compile"; \
echo "... install"; \ echo "... install"; \
echo "... uninstall"; \ echo "... uninstall"; \
echo "... clean" echo "... clean"

@ -1,327 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg25"
sodipodi:docname="checked.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">
<sodipodi:namedview
id="namedview27"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="14.8125"
inkscape:cx="-4.6919831"
inkscape:cy="9.9578059"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg25" />
<defs
id="defs19">
<style
id="current-color-scheme"
type="text/css">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style3">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style5">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style7">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style9">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style11">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style13">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style15">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
<style
type="text/css"
id="style17">.ColorScheme-Text {
color:#31363b;
}
.ColorScheme-Background{
color:#eff0f1;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground{
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#3daee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground{
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#3daee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}</style>
</defs>
<path
id="path21"
d="M 12 1 C 5.906 1 1 5.906 1 12 C 1 18.094 5.906 23 12 23 C 18.094 23 23 18.094 23 12 C 23 5.906 18.094 1 12 1 z M 15.480469 8.9042969 C 16.392469 8.8782969 16.860031 9.9850937 16.207031 10.621094 L 11 15.828125 L 8.09375 12.921875 C 7.11175 11.979875 8.5648125 10.525813 9.5078125 11.507812 L 11 13 L 14.792969 9.2070312 A 1 1 0 0 1 15.480469 8.9042969 z "
style="fill:#4d4d4d;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
sodipodi:docname="warning.svg"
width="24"
height="24"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1027"
id="namedview8"
showgrid="false"
inkscape:zoom="18.96875"
inkscape:cx="5.4827018"
inkscape:cy="9.3047776"
inkscape:current-layer="svg2"
inkscape:pagecheckerboard="0"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<path
id="path4136-2"
style="opacity:1;fill:#4d4d4d;fill-opacity:1"
d="M 11.292969 1.0234375 A 11 11.000002 86.311656 0 0 1.0234375 12.707031 A 11 11.000002 86.311656 0 0 12.707031 22.976562 A 11 11.000002 86.311656 0 0 22.976562 11.292969 A 11 11.000002 86.311656 0 0 11.292969 1.0234375 z M 11.996094 6 L 12.003906 6 C 12.556173 6 13 6.4439 13 6.9960938 L 13 14.003906 C 13 14.556325 12.556173 15 12.003906 15 L 11.996094 15 C 11.443827 15 11 14.556325 11 14.003906 L 11 6.9960938 C 11 6.4439 11.443827 6 11.996094 6 z M 12 17 C 12.554 17 13 17.446 13 18 C 13 18.554 12.554 19 12 19 C 11.446 19 11 18.554 11 18 C 11 17.446 11.446 17 12 17 z " />
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

@ -12,7 +12,4 @@
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubl-settings-repomanager.css</file> <file>ubl-settings-repomanager.css</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/images">
<file>ubl-settings-repomanager-banner.png</file>
</gresource>
</gresources> </gresources>

Before

Width:  |  Height:  |  Size: 263 KiB

After

Width:  |  Height:  |  Size: 263 KiB

@ -26,505 +26,539 @@ msgid "Repository management and configuring"
msgstr "" msgstr ""
#: source/ubl-strings.h:5 #: source/ubl-strings.h:5
msgid ""
"https://wiki.ublinux.ru/en/Software/Programs_and_utilities/All/ubl-settings-"
"repomanager"
msgstr ""
#: source/ubl-strings.h:7
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "" msgstr ""
#: source/ubl-strings.h:6 #: source/ubl-strings.h:8
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
msgstr "" msgstr ""
#: source/ubl-strings.h:7 #: source/ubl-strings.h:9
msgid "Always redirect to online documentation" msgid "Always redirect to online documentation"
msgstr "" msgstr ""
#: source/ubl-strings.h:8 #: source/ubl-strings.h:10
msgid "Open documentation" msgid "Open documentation"
msgstr "" msgstr ""
#: source/ubl-strings.h:9 #: source/ubl-strings.h:11
msgid "Project Home Page" msgid "Project Home Page"
msgstr "" msgstr ""
#: source/ubl-strings.h:10 #: source/ubl-strings.h:12
msgid "Nothing were chosen" msgid "Nothing were chosen"
msgstr "" msgstr ""
#: source/ubl-strings.h:12 #: source/ubl-strings.h:14
msgid "Information" msgid "Information"
msgstr "" msgstr ""
#: source/ubl-strings.h:14 #: source/ubl-strings.h:16
msgid "Choose package(-s)" msgid "Choose package(-s)"
msgstr "" msgstr ""
#: source/ubl-strings.h:15 #: source/ubl-strings.h:17
msgid "Choose folder" msgid "Choose folder"
msgstr "" msgstr ""
#: source/ubl-strings.h:16 #: source/ubl-strings.h:18
msgid "Add packages" msgid "Add packages"
msgstr "" msgstr ""
#: source/ubl-strings.h:17 #: source/ubl-strings.h:19
msgid "Move packages" msgid "Move packages"
msgstr "" msgstr ""
#: source/ubl-strings.h:18 #: source/ubl-strings.h:20
msgid "Remove packages" msgid "Remove packages"
msgstr "" msgstr ""
#: source/ubl-strings.h:20 source/ubl-strings.h:39 #: source/ubl-strings.h:22 source/ubl-strings.h:41
msgid "Key creation" msgid "Key creation"
msgstr "" msgstr ""
#: source/ubl-strings.h:21 #: source/ubl-strings.h:23
msgid "Email:" msgid "Email:"
msgstr "" msgstr ""
#: source/ubl-strings.h:22 #: source/ubl-strings.h:24
msgid "Key additional configuration" msgid "Key additional configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:23 #: source/ubl-strings.h:25
msgid "Commentary:" msgid "Commentary:"
msgstr "" msgstr ""
#: source/ubl-strings.h:24 #: source/ubl-strings.h:26
msgid "Encryption type:" msgid "Encryption type:"
msgstr "" msgstr ""
#: source/ubl-strings.h:25 #: source/ubl-strings.h:27
msgid "key strength (in bits):" msgid "key strength (in bits):"
msgstr "" msgstr ""
#: source/ubl-strings.h:26 #: source/ubl-strings.h:28
msgid "Expires:" msgid "Expires:"
msgstr "" msgstr ""
#: source/ubl-strings.h:27 #: source/ubl-strings.h:29
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: source/ubl-strings.h:28 #: source/ubl-strings.h:30
msgid "Password confirmation:" msgid "Password confirmation:"
msgstr "" msgstr ""
#: source/ubl-strings.h:29 #: source/ubl-strings.h:31
msgid "Timeless" msgid "Timeless"
msgstr "" msgstr ""
#: source/ubl-strings.h:30 #: source/ubl-strings.h:32
msgid "Until" msgid "Until"
msgstr "" msgstr ""
#: source/ubl-strings.h:32 #: source/ubl-strings.h:34
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: source/ubl-strings.h:34 #: source/ubl-strings.h:36
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: source/ubl-strings.h:35 #: source/ubl-strings.h:37
msgid "Configure storages" msgid "Configure storages"
msgstr "" msgstr ""
#: source/ubl-strings.h:36 #: source/ubl-strings.h:38
msgid "System update" msgid "System update"
msgstr "" msgstr ""
#: source/ubl-strings.h:38 #: source/ubl-strings.h:40
msgid "Empty important field" msgid "Empty important field"
msgstr "" msgstr ""
#: source/ubl-strings.h:41 #: source/ubl-strings.h:43
msgid "Repository data has been loaded successfully" msgid "Repository data has been loaded successfully"
msgstr "" msgstr ""
#: source/ubl-strings.h:43 #: source/ubl-strings.h:45
msgid "Saving has succeeded" msgid "Saving has succeeded"
msgstr "" msgstr ""
#: source/ubl-strings.h:45 #: source/ubl-strings.h:47
msgid "General" msgid "General"
msgstr "" msgstr ""
#: source/ubl-strings.h:46 #: source/ubl-strings.h:48
msgid "Publication" msgid "Publication"
msgstr "" msgstr ""
#: source/ubl-strings.h:47 #: source/ubl-strings.h:49
msgid "Trusted repository" msgid "Trusted repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:48 #: source/ubl-strings.h:50
msgid "Server type:" msgid "Server type:"
msgstr "" msgstr ""
#: source/ubl-strings.h:49 #: source/ubl-strings.h:51
msgid "IP adress:" msgid "IP adress:"
msgstr "" msgstr ""
#: source/ubl-strings.h:50 #: source/ubl-strings.h:52
msgid "Port:" msgid "Port:"
msgstr "" msgstr ""
#: source/ubl-strings.h:51 #: source/ubl-strings.h:53
msgid "Publish" msgid "Publish"
msgstr "" msgstr ""
#: source/ubl-strings.h:52 #: source/ubl-strings.h:54
msgid "Code name:" msgid "Code name:"
msgstr "" msgstr ""
#: source/ubl-strings.h:53 #: source/ubl-strings.h:55
msgid "Branch:" msgid "Branch:"
msgstr "" msgstr ""
#: source/ubl-strings.h:54 #: source/ubl-strings.h:56
msgid "Architecture:" msgid "Architecture:"
msgstr "" msgstr ""
#: source/ubl-strings.h:55 #: source/ubl-strings.h:57
msgid "Components:" msgid "Components:"
msgstr "" msgstr ""
#: source/ubl-strings.h:56 #: source/ubl-strings.h:58
msgid "Signature:" msgid "Signature:"
msgstr "" msgstr ""
#: source/ubl-strings.h:57 #: source/ubl-strings.h:59
msgid "Sign" msgid "Sign"
msgstr "" msgstr ""
#: source/ubl-strings.h:59 #: source/ubl-strings.h:61
msgid "Move" msgid "Move"
msgstr "" msgstr ""
#: source/ubl-strings.h:60 #: source/ubl-strings.h:62
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: source/ubl-strings.h:62 #: source/ubl-strings.h:64
msgid "Sign repo" msgid "Sign repo"
msgstr "" msgstr ""
#: source/ubl-strings.h:63 #: source/ubl-strings.h:65
msgid "Remove repo" msgid "Remove repo"
msgstr "" msgstr ""
#: source/ubl-strings.h:64 #: source/ubl-strings.h:66
msgid "Manage storages" msgid "Manage storages"
msgstr "" msgstr ""
#: source/ubl-strings.h:65 #: source/ubl-strings.h:67
msgid "Storage:" msgid "Storage:"
msgstr "" msgstr ""
#: source/ubl-strings.h:66 #: source/ubl-strings.h:68
msgid "Open existing" msgid "Open existing"
msgstr "" msgstr ""
#: source/ubl-strings.h:67 #: source/ubl-strings.h:69
msgid "Create new" msgid "Create new"
msgstr "" msgstr ""
#: source/ubl-strings.h:68 #: source/ubl-strings.h:70
msgid "Create new storage"
msgstr ""
#: source/ubl-strings.h:71
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: source/ubl-strings.h:69 #: source/ubl-strings.h:72
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: source/ubl-strings.h:70 #: source/ubl-strings.h:73
msgid "Add repository" msgid "Add repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:71 #: source/ubl-strings.h:74
msgid "Repository (-ies)" msgid "Repository (-ies)"
msgstr "" msgstr ""
#: source/ubl-strings.h:72 #: source/ubl-strings.h:75
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: source/ubl-strings.h:74 #: source/ubl-strings.h:77
msgid "Repository:" msgid "Repository:"
msgstr "" msgstr ""
#: source/ubl-strings.h:75 #: source/ubl-strings.h:78
msgid "Source" msgid "Source"
msgstr "" msgstr ""
#: source/ubl-strings.h:76 #: source/ubl-strings.h:79
msgid "Target" msgid "Target"
msgstr "" msgstr ""
#: source/ubl-strings.h:77 #: source/ubl-strings.h:80
msgid "Packages sign:" msgid "Packages sign:"
msgstr "" msgstr ""
#: source/ubl-strings.h:78 #: source/ubl-strings.h:81
msgid "Repository sign:" msgid "Repository sign:"
msgstr "" msgstr ""
#: source/ubl-strings.h:79 #: source/ubl-strings.h:82
msgid "Package (-s) to add" msgid "Package (-s) to add"
msgstr "" msgstr ""
#: source/ubl-strings.h:80 #: source/ubl-strings.h:83
msgid "Package (-s) to remove" msgid "Package (-s) to remove"
msgstr "" msgstr ""
#: source/ubl-strings.h:81 #: source/ubl-strings.h:84
msgid "Package (-s) to move" msgid "Package (-s) to move"
msgstr "" msgstr ""
#: source/ubl-strings.h:82 #: source/ubl-strings.h:85
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: source/ubl-strings.h:83 #: source/ubl-strings.h:86
msgid "Path" msgid "Path"
msgstr "" msgstr ""
#: source/ubl-strings.h:84 #: source/ubl-strings.h:87
msgid "Remove package" msgid "Remove package"
msgstr "" msgstr ""
#: source/ubl-strings.h:85 #: source/ubl-strings.h:88
msgid "Add package" msgid "Add package"
msgstr "" msgstr ""
#: source/ubl-strings.h:87 #: source/ubl-strings.h:90
msgid "Repository sign failed - repository has no packages" msgid "Repository sign failed - repository has no packages"
msgstr "" msgstr ""
#: source/ubl-strings.h:88 #: source/ubl-strings.h:91
msgid "Data has been loaded" msgid "Data has been loaded"
msgstr "" msgstr ""
#: source/ubl-strings.h:89 #: source/ubl-strings.h:92
msgid "Failed to add packages"
msgstr ""
#: source/ubl-strings.h:93
msgid "Packages were added successfully" msgid "Packages were added successfully"
msgstr "" msgstr ""
#: source/ubl-strings.h:90 #: source/ubl-strings.h:94
msgid "Packages remove has failed"
msgstr ""
#: source/ubl-strings.h:95
msgid "Packages were removed successfully" msgid "Packages were removed successfully"
msgstr "" msgstr ""
#: source/ubl-strings.h:91 #: source/ubl-strings.h:96
msgid "Packages move has failed"
msgstr ""
#: source/ubl-strings.h:97
msgid "Packages were moved successfully" msgid "Packages were moved successfully"
msgstr "" msgstr ""
#: source/ubl-strings.h:92 #: source/ubl-strings.h:98
msgid "Changes saved" msgid "Changes saved"
msgstr "" msgstr ""
#: source/ubl-strings.h:93 #: source/ubl-strings.h:99
msgid "Key was successfully created" msgid "Key was successfully created"
msgstr "" msgstr ""
#: source/ubl-strings.h:94 #: source/ubl-strings.h:100
msgid "Key creation failed" msgid "Key creation failed"
msgstr "" msgstr ""
#: source/ubl-strings.h:96 #: source/ubl-strings.h:102
msgid "Choose" msgid "Choose"
msgstr "" msgstr ""
#: source/ubl-strings.h:97 #: source/ubl-strings.h:103
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: source/ubl-strings.h:99 #: source/ubl-strings.h:105
msgid "Open or create repository" msgid "Open or create repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:100 #: source/ubl-strings.h:106
msgid "Open existing repository" msgid "Open existing repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:101 #: source/ubl-strings.h:107
msgid "Configure repository" msgid "Configure repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:102 #: source/ubl-strings.h:108
msgid "Delete repository" msgid "Delete repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:103 #: source/ubl-strings.h:109
msgid "" msgid ""
"Add/Remove repository from\n" "Add/Remove repository from\n"
"local package sources" "local package sources"
msgstr "" msgstr ""
#: source/ubl-strings.h:104 #: source/ubl-strings.h:110
msgid "Enable/disable repository publish" msgid "Enable/disable repository publish"
msgstr "" msgstr ""
#: source/ubl-strings.h:105 #: source/ubl-strings.h:111
msgid "Check dependences" msgid "Check dependences"
msgstr "" msgstr ""
#: source/ubl-strings.h:106 #: source/ubl-strings.h:112
msgid "Sign ripository" msgid "Sign ripository"
msgstr "" msgstr ""
#: source/ubl-strings.h:107 #: source/ubl-strings.h:113
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: source/ubl-strings.h:109 #: source/ubl-strings.h:115
msgid "Operation done" msgid "Operation done"
msgstr "" msgstr ""
#: source/ubl-strings.h:111 #: source/ubl-strings.h:117
msgid "Choose branch or pack in branch to add file!" msgid "Choose branch or pack in branch to add file!"
msgstr "" msgstr ""
#: source/ubl-strings.h:112 #: source/ubl-strings.h:118
msgid "Choose repository or branch!" msgid "Choose repository or branch!"
msgstr "" msgstr ""
#: source/ubl-strings.h:113 #: source/ubl-strings.h:119
msgid "Choose pack to delete!" msgid "Choose pack to delete!"
msgstr "" msgstr ""
#: source/ubl-strings.h:114 #: source/ubl-strings.h:120
msgid "Choose repository to delete!" msgid "Choose repository to delete!"
msgstr "" msgstr ""
#: source/ubl-strings.h:115 #: source/ubl-strings.h:121
msgid "Choose repository or package to sign" msgid "Choose repository or package to sign"
msgstr "" msgstr ""
#: source/ubl-strings.h:117 #: source/ubl-strings.h:123
msgid "Name:" msgid "Name:"
msgstr "" msgstr ""
#: source/ubl-strings.h:118 #: source/ubl-strings.h:124
msgid "Branches:" msgid "Branches:"
msgstr "" msgstr ""
#: source/ubl-strings.h:119 #: source/ubl-strings.h:125
msgid "< Type branch name >" msgid "< Type branch name >"
msgstr "" msgstr ""
#: source/ubl-strings.h:120 #: source/ubl-strings.h:126
msgid "Name must be filled!" msgid "Name must be filled!"
msgstr "" msgstr ""
#: source/ubl-strings.h:121 #: source/ubl-strings.h:127
msgid "Choose path for new repository" msgid "Choose path for new repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:123 #: source/ubl-strings.h:129
msgid "Choose repository folder" msgid "Choose repository folder"
msgstr "" msgstr ""
#: source/ubl-strings.h:124 #: source/ubl-strings.h:130
msgid "Choose repository" msgid "Choose repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:126 #: source/ubl-strings.h:132
msgid "Absent" msgid "Absent"
msgstr "" msgstr ""
#: source/ubl-strings.h:127 #: source/ubl-strings.h:133
msgid "Dependences:" msgid "Dependences:"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:134
msgid "Digital signature" msgid "Digital signature"
msgstr "" msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:136
msgid "package" msgid "package"
msgstr "" msgstr ""
#: source/ubl-strings.h:131 #: source/ubl-strings.h:137
msgid "repository" msgid "repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:132 #: source/ubl-strings.h:138
msgid "Repeating packages were not added" msgid "Repeating packages were not added"
msgstr "" msgstr ""
#: source/ubl-strings.h:133 #: source/ubl-strings.h:139
msgid "This repository has already been added" msgid "This repository has already been added"
msgstr "" msgstr ""
#: source/ubl-strings.h:135 #: source/ubl-strings.h:141
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: source/ubl-strings.h:137 #: source/ubl-strings.h:143
msgid "Are you sure want to disable?" msgid "Are you sure want to disable?"
msgstr "" msgstr ""
#: source/ubl-strings.h:139 #: source/ubl-strings.h:145
msgid "Are you sure want to remove?" msgid "Are you sure want to remove?"
msgstr "" msgstr ""
#: source/ubl-strings.h:141 #: source/ubl-strings.h:147
msgid "Do not sign" msgid "Do not sign"
msgstr "" msgstr ""
#: source/ubl-strings.h:143 #: source/ubl-strings.h:149
msgid "Package name error - package has incorrect name pattern" msgid "Package name error - package has incorrect name pattern"
msgstr "" msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:151
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:153
msgid "Package search" msgid "Package search"
msgstr "" msgstr ""
#: source/ubl-strings.h:149 #: source/ubl-strings.h:155
msgid "Storage path" msgid "Storage path"
msgstr "" msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:157
msgid "Repository" msgid "Repository"
msgstr "" msgstr ""
#: source/ubl-strings.h:153 #: source/ubl-strings.h:159
msgid "Architecture" msgid "Architecture"
msgstr "" msgstr ""
#: source/ubl-strings.h:155 #: source/ubl-strings.h:161
msgid "Repository name" msgid "Repository name"
msgstr "" msgstr ""
#: source/ubl-strings.h:157 #: source/ubl-strings.h:163
msgid "Signature" msgid "Signature"
msgstr "" msgstr ""
#: source/ubl-strings.h:159 #: source/ubl-strings.h:165
msgid "Signature status" msgid "Signature status"
msgstr "" msgstr ""
#: source/ubl-strings.h:161 #: source/ubl-strings.h:167
msgid "Sign packages" msgid "Sign packages"
msgstr "" msgstr ""
#: source/ubl-strings.h:163 #: source/ubl-strings.h:169
msgid "Packages successfully signed" msgid "Packages successfully signed"
msgstr "" msgstr ""
#: source/ubl-strings.h:165 #: source/ubl-strings.h:171
msgid "Folder must contain repositories" msgid "Folder must contain repositories"
msgstr "" msgstr ""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:173
msgid "Folder must not be empty" msgid "Folder must not be empty"
msgstr "" msgstr ""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:175
msgid "Name must be 5 or more symbols" msgid "Name must be 5 or more symbols"
msgstr "" msgstr ""
#: source/ubl-strings.h:177
msgid "Same repository was chosen for source and target"
msgstr ""
#: source/ubl-strings.h:179
msgid "Signed"
msgstr ""
#: source/ubl-strings.h:180
msgid "Unsigned"
msgstr ""

@ -26,10 +26,18 @@ msgid "Repository management and configuring"
msgstr "Настройка параметров и управление репозиториями системы" msgstr "Настройка параметров и управление репозиториями системы"
#: source/ubl-strings.h:5 #: source/ubl-strings.h:5
msgid ""
"https://wiki.ublinux.ru/en/Software/Programs_and_utilities/All/ubl-settings-"
"repomanager"
msgstr ""
"https://wiki.ublinux.ru/ru/Software/Programs_and_utilities/All/ubl-settings-"
"repomanager"
#: source/ubl-strings.h:7
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?" msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-strings.h:6 #: source/ubl-strings.h:8
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
@ -37,327 +45,343 @@ msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи\n" "Вы будете перенаправлены на сайт с документацией где страницы помощи\n"
"переводятся и поддерживаются сообществом." "переводятся и поддерживаются сообществом."
#: source/ubl-strings.h:7 #: source/ubl-strings.h:9
msgid "Always redirect to online documentation" msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять" msgstr "Всегда перенаправлять"
#: source/ubl-strings.h:8 #: source/ubl-strings.h:10
msgid "Open documentation" msgid "Open documentation"
msgstr "Прочитать справку" msgstr "Прочитать справку"
#: source/ubl-strings.h:9 #: source/ubl-strings.h:11
msgid "Project Home Page" msgid "Project Home Page"
msgstr "Домашняя страница проекта" msgstr "Домашняя страница проекта"
#: source/ubl-strings.h:10 #: source/ubl-strings.h:12
msgid "Nothing were chosen" msgid "Nothing were chosen"
msgstr "Ничего не выбрано" msgstr "Ничего не выбрано"
#: source/ubl-strings.h:12 #: source/ubl-strings.h:14
msgid "Information" msgid "Information"
msgstr "Информация" msgstr "Информация"
#: source/ubl-strings.h:14 #: source/ubl-strings.h:16
msgid "Choose package(-s)" msgid "Choose package(-s)"
msgstr "Выбрать пакеты" msgstr "Выбрать пакеты"
#: source/ubl-strings.h:15 #: source/ubl-strings.h:17
msgid "Choose folder" msgid "Choose folder"
msgstr "Выбрать директорию для репозитория" msgstr "Выбрать директорию для репозитория"
#: source/ubl-strings.h:16 #: source/ubl-strings.h:18
msgid "Add packages" msgid "Add packages"
msgstr "Добавить пакеты" msgstr "Добавить пакеты"
#: source/ubl-strings.h:17 #: source/ubl-strings.h:19
msgid "Move packages" msgid "Move packages"
msgstr "Переместить пакеты" msgstr "Переместить пакеты"
#: source/ubl-strings.h:18 #: source/ubl-strings.h:20
msgid "Remove packages" msgid "Remove packages"
msgstr "Удалить пакеты" msgstr "Удалить пакеты"
#: source/ubl-strings.h:20 source/ubl-strings.h:39 #: source/ubl-strings.h:22 source/ubl-strings.h:41
msgid "Key creation" msgid "Key creation"
msgstr "Создание ключа" msgstr "Создание ключа"
#: source/ubl-strings.h:21 #: source/ubl-strings.h:23
msgid "Email:" msgid "Email:"
msgstr "Адрес электронной почты:" msgstr "Адрес электронной почты:"
#: source/ubl-strings.h:22 #: source/ubl-strings.h:24
msgid "Key additional configuration" msgid "Key additional configuration"
msgstr "Дополнительные параметры ключа" msgstr "Дополнительные параметры ключа"
#: source/ubl-strings.h:23 #: source/ubl-strings.h:25
msgid "Commentary:" msgid "Commentary:"
msgstr "Комментарий:" msgstr "Комментарий:"
#: source/ubl-strings.h:24 #: source/ubl-strings.h:26
msgid "Encryption type:" msgid "Encryption type:"
msgstr "Тип шифрования:" msgstr "Тип шифрования:"
#: source/ubl-strings.h:25 #: source/ubl-strings.h:27
msgid "key strength (in bits):" msgid "key strength (in bits):"
msgstr "Стойкость ключа (в битах):" msgstr "Стойкость ключа (в битах):"
#: source/ubl-strings.h:26 #: source/ubl-strings.h:28
msgid "Expires:" msgid "Expires:"
msgstr "Срок действия:" msgstr "Срок действия:"
#: source/ubl-strings.h:27 #: source/ubl-strings.h:29
msgid "Password:" msgid "Password:"
msgstr "Пароль:" msgstr "Пароль:"
#: source/ubl-strings.h:28 #: source/ubl-strings.h:30
msgid "Password confirmation:" msgid "Password confirmation:"
msgstr "Подтверждение пароля:" msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:29 #: source/ubl-strings.h:31
msgid "Timeless" msgid "Timeless"
msgstr "Бессрочный" msgstr "Бессрочный"
#: source/ubl-strings.h:30 #: source/ubl-strings.h:32
msgid "Until" msgid "Until"
msgstr "До" msgstr "До"
#: source/ubl-strings.h:32 #: source/ubl-strings.h:34
msgid "Add" msgid "Add"
msgstr "Добавить" msgstr "Добавить"
#: source/ubl-strings.h:34 #: source/ubl-strings.h:36
msgid "Update" msgid "Update"
msgstr "Обновить" msgstr "Обновить"
#: source/ubl-strings.h:35 #: source/ubl-strings.h:37
msgid "Configure storages" msgid "Configure storages"
msgstr "Редактировать хранилища" msgstr "Редактировать хранилища"
#: source/ubl-strings.h:36 #: source/ubl-strings.h:38
msgid "System update" msgid "System update"
msgstr "Обновление системы" msgstr "Обновление системы"
#: source/ubl-strings.h:38 #: source/ubl-strings.h:40
msgid "Empty important field" msgid "Empty important field"
msgstr "Пустое важное поле" msgstr "Пустое важное поле"
#: source/ubl-strings.h:41 #: source/ubl-strings.h:43
msgid "Repository data has been loaded successfully" msgid "Repository data has been loaded successfully"
msgstr "Информация о пакетах успешно загружена" msgstr "Информация о пакетах успешно загружена"
#: source/ubl-strings.h:43 #: source/ubl-strings.h:45
msgid "Saving has succeeded" msgid "Saving has succeeded"
msgstr "Успешно сохранено" msgstr "Успешно сохранено"
#: source/ubl-strings.h:45 #: source/ubl-strings.h:47
msgid "General" msgid "General"
msgstr "Общие" msgstr "Общие"
#: source/ubl-strings.h:46 #: source/ubl-strings.h:48
msgid "Publication" msgid "Publication"
msgstr "Публикация" msgstr "Публикация"
#: source/ubl-strings.h:47 #: source/ubl-strings.h:49
msgid "Trusted repository" msgid "Trusted repository"
msgstr "Доверенный репозиторий" msgstr "Доверенный репозиторий"
#: source/ubl-strings.h:48 #: source/ubl-strings.h:50
msgid "Server type:" msgid "Server type:"
msgstr "Тип сервера:" msgstr "Тип сервера:"
#: source/ubl-strings.h:49 #: source/ubl-strings.h:51
msgid "IP adress:" msgid "IP adress:"
msgstr "IP-адрес:" msgstr "IP-адрес:"
#: source/ubl-strings.h:50 #: source/ubl-strings.h:52
msgid "Port:" msgid "Port:"
msgstr "Порт:" msgstr "Порт:"
#: source/ubl-strings.h:51 #: source/ubl-strings.h:53
msgid "Publish" msgid "Publish"
msgstr "Опубликовать" msgstr "Опубликовать"
#: source/ubl-strings.h:52 #: source/ubl-strings.h:54
msgid "Code name:" msgid "Code name:"
msgstr "Кодовое имя:" msgstr "Кодовое имя:"
#: source/ubl-strings.h:53 #: source/ubl-strings.h:55
msgid "Branch:" msgid "Branch:"
msgstr "Ветка:" msgstr "Ветка:"
#: source/ubl-strings.h:54 #: source/ubl-strings.h:56
msgid "Architecture:" msgid "Architecture:"
msgstr "Архитектура:" msgstr "Архитектура:"
#: source/ubl-strings.h:55 #: source/ubl-strings.h:57
msgid "Components:" msgid "Components:"
msgstr "Компоненты" msgstr "Компоненты"
#: source/ubl-strings.h:56 #: source/ubl-strings.h:58
msgid "Signature:" msgid "Signature:"
msgstr "Подпись:" msgstr "Подпись:"
#: source/ubl-strings.h:57 #: source/ubl-strings.h:59
msgid "Sign" msgid "Sign"
msgstr "Подписать" msgstr "Подписать"
#: source/ubl-strings.h:59 #: source/ubl-strings.h:61
msgid "Move" msgid "Move"
msgstr "Переместить" msgstr "Переместить"
#: source/ubl-strings.h:60 #: source/ubl-strings.h:62
msgid "Remove" msgid "Remove"
msgstr "Удалить" msgstr "Удалить"
#: source/ubl-strings.h:62 #: source/ubl-strings.h:64
msgid "Sign repo" msgid "Sign repo"
msgstr "Подписать репозиторий" msgstr "Подписать репозиторий"
#: source/ubl-strings.h:63 #: source/ubl-strings.h:65
msgid "Remove repo" msgid "Remove repo"
msgstr "Удалить репозиторий" msgstr "Удалить репозиторий"
#: source/ubl-strings.h:64 #: source/ubl-strings.h:66
msgid "Manage storages" msgid "Manage storages"
msgstr "Управление хранилищами" msgstr "Управление хранилищами"
#: source/ubl-strings.h:65 #: source/ubl-strings.h:67
msgid "Storage:" msgid "Storage:"
msgstr "Хранилище:" msgstr "Хранилище:"
#: source/ubl-strings.h:66 #: source/ubl-strings.h:68
msgid "Open existing" msgid "Open existing"
msgstr "Открыть существующее хранилище" msgstr "Открыть существующее хранилище"
#: source/ubl-strings.h:67 #: source/ubl-strings.h:69
msgid "Create new" msgid "Create new"
msgstr "Создать" msgstr "Создать"
#: source/ubl-strings.h:68 #: source/ubl-strings.h:70
msgid "Create new storage"
msgstr "Создать новое хранилище"
#: source/ubl-strings.h:71
msgid "Disable" msgid "Disable"
msgstr "Отключить" msgstr "Отключить"
#: source/ubl-strings.h:69 #: source/ubl-strings.h:72
msgid "Delete" msgid "Delete"
msgstr "Удалить" msgstr "Удалить"
#: source/ubl-strings.h:70 #: source/ubl-strings.h:73
msgid "Add repository" msgid "Add repository"
msgstr "Добавить репозиторий" msgstr "Добавить репозиторий"
#: source/ubl-strings.h:71 #: source/ubl-strings.h:74
msgid "Repository (-ies)" msgid "Repository (-ies)"
msgstr "Репозиторий (-ии)" msgstr "Репозиторий (-ии)"
#: source/ubl-strings.h:72 #: source/ubl-strings.h:75
msgid "Accept" msgid "Accept"
msgstr "Принять" msgstr "Принять"
#: source/ubl-strings.h:74 #: source/ubl-strings.h:77
msgid "Repository:" msgid "Repository:"
msgstr "Репозиторий:" msgstr "Репозиторий:"
#: source/ubl-strings.h:75 #: source/ubl-strings.h:78
msgid "Source" msgid "Source"
msgstr "Источник" msgstr "Источник"
#: source/ubl-strings.h:76 #: source/ubl-strings.h:79
msgid "Target" msgid "Target"
msgstr "Назначение" msgstr "Назначение"
#: source/ubl-strings.h:77 #: source/ubl-strings.h:80
msgid "Packages sign:" msgid "Packages sign:"
msgstr "Подпись пакетов:" msgstr "Подпись пакетов:"
#: source/ubl-strings.h:78 #: source/ubl-strings.h:81
msgid "Repository sign:" msgid "Repository sign:"
msgstr "Подпись репозитория:" msgstr "Подпись репозитория:"
#: source/ubl-strings.h:79 #: source/ubl-strings.h:82
msgid "Package (-s) to add" msgid "Package (-s) to add"
msgstr "Пакет(-ы) для добавления" msgstr "Пакет(-ы) для добавления"
#: source/ubl-strings.h:80 #: source/ubl-strings.h:83
msgid "Package (-s) to remove" msgid "Package (-s) to remove"
msgstr "Пакет(-ы) для удаления" msgstr "Пакет(-ы) для удаления"
#: source/ubl-strings.h:81 #: source/ubl-strings.h:84
msgid "Package (-s) to move" msgid "Package (-s) to move"
msgstr "Пакет(-ы) для перемещения" msgstr "Пакет(-ы) для перемещения"
#: source/ubl-strings.h:82 #: source/ubl-strings.h:85
msgid "Name" msgid "Name"
msgstr "Имя" msgstr "Имя"
#: source/ubl-strings.h:83 #: source/ubl-strings.h:86
msgid "Path" msgid "Path"
msgstr "Путь" msgstr "Путь"
#: source/ubl-strings.h:84 #: source/ubl-strings.h:87
msgid "Remove package" msgid "Remove package"
msgstr "Удалить пакет" msgstr "Удалить пакет"
#: source/ubl-strings.h:85 #: source/ubl-strings.h:88
msgid "Add package" msgid "Add package"
msgstr "Добавить пакет" msgstr "Добавить пакет"
#: source/ubl-strings.h:87 #: source/ubl-strings.h:90
msgid "Repository sign failed - repository has no packages" msgid "Repository sign failed - repository has no packages"
msgstr "Ошибка подписи репозитория - репозиторий не содержит пакетов" msgstr "Ошибка подписи репозитория - репозиторий не содержит пакетов"
#: source/ubl-strings.h:88 #: source/ubl-strings.h:91
msgid "Data has been loaded" msgid "Data has been loaded"
msgstr "Данные загружены" msgstr "Данные загружены"
#: source/ubl-strings.h:89 #: source/ubl-strings.h:92
msgid "Failed to add packages"
msgstr "Ошибка добавления пакетов"
#: source/ubl-strings.h:93
msgid "Packages were added successfully" msgid "Packages were added successfully"
msgstr "Пакеты успешно добавлены" msgstr "Пакеты успешно добавлены"
#: source/ubl-strings.h:90 #: source/ubl-strings.h:94
msgid "Packages remove has failed"
msgstr "Ошибка удаления пакетов"
#: source/ubl-strings.h:95
msgid "Packages were removed successfully" msgid "Packages were removed successfully"
msgstr "Пакеты успешно удалены" msgstr "Пакеты успешно удалены"
#: source/ubl-strings.h:91 #: source/ubl-strings.h:96
msgid "Packages move has failed"
msgstr "Ошибка перемещения пакетов"
#: source/ubl-strings.h:97
msgid "Packages were moved successfully" msgid "Packages were moved successfully"
msgstr "Пакеты успешно перемещены" msgstr "Пакеты успешно перемещены"
#: source/ubl-strings.h:92 #: source/ubl-strings.h:98
msgid "Changes saved" msgid "Changes saved"
msgstr "Изменения сохранены" msgstr "Изменения сохранены"
#: source/ubl-strings.h:93 #: source/ubl-strings.h:99
msgid "Key was successfully created" msgid "Key was successfully created"
msgstr "Ключ был успешно создан" msgstr "Ключ был успешно создан"
#: source/ubl-strings.h:94 #: source/ubl-strings.h:100
msgid "Key creation failed" msgid "Key creation failed"
msgstr "Ошибка создания ключа" msgstr "Ошибка создания ключа"
#: source/ubl-strings.h:96 #: source/ubl-strings.h:102
msgid "Choose" msgid "Choose"
msgstr "Выбрать" msgstr "Выбрать"
#: source/ubl-strings.h:97 #: source/ubl-strings.h:103
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: source/ubl-strings.h:99 #: source/ubl-strings.h:105
msgid "Open or create repository" msgid "Open or create repository"
msgstr "Открыть или создать репозиторий" msgstr "Открыть или создать репозиторий"
#: source/ubl-strings.h:100 #: source/ubl-strings.h:106
msgid "Open existing repository" msgid "Open existing repository"
msgstr "Открыть и добавить репозиторий" msgstr "Открыть и добавить репозиторий"
#: source/ubl-strings.h:101 #: source/ubl-strings.h:107
msgid "Configure repository" msgid "Configure repository"
msgstr "Редактировать репозиторий" msgstr "Редактировать репозиторий"
#: source/ubl-strings.h:102 #: source/ubl-strings.h:108
msgid "Delete repository" msgid "Delete repository"
msgstr "Удалить репозиторий" msgstr "Удалить репозиторий"
#: source/ubl-strings.h:103 #: source/ubl-strings.h:109
msgid "" msgid ""
"Add/Remove repository from\n" "Add/Remove repository from\n"
"local package sources" "local package sources"
@ -365,107 +389,107 @@ msgstr ""
"Добавить/удалить репу из\n" "Добавить/удалить репу из\n"
" локальных источников пакетов" " локальных источников пакетов"
#: source/ubl-strings.h:104 #: source/ubl-strings.h:110
msgid "Enable/disable repository publish" msgid "Enable/disable repository publish"
msgstr "Включить/отключить публикацию" msgstr "Включить/отключить публикацию"
#: source/ubl-strings.h:105 #: source/ubl-strings.h:111
msgid "Check dependences" msgid "Check dependences"
msgstr "Проверить на битые зависимости" msgstr "Проверить на битые зависимости"
#: source/ubl-strings.h:106 #: source/ubl-strings.h:112
msgid "Sign ripository" msgid "Sign ripository"
msgstr "Подпись пакетов" msgstr "Подпись пакетов"
#: source/ubl-strings.h:107 #: source/ubl-strings.h:113
msgid "Open" msgid "Open"
msgstr "Открыть" msgstr "Открыть"
#: source/ubl-strings.h:109 #: source/ubl-strings.h:115
msgid "Operation done" msgid "Operation done"
msgstr "Операция завершена" msgstr "Операция завершена"
#: source/ubl-strings.h:111 #: source/ubl-strings.h:117
msgid "Choose branch or pack in branch to add file!" msgid "Choose branch or pack in branch to add file!"
msgstr "Выберите ветку чтобы добавить пакет!" msgstr "Выберите ветку чтобы добавить пакет!"
#: source/ubl-strings.h:112 #: source/ubl-strings.h:118
msgid "Choose repository or branch!" msgid "Choose repository or branch!"
msgstr "Выберите репозиторий!" msgstr "Выберите репозиторий!"
#: source/ubl-strings.h:113 #: source/ubl-strings.h:119
msgid "Choose pack to delete!" msgid "Choose pack to delete!"
msgstr "Выберите пакет для удаления!" msgstr "Выберите пакет для удаления!"
#: source/ubl-strings.h:114 #: source/ubl-strings.h:120
msgid "Choose repository to delete!" msgid "Choose repository to delete!"
msgstr "Выберите репозиторий для удаления!" msgstr "Выберите репозиторий для удаления!"
#: source/ubl-strings.h:115 #: source/ubl-strings.h:121
msgid "Choose repository or package to sign" msgid "Choose repository or package to sign"
msgstr "Выберите репозиторий или пакет для подписи" msgstr "Выберите репозиторий или пакет для подписи"
#: source/ubl-strings.h:117 #: source/ubl-strings.h:123
msgid "Name:" msgid "Name:"
msgstr "Имя:" msgstr "Имя:"
#: source/ubl-strings.h:118 #: source/ubl-strings.h:124
msgid "Branches:" msgid "Branches:"
msgstr "Ветки:" msgstr "Ветки:"
#: source/ubl-strings.h:119 #: source/ubl-strings.h:125
msgid "< Type branch name >" msgid "< Type branch name >"
msgstr "< Введите название ветки >" msgstr "< Введите название ветки >"
#: source/ubl-strings.h:120 #: source/ubl-strings.h:126
msgid "Name must be filled!" msgid "Name must be filled!"
msgstr "Введите название!" msgstr "Введите название!"
#: source/ubl-strings.h:121 #: source/ubl-strings.h:127
msgid "Choose path for new repository" msgid "Choose path for new repository"
msgstr "Выбрать расположение нового репозитория" msgstr "Выбрать расположение нового репозитория"
#: source/ubl-strings.h:123 #: source/ubl-strings.h:129
msgid "Choose repository folder" msgid "Choose repository folder"
msgstr "Выбрать директорию для репозитория" msgstr "Выбрать директорию для репозитория"
#: source/ubl-strings.h:124 #: source/ubl-strings.h:130
msgid "Choose repository" msgid "Choose repository"
msgstr "Выбрать репозиторий" msgstr "Выбрать репозиторий"
#: source/ubl-strings.h:126 #: source/ubl-strings.h:132
msgid "Absent" msgid "Absent"
msgstr "Отсутствует" msgstr "Отсутствует"
#: source/ubl-strings.h:127 #: source/ubl-strings.h:133
msgid "Dependences:" msgid "Dependences:"
msgstr "Зависит от:" msgstr "Зависит от:"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:134
msgid "Digital signature" msgid "Digital signature"
msgstr "Цифровая подпись" msgstr "Цифровая подпись"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:136
msgid "package" msgid "package"
msgstr "пакет" msgstr "пакет"
#: source/ubl-strings.h:131 #: source/ubl-strings.h:137
msgid "repository" msgid "repository"
msgstr "репозиторий" msgstr "репозиторий"
#: source/ubl-strings.h:132 #: source/ubl-strings.h:138
msgid "Repeating packages were not added" msgid "Repeating packages were not added"
msgstr "Дублирующиеся пакеты не были добавлены" msgstr "Дублирующиеся пакеты не были добавлены"
#: source/ubl-strings.h:133 #: source/ubl-strings.h:139
msgid "This repository has already been added" msgid "This repository has already been added"
msgstr "Этот репозиторий уже был добавлен" msgstr "Этот репозиторий уже был добавлен"
#: source/ubl-strings.h:135 #: source/ubl-strings.h:141
msgid "Close" msgid "Close"
msgstr "Закрыть" msgstr "Закрыть"
#: source/ubl-strings.h:137 #: source/ubl-strings.h:143
msgid "Are you sure want to disable?" msgid "Are you sure want to disable?"
msgstr "" msgstr ""
"Внимание! Вы хотите отключить хранилище от управления менеджером " "Внимание! Вы хотите отключить хранилище от управления менеджером "
@ -475,68 +499,80 @@ msgstr ""
"Примечание: в дальнейшем Вы можете заново подключить хранилище и управлять " "Примечание: в дальнейшем Вы можете заново подключить хранилище и управлять "
"им." "им."
#: source/ubl-strings.h:139 #: source/ubl-strings.h:145
msgid "Are you sure want to remove?" msgid "Are you sure want to remove?"
msgstr "" msgstr ""
"Внимание! Вы ходите удалить хранилище При этом хранилище и вложенные " "Внимание! Вы ходите удалить хранилище При этом хранилище и вложенные "
"репозитории будут безвозвратно удалены!" "репозитории будут безвозвратно удалены!"
#: source/ubl-strings.h:141 #: source/ubl-strings.h:147
msgid "Do not sign" msgid "Do not sign"
msgstr "Не подписывать" msgstr "Не подписывать"
#: source/ubl-strings.h:143 #: source/ubl-strings.h:149
msgid "Package name error - package has incorrect name pattern" msgid "Package name error - package has incorrect name pattern"
msgstr "Ошибка имени пакета - некорректное имя пакета" msgstr "Ошибка имени пакета - некорректное имя пакета"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:151
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Пароли не совпадают" msgstr "Пароли не совпадают"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:153
msgid "Package search" msgid "Package search"
msgstr "Поиск пакетов" msgstr "Поиск пакетов"
#: source/ubl-strings.h:149 #: source/ubl-strings.h:155
msgid "Storage path" msgid "Storage path"
msgstr "Расположение хранилища" msgstr "Расположение хранилища"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:157
msgid "Repository" msgid "Repository"
msgstr "Репозиторий" msgstr "Репозиторий"
#: source/ubl-strings.h:153 #: source/ubl-strings.h:159
msgid "Architecture" msgid "Architecture"
msgstr "Архитектура" msgstr "Архитектура"
#: source/ubl-strings.h:155 #: source/ubl-strings.h:161
msgid "Repository name" msgid "Repository name"
msgstr "Имя репозитория" msgstr "Имя репозитория"
#: source/ubl-strings.h:157 #: source/ubl-strings.h:163
msgid "Signature" msgid "Signature"
msgstr "Подпись" msgstr "Подпись"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:165
msgid "Signature status" msgid "Signature status"
msgstr "Статус подписи" msgstr "Статус подписи"
#: source/ubl-strings.h:161 #: source/ubl-strings.h:167
msgid "Sign packages" msgid "Sign packages"
msgstr "Подписать пакеты" msgstr "Подписать пакеты"
#: source/ubl-strings.h:163 #: source/ubl-strings.h:169
msgid "Packages successfully signed" msgid "Packages successfully signed"
msgstr "Пакеты успешно подписаны" msgstr "Пакеты успешно подписаны"
#: source/ubl-strings.h:165 #: source/ubl-strings.h:171
msgid "Folder must contain repositories" msgid "Folder must contain repositories"
msgstr "Директория должна содержать репозитории" msgstr "Директория должна содержать репозитории"
#: source/ubl-strings.h:167 #: source/ubl-strings.h:173
msgid "Folder must not be empty" msgid "Folder must not be empty"
msgstr "Директория должна быть пустой" msgstr "Директория должна быть пустой"
#: source/ubl-strings.h:167 #: source/ubl-strings.h:175
msgid "Name must be 5 or more symbols" msgid "Name must be 5 or more symbols"
msgstr "Имя должно содержать больше 5 символов" msgstr "Имя должно содержать больше 5 символов"
#: source/ubl-strings.h:177
msgid "Same repository was chosen for source and target"
msgstr "Для источника и назначения был выбран один и тот же репозиторий"
#: source/ubl-strings.h:179
msgid "Signed"
msgstr "Подписан"
#: source/ubl-strings.h:180
msgid "Unsigned"
msgstr "Не подписан"

@ -37,7 +37,6 @@ set(DEPENDFILES
../ubl-settings-repomanager-sign.glade ../ubl-settings-repomanager-sign.glade
../ubl-settings-repomanager-repo-block.glade ../ubl-settings-repomanager-repo-block.glade
../gresource.xml ../gresource.xml
../ubl-settings-repomanager-banner.png
../ubl-settings-repomanager.css ../ubl-settings-repomanager.css
) )
@ -77,6 +76,7 @@ set(SOURCE_FILES
ubl-settings-repomanager-remove.c ubl-settings-repomanager-remove.c
ubl-settings-repomanager-storage-list.c ubl-settings-repomanager-storage-list.c
ubl-settings-repomanager-storage-window.c ubl-settings-repomanager-storage-window.c
ubl-settings-repomanager-key.c
ubl-settings-repomanager.h ubl-settings-repomanager.h
ubl-strings.h ubl-strings.h
) )

@ -1,280 +1,202 @@
// #include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
void on_add_target_repo_selection_changed(GtkWidget *target,repo_add_window *window){
// gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data){ gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
// GtkTreeIter parent; char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// if (gtk_tree_model_iter_parent(model, &parent, iter)) if (!yon_char_is_empty(path_str)){
// return 0; storage_struct *storage = g_hash_table_lookup(main_config.storages,path_str);
// return 1; int size;
// } config_str repos = (config_str)g_hash_table_get_keys_as_array(storage->repos,&size);
for (int i=0;i<size;i++){
// config_str yon_tree_store_get_all_at_level(GtkTreeStore *target,GtkTreeIter *parent, int *size, int column, int level){ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->RepositoryCombo),repos[i],repos[i]);
// (*size)=0; }
// config_str final = NULL; }
// GtkTreePath *path=NULL, *parent_path=NULL; }
// GtkTreeIter iter;
// if (parent){ void on_add_target_arch_selection_changed(GtkWidget *target,repo_add_window *window){
// parent_path = gtk_tree_model_get_path(GTK_TREE_MODEL(target),parent); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
// } char *storage_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,parent); char *repo_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo));
// for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){ if (!yon_char_is_empty(repo_str)&&!yon_char_is_empty(storage_str)){
// path = gtk_tree_model_get_path(GTK_TREE_MODEL(target),&iter); storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_str);
// if (path && gtk_tree_path_get_depth(path)==level&&(!parent_path||gtk_tree_path_is_descendant(path,parent_path))){ repo_struct *repo = g_hash_table_lookup(storage->repos,repo_str);
// char *append=NULL; int size;
// gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,column,&append,-1); config_str archs = (config_str)g_hash_table_get_keys_as_array(repo->archs,&size);
// yon_char_parsed_add_or_create_if_exists(final,size,append); for (int i=0;i<size;i++){
// } gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo),archs[i],archs[i]);
// gtk_tree_path_free(path); }
// } gtk_widget_set_sensitive(window->RepoSignCombo,1);
// return final; } else {
// } gtk_widget_set_sensitive(window->RepoSignCombo,0);
// void on_add_target_repo_selection_changed(GtkWidget *target,repo_add_window *window){ }
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->RepositoryCombo)); }
// char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// if (!yon_char_is_empty(path_str)){ void on_arch_chosen(GtkWidget *target,repo_add_window *window){
// GtkTreeIter iter, itar; char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
// GtkTreePath *path = gtk_tree_path_new_from_string(path_str); if (!yon_char_is_empty(path_str)){
// if (gtk_tree_model_get_iter(GTK_TREE_MODEL(window->tree_copy),&iter,path)){ gtk_widget_set_sensitive(window->PackageSignCombo,1);
} else {
// int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); gtk_widget_set_sensitive(window->PackageSignCombo,0);
// for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ }
// char *current; }
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&current,-1);
// if (!yon_char_is_empty(current)){ void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window *window){
// char *path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); gtk_list_store_clear(GTK_LIST_STORE(window->PackagesList));
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->RepositoryCombo),path_str,current); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))==-1){
// } gtk_widget_set_sensitive(window->AddPackageButton,0);
// } } else {
// } gtk_widget_set_sensitive(window->AddPackageButton,1);
}
// } }
// }
void on_add_accept(GtkWidget *self, dictionary *dict){
// void on_add_target_arch_selection_changed(GtkWidget *target,repo_add_window *window){ repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*);
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo)); filechooser_window *dialog = yon_dictionary_get_data(dict->first->next,filechooser_window*);
// char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo)); int size;
// if (!yon_char_is_empty(path_str)){ config_str packages = yon_char_parse(dialog->last_success_selection,&size,",");
// GtkTreeIter iter, itar; for (int i=0;i<size;i++){
// GtkTreePath *path = gtk_tree_path_new_from_string(path_str); if (yon_file_is_directory(packages[i])){
// if (gtk_tree_model_get_iter(GTK_TREE_MODEL(window->tree_copy),&iter,path)){ int dir_size;
config_str files = yon_file_ls(packages[i],&dir_size);
// int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); for (int k=0;k<dir_size;k++){
// for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ if (strstr(files[k],".pkg.tar")&&!strstr(files[k],".sig")){
// char *current, *current_path; GtkTreeIter iter;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&current,3,&current_path,-1); int temp_size;
// if (!yon_char_is_empty(current)){ char *full_path = yon_char_unite(packages[i],"/",files[k],NULL);
// char *path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); config_str name = yon_config_load(yon_get_package_name_from_filename(full_path),&temp_size);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo),path_str,current); if (name&&!yon_char_is_empty(name[0]))
yon_char_remove_last_symbol(name[0],'\n');
// } gtk_list_store_append(window->PackagesList,&iter);
// } gtk_list_store_set(window->PackagesList,&iter,1,name&&!yon_char_is_empty(name[0])?name[0]:"",2,full_path,-1);
// } free(full_path);
// gtk_widget_set_sensitive(window->RepoSignCombo,1); }
}
// } else {
// gtk_widget_set_sensitive(window->RepoSignCombo,0); } else {
GtkTreeIter iter;
// } int temp_size;
// } config_str name = yon_config_load(yon_get_package_name_from_filename(packages[i]),&temp_size);
if (temp_size<=0){
// void on_arch_chosen(GtkWidget *target,repo_add_window *window){ yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); return;
// if (!yon_char_is_empty(path_str)){ }
// gtk_widget_set_sensitive(window->PackageSignCombo,1); yon_char_remove_last_symbol(name[0],'\n');
// } else { if (!yon_gtk_tree_model_check_exist(GTK_TREE_MODEL(window->PackagesList),&iter,name[0],1)){
// gtk_widget_set_sensitive(window->PackageSignCombo,0); gtk_list_store_append(window->PackagesList,&iter);
// } gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,packages[i],-1);
// } } else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window *window){ }
// gtk_list_store_clear(GTK_LIST_STORE(window->PackagesList));
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))==-1){ }
// gtk_widget_set_sensitive(window->AddPackageButton,0); }
// } else { }
// gtk_widget_set_sensitive(window->AddPackageButton,1);
// } void on_file_chooser_file_activate(GtkWidget *self, dictionary *dict){
// } on_add_accept(self,dict);
}
// void on_move_storage_changed(GtkWidget *self, repo_add_window *window){
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry));
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry)); void on_add_package(GtkWidget *self, repo_add_window *window){
// GtkTreeIter iter,itar; filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
// char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"filechooserWindow");
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveTargetStorageEntry),id); gtk_label_set_text(GTK_LABEL(dialog->HeaderTopic),CHOSE_PACKAGES_TITLE_LABEL);
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id);
// int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); GtkFileFilter *filter = gtk_file_filter_new();
// for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]");
// char *target; gtk_file_filter_set_name(filter,"*.pkg.tar*");
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&target,-1); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
// char *child_id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry),child_id,target); gtk_widget_show(dialog->ChooseFolderCheck);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry),child_id,target); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog->MainFileChooser),1);
// } if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
// } dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// void on_add_accept(GtkWidget *self, dictionary *dict){ yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
// repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*); on_add_accept(self,dict);
// file_chooser_window *dialog = yon_dictionary_get_data(dict->first->next,file_chooser_window*); }
// char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); gtk_widget_destroy(dialog->Window);
// char *path,*arch_name; free(dialog);
// GtkTreeIter iter,itar,itor; }
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id);
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,2,&arch_name,3,&path,-1); void on_remove_package(GtkWidget *self, repo_add_window *window){
// char *packages; GtkTreeIter iter;
// yon_window_config_get_parameter("package_info",path,&packages,YON_TYPE_STRING); GtkTreeModel *model;
// int size; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){
// config_str parsed = yon_char_parse(packages,&size,","); gtk_list_store_remove(window->PackagesList,&iter);
// GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog->FileChooserWidget)); }
// for (int i=0;i<g_slist_length(list);i++){ }
// char *current = g_slist_nth_data(list,i);
// if (yon_char_parsed_check_exist(parsed,size,current)==-1){ void on_add_window_tree_changed(GtkWidget *self, repo_add_window *window){
// int name_size; gtk_label_set_text(GTK_LABEL(window->InfoLabel),"");
// config_str name = yon_config_load(yon_get_package_name_from_filename(current),&name_size); GtkTreeModel *model;
// if (name_size<=0){ GtkTreeIter iter;
// yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){
// return; gtk_widget_set_sensitive(window->RemoveButton,1);
// } char *target;
// yon_char_remove_last_symbol(name[0],'\n'); gtk_tree_model_get(model,&iter,2,&target,-1);
// if (!yon_gtk_tree_model_check_exist(GTK_TREE_MODEL(window->PackagesList),&iter,name[0],1)){ int size;
// if (name_size<=0){ config_str info = yon_config_load(get_package_info_command(target),&size);
// yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_package_info_set_markup(info,size);
// return; char *result = yon_char_parsed_to_string(info,size,"");
// } gtk_label_set_markup(GTK_LABEL(window->InfoLabel),result);
// gtk_list_store_append(window->PackagesList,&itar); yon_char_parsed_free(info,size);
// gtk_list_store_set(window->PackagesList,&itar,1,name[0],2,current,3,1,-1); if (!yon_char_is_empty(result)) free(result);
// } else { } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); gtk_widget_set_sensitive(window->RemoveButton,0);
// } }
// yon_char_parsed_free(name,name_size); }
// }
// }
// gtk_widget_destroy(dialog->Window); void on_add_packages_accept(GtkWidget *self, dictionary *dict){
// if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->tree_copy),&iter)){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// gtk_widget_set_sensitive(window->StorageCombo,0); repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// gtk_widget_set_sensitive(window->RepositoryCombo,0);
// gtk_widget_set_sensitive(window->ArchitectureCombo,0); const char *storage = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// } const char *repo = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo));
// } const char *arch = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
// void on_add_package(GtkWidget *self, repo_add_window *window){ const char *repo_sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// file_chooser_window *dialog = yon_file_chooser_new(); const char *package_sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PackageSignCombo));
// yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"filechooserWindow"); GtkTreeIter iter;
// gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),CHOSE_PACKAGES_TITLE_LABEL); GtkTreeModel *model = GTK_TREE_MODEL(window->PackagesList);
// gtk_widget_show(dialog->Window); int size;
// GtkFileFilter *filter = gtk_file_filter_new(); config_str parsed = NULL;
// gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]"); for_iter(model,&iter){
// gtk_file_filter_set_name(filter,"*.pkg.tar*"); char *path;
// dictionary *dict = NULL; gtk_tree_model_get(model,&iter,2,&path,-1);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_char_parsed_add_or_create_if_exists(parsed, &size,path);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog); }
// gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter);
// g_signal_connect(G_OBJECT(dialog->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); char *packages = yon_char_parsed_to_string(parsed,size," ");
// g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_add_accept),dict); char *command = NULL;
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"file-activated",G_CALLBACK(on_file_chooser_file_activate),dict); if (repo_sign&&package_sign){
// } command = add_packages_sign_command(storage,arch,repo,repo_sign,package_sign,packages);
} else if (!yon_char_is_empty(repo_sign)){
// void on_remove_package(GtkWidget *self, repo_add_window *window){ command = add_packages_repo_sign_command(storage,arch,repo,repo_sign,packages);
// char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo)); } else if (!yon_char_is_empty(package_sign)){
// char *storage = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo)); command = add_packages_package_sign_command(storage,arch,repo,package_sign,packages);
// char *repo; } else {
// char *path; command = add_packages_command(storage,arch,repo,packages);
// GtkTreeModel *model; }
// GtkTreeIter iter,itar,itor;
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&itor,storage); if (system(yon_debug_output("%s\n",command))){
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itor,3,&storage,-1); yon_ubl_status_box_render(PACKAGES_ADD_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} else {
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); yon_ubl_status_box_render(PACKAGES_ADD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&itar)){ }
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,2,&repo,3,&path,-1); gtk_widget_destroy(window->MainWindow);
// gtk_list_store_remove(window->PackagesList,&itar); yon_interface_update(widgets);
// } free(window);
// if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->tree_copy),&iter)){
// gtk_widget_set_sensitive(window->StorageCombo,1); if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->PackagesList),&iter)){
// gtk_widget_set_sensitive(window->RepositoryCombo,1); gtk_widget_set_sensitive(window->StorageCombo,0);
// gtk_widget_set_sensitive(window->ArchitectureCombo,1); gtk_widget_set_sensitive(window->RepositoryCombo,0);
// } gtk_widget_set_sensitive(window->ArchitectureCombo,0);
// } }
// void on_add_window_tree_changed(GtkWidget *self, repo_add_window *window){ }
// gtk_label_set_text(GTK_LABEL(window->InfoLabel),"");
// GtkTreeModel *model;
// GtkTreeIter iter;
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){
// gtk_widget_set_sensitive(window->RemoveButton,1);
// char *target;
// gtk_tree_model_get(model,&iter,2,&target,-1);
// int size;
// config_str info = yon_config_load(get_package_info_command(target),&size);
// char *result = yon_char_parsed_to_string(info,size,"");
// gtk_label_set_text(GTK_LABEL(window->InfoLabel),result);
// yon_char_parsed_free(info,size);
// free(result);
// } else {
// gtk_widget_set_sensitive(window->RemoveButton,0);
// }
// }
// void on_add_packages_accept(GtkWidget *self, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// GtkTreeIter iter, itar;
// char *storage;
// if (yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->StorageCombo),GTK_TREE_MODEL(window->tree_copy),&itar)){
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&storage,-1);
// const char *repo = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
// const char *arch = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
// GtkTreeModel *model = GTK_TREE_MODEL(window->PackagesList);
// int size=0;
// config_str packages=NULL;
// int valid = gtk_tree_model_get_iter_first(model,&iter);
// for (;valid;valid=gtk_tree_model_iter_next(model,&iter)){
// char *target;
// gtk_tree_model_get(model,&iter,2,&target,-1);
// yon_char_parsed_add_or_create_if_exists(packages,&size,target);
// free(target);
// }
// if (size>0){
// char *command = NULL;
// int repo_sign = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSignCombo));
// int pack_sign = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PackageSignCombo));
// if (repo_sign&&pack_sign){
// command = add_packages_sign_command(storage,arch,repo,gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo)),gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PackageSignCombo)),yon_char_parsed_to_string(packages,size," "));
// } else if (repo_sign){
// command = add_packages_repo_sign_command(storage,arch,repo,gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo)),yon_char_parsed_to_string(packages,size," "));
// } else if (pack_sign){
// command = add_packages_package_sign_command(storage,arch,repo,gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PackageSignCombo)),yon_char_parsed_to_string(packages,size," "));
// } else {
// command = add_packages_command(storage,arch,repo,yon_char_parsed_to_string(packages,size," "));
// }
// yon_debug_output("%s\n",command);
// if (!system(command)){
// yon_window_config_add_instant_parameter(yon_char_unite(storage,"/",repo,"/",arch,NULL),"package_info",yon_char_parsed_to_string(packages,size,","),YON_TYPE_STRING);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL);
// gtk_tree_store_clear(widgets->RepoList);
// yon_gtk_tree_store_copy_full(window->tree_copy,widgets->RepoList);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),GTK_TREE_MODEL(widgets->RepoList));
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
// if (!yon_char_is_empty(id)){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoList),&iter,id);
// gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),gtk_tree_path_new_from_string(id));
// gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&iter);
// on_main_tree_selection_changed(NULL,widgets);
// }
// gtk_widget_destroy(window->MainWindow);
// yon_ubl_status_box_render(PACKAGES_ADD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// yon_config_load_update(widgets);
// }
// } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// }
// } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// }
// }
// void on_repo_sign_load(GtkWidget *self, repo_add_window *window){ // void on_repo_sign_load(GtkWidget *self, repo_add_window *window){
// GtkTreeIter iter; // GtkTreeIter iter;
@ -285,156 +207,125 @@
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignCombo),sign); // gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignCombo),sign);
// } // }
// void on_add_clicked(GtkWidget *self, main_window *widgets){
// repo_add_window *window = yon_repo_add_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),ADD_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),ADD_PACKAGES_TITLE_LABEL);
// GtkTreeIter iter;
// for_iter (window->tree_copy,&iter){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&current,-1);
// if (!yon_char_is_empty(current)){
// char *path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&iter);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),path,current);
// }
// }
// yon_sign_list_update();
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->PackageSignCombo),0);
// dictionary *dict = NULL;
// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
// g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window);
// g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window);
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_add_packages_accept),dict);
// g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window);
// g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_remove_package),window);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
// yon_add_window_set_selected(widgets,window);
// GtkTreeModel *model;
// GList *list = NULL;
// char *full_path;
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&full_path,-1);
// if (list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoPackagesTree)),&model)){
// for (int i=0; i<g_list_length(list);i++){
// GtkTreeIter itar;
// char *path;
// gtk_tree_model_get_iter(model, &iter,g_list_nth_data(list,i));
// gtk_tree_model_get(model,&iter,1,&path,-1);
// gtk_list_store_append(window->PackagesList,&itar);
// char *temp = yon_char_unite(full_path,"/",path,NULL);
// free(full_path);
// full_path = temp;
// gtk_list_store_set(window->PackagesList,&itar,1,path,2,full_path,-1);
// }
// }
// }
// gtk_widget_show(window->MainWindow);
// }
void yon_add_window_set_selected(main_window *widgets, repo_add_window *window){
// void on_rmb_move(GtkWidget *self, main_window *widgets){ GtkTreeIter iter, itar, itor;
// repo_add_window *window = on_move_clicked(NULL,widgets);
// GtkTreeModel *model; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){
// GtkTreeIter iter; int depth = gtk_tree_store_iter_depth(widgets->RepoList,&iter);
// char *path; char *storage=NULL, *repo=NULL, *arch=NULL;
// gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter); storage_struct *storage_str;
// gtk_tree_model_get(model,&iter,3,&path,-1); gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,7,&storage_str,-1);
// GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model); if (depth==2){
// for (int i=0;i<g_list_length(list);i++){ storage = ((arch_struct*)storage_str)->storage_path;
// GtkTreeIter itar; repo = ((arch_struct*)storage_str)->repo_name;
// char *filename, *name; arch = ((arch_struct*)storage_str)->name;
// gtk_tree_model_get_iter(model,&iter,g_list_nth_data(list,i)); }
// gtk_tree_model_get(model,&iter,1,&name,2,&filename,-1); if (!yon_char_is_empty(storage)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->StorageCombo),storage);
// char *full_path = yon_char_unite(path,"/",filename,NULL); while(gtk_events_pending()) gtk_main_iteration();
// gtk_list_store_append(window->PackagesList,&itar); if (!yon_char_is_empty(repo)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepositoryCombo),repo);
// gtk_list_store_set(window->PackagesList,&itar,1,name,2,full_path,-1); while(gtk_events_pending()) gtk_main_iteration();
// free(full_path); if (!yon_char_is_empty(arch)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ArchitectureCombo),arch);
// free(filename); }
// free(name); }
// }
// } repo_add_window *yon_repo_add_window_new(){
repo_add_window *window = malloc(sizeof(repo_add_window));
// repo_add_window *yon_repo_add_window_new(){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_add);
// repo_add_window *window = malloc(sizeof(repo_add_window)); window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_add); window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow"); window->StorageCombo = yon_gtk_builder_get_widget(builder,"StorageCombo");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->StorageCombo = yon_gtk_builder_get_widget(builder,"StorageCombo"); window->RepositoryCombo = yon_gtk_builder_get_widget(builder,"RepositoryCombo");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); window->ArchitectureCombo = yon_gtk_builder_get_widget(builder,"ArchitectureCombo");
// window->RepositoryCombo = yon_gtk_builder_get_widget(builder,"RepositoryCombo"); window->MoveSourceFrame = yon_gtk_builder_get_widget(builder,"MoveSourceFrame");
// window->ArchitectureCombo = yon_gtk_builder_get_widget(builder,"ArchitectureCombo"); window->MoveSourceStorageEntry = yon_gtk_builder_get_widget(builder,"MoveSourceStorageEntry");
// window->MoveSourceFrame = yon_gtk_builder_get_widget(builder,"MoveSourceFrame"); window->MoveSourceRepoEntry = yon_gtk_builder_get_widget(builder,"MoveSourceRepoEntry");
// window->MoveSourceStorageEntry = yon_gtk_builder_get_widget(builder,"MoveSourceStorageEntry"); window->MoveSourceArchEntry = yon_gtk_builder_get_widget(builder,"MoveSourceArchEntry");
// window->MoveSourceRepoEntry = yon_gtk_builder_get_widget(builder,"MoveSourceRepoEntry"); window->MoveTargetFrame = yon_gtk_builder_get_widget(builder,"MoveTargetFrame");
// window->MoveSourceArchEntry = yon_gtk_builder_get_widget(builder,"MoveSourceArchEntry"); window->MoveTargetStorageEntry = yon_gtk_builder_get_widget(builder,"MoveTargetStorageEntry");
// window->MoveTargetFrame = yon_gtk_builder_get_widget(builder,"MoveTargetFrame"); window->MoveTargetRepoEntry = yon_gtk_builder_get_widget(builder,"MoveTargetRepoEntry");
// window->MoveTargetStorageEntry = yon_gtk_builder_get_widget(builder,"MoveTargetStorageEntry"); window->MoveTargetArchEntry = yon_gtk_builder_get_widget(builder,"MoveTargetArchEntry");
// window->MoveTargetRepoEntry = yon_gtk_builder_get_widget(builder,"MoveTargetRepoEntry"); window->PackageSignCombo = yon_gtk_builder_get_widget(builder,"PackageSignCombo");
// window->MoveTargetArchEntry = yon_gtk_builder_get_widget(builder,"MoveTargetArchEntry"); window->RepoSignCombo = yon_gtk_builder_get_widget(builder,"RepoSignCombo");
// window->PackageSignCombo = yon_gtk_builder_get_widget(builder,"PackageSignCombo"); window->AddPackageButton = yon_gtk_builder_get_widget(builder,"AddPackageButton");
// window->RepoSignCombo = yon_gtk_builder_get_widget(builder,"RepoSignCombo"); window->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
// window->AddPackageButton = yon_gtk_builder_get_widget(builder,"AddPackageButton"); window->PackagesTree = yon_gtk_builder_get_widget(builder,"PackagesTree");
// window->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); window->InfoLabel = yon_gtk_builder_get_widget(builder,"InfoLabel");
// window->PackagesTree = yon_gtk_builder_get_widget(builder,"PackagesTree"); window->PackagesToAddLabel = yon_gtk_builder_get_widget(builder,"PackagesToAddLabel");
// window->InfoLabel = yon_gtk_builder_get_widget(builder,"InfoLabel"); window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
// window->PackagesToAddLabel = yon_gtk_builder_get_widget(builder,"PackagesToAddLabel"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); window->PackagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PackagesList"));
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->PackagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PackagesList")); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// window->tree_copy = gtk_tree_store_new(7,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT); g_signal_connect(G_OBJECT(window->PackagesTree),"cursor-changed",G_CALLBACK(on_add_window_tree_changed),window);
// yon_gtk_tree_store_copy_full(main_config.tree_store,window->tree_copy);
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); window->added_packages_archs = NULL;
// g_signal_connect(G_OBJECT(window->PackagesTree),"cursor-changed",G_CALLBACK(on_add_window_tree_changed),window); window->removed_packages_archs = NULL;
// window->added_packages_archs = NULL; return window;
// window->removed_packages_archs = NULL; }
// return window; void yon_add_window_add_chosen_packages(main_window *widgets, repo_add_window *window){
// } GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->RepoFileList);
// void yon_add_window_set_selected(main_window *widgets, repo_add_window *window){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL,&iter)){
// GtkTreeIter iter; char *target, *path;
gtk_tree_model_get(model,&iter,1,&target,2,&path,-1);
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){ gtk_list_store_append(window->PackagesList,&iter);
gtk_list_store_set(window->PackagesList,&iter,1,target,2,path,-1);
// char *target = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(widgets->RepoList),&iter); }
// int mod = yon_char_count(target,":")+1; GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoPackagesTree)),NULL);
// char *arc=NULL; GList *liter;
// char *repo=NULL; if (list){
// char *stor=NULL; for (liter=list;liter;liter=liter->next){
// if (mod ==3){ gtk_tree_model_get_iter(model,&iter,(GtkTreePath*)liter->data);
// arc = yon_char_new(target); char *target, *path;
// char *temp = yon_char_new(target); gtk_tree_model_get(model,&iter,2,&target,-1);
// repo = yon_char_divide(temp,yon_char_find_last(temp,':')); gtk_list_store_append(window->PackagesList,&iter);
// free(temp); gtk_list_store_set(window->PackagesList,&iter,1,target,-1);
// temp = yon_char_new(repo); }
// stor = yon_char_divide(temp,yon_char_find_last(temp,':')); }
// free(temp); }
// } else if (mod>=2){
// repo = yon_char_new(target); void on_add_clicked(GtkWidget *self, main_window *widgets){
// char *temp = yon_char_new(target); repo_add_window *window = yon_repo_add_window_new();
// stor = yon_char_divide(temp,yon_char_find_last(temp,':')); yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),ADD_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
// free(temp); gtk_label_set_text(GTK_LABEL(window->HeadLabel),ADD_PACKAGES_TITLE_LABEL);
// } else if (mod>=1){ GtkTreeIter iter;
// stor = yon_char_new(target); int size;
// } config_str storages = (config_str)g_hash_table_get_keys_as_array(main_config.storages,&size);
for (int i=0;i<size;i++){
// if (stor) gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),storages[i],storages[i]);
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->StorageCombo),stor); }
// if (repo)
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepositoryCombo),repo); yon_sign_list_update();
// if (arc) yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ArchitectureCombo),arc); yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
// }
// } gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PackageSignCombo),0);
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_add_packages_accept),dict);
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window);
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_remove_package),window);
yon_rmb_menu_setup(window->PackagesTree,(int(*)(void*))gtk_widget_is_sensitive,window->AddPackageButton,
ADD_PACKAGE_LABEL,add_icon_name,G_CALLBACK(on_add_package),window,
REMOVE_PACKAGE_LABEL,remove_icon,G_CALLBACK(on_remove_package),window,
NULL);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_add_window_set_selected(widgets,window);
// yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
}

@ -68,7 +68,7 @@ repo_struct *yon_repo_struct_new(){
storage->path=NULL; storage->path=NULL;
storage->storage_path=NULL; storage->storage_path=NULL;
storage->archs = g_hash_table_new(g_str_hash,g_str_equal); storage->archs = g_hash_table_new(g_str_hash,g_str_equal);
storage->sign_status=0; storage->sign_status=NULL;
return storage; return storage;
} }
@ -107,6 +107,18 @@ arch_struct *yon_arch_struct_new(){
return storage; return storage;
} }
config_str yon_arch_struct_get_packages(arch_struct *arch, int *size){
char *command = yon_get_packages_command(arch->storage_path,arch->repo_name,arch->name);
(*size)=0;
config_str packages = yon_config_load(command,size);
if (size&&packages){
for (int i=0;i<(*size);i++){
yon_char_remove_last_symbol(packages[i],'\n');
}
}
return packages;
}
void yon_package_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){ void yon_package_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){
GList *list = g_hash_table_get_keys(source_hash); GList *list = g_hash_table_get_keys(source_hash);
GList *iter; GList *iter;
@ -120,7 +132,7 @@ void yon_package_hash_table_clone(GHashTable *source_hash, GHashTable *target_ha
arch_struct *yon_arch_copy_full(arch_struct *repo){ arch_struct *yon_arch_copy_full(arch_struct *repo){
arch_struct *copy = yon_arch_struct_new(); arch_struct *copy = yon_arch_struct_new();
copy->name=yon_char_new(repo->name); copy->name=yon_char_new(repo->name);
copy->path=yon_char_new(repo->name); copy->path=yon_char_new(repo->path);
copy->storage_path=yon_char_new(repo->storage_path); copy->storage_path=yon_char_new(repo->storage_path);
copy->repo_name=yon_char_new(repo->repo_name); copy->repo_name=yon_char_new(repo->repo_name);
yon_package_hash_table_clone(repo->packages,copy->packages); yon_package_hash_table_clone(repo->packages,copy->packages);
@ -140,7 +152,7 @@ void yon_arch_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash)
repo_struct *yon_repo_copy_full(repo_struct *repo){ repo_struct *yon_repo_copy_full(repo_struct *repo){
repo_struct *copy = yon_repo_struct_new(); repo_struct *copy = yon_repo_struct_new();
copy->name=yon_char_new(repo->name); copy->name=yon_char_new(repo->name);
copy->path=yon_char_new(repo->name); copy->path=yon_char_new(repo->path);
copy->storage_path=yon_char_new(repo->storage_path); copy->storage_path=yon_char_new(repo->storage_path);
copy->sign_status=repo->sign_status; copy->sign_status=repo->sign_status;
yon_arch_hash_table_clone(repo->archs,copy->archs); yon_arch_hash_table_clone(repo->archs,copy->archs);
@ -160,7 +172,7 @@ void yon_repo_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash)
storage_struct *yon_storage_copy_full(storage_struct *storage){ storage_struct *yon_storage_copy_full(storage_struct *storage){
storage_struct *copy = yon_storage_struct_new(); storage_struct *copy = yon_storage_struct_new();
copy->name=yon_char_new(storage->name); copy->name=yon_char_new(storage->name);
copy->path=yon_char_new(storage->name); copy->path=yon_char_new(storage->path);
copy->sign_status=storage->sign_status; copy->sign_status=storage->sign_status;
yon_repo_hash_table_clone(storage->repos,copy->repos); yon_repo_hash_table_clone(storage->repos,copy->repos);
return copy; return copy;
@ -175,3 +187,107 @@ void yon_storage_hash_table_clone(GHashTable *source_hash, GHashTable *target_ha
g_hash_table_insert(target_hash,storage_copy->path,storage_copy); g_hash_table_insert(target_hash,storage_copy->path,storage_copy);
} }
} }
void yon_storage_struct_add_repo(storage_struct *storage,repo_struct *repo){
char *str = config(STORAGE(storage->path));
if (!yon_char_is_empty(str)){
int size;
config_str parsed = yon_char_parse(str,&size,";");
if (size>1&&!yon_char_is_empty(parsed[1])){
int added_size;
config_str added = yon_char_parse(parsed[1],&added_size,",");
if (yon_char_parsed_check_exist(added,added_size,repo->name)==-1){
yon_char_parsed_add_or_create_if_exists(added,&added_size,repo->name);
} else {
yon_char_parsed_free(added,added_size);
return;
}
if (!yon_char_is_empty(parsed[1])) free(parsed[1]);
parsed[1] = yon_char_parsed_to_string(parsed,size,",");
} else if (size>0){
yon_char_parsed_add_or_create_if_exists(parsed,&size,repo->name);
} else {
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
yon_char_parsed_add_or_create_if_exists(parsed,&size,repo->name);
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
}
char *final = yon_char_parsed_to_string_full(parsed,size,";");
yon_config_register(STORAGE(storage->path),STORAGE_command,final);
free(final);
if (parsed&&size) yon_char_parsed_free(parsed,size);
} else {
char *final = yon_char_unite(";",repo->name,";",NULL);
yon_config_register(STORAGE(storage->path),STORAGE_command,final);
free(final);
}
}
void yon_storage_struct_remove(storage_struct *storage,repo_struct *repo){
char *str = config(STORAGE(storage->path));
if (!yon_char_is_empty(str)){
int size;
config_str parsed = yon_char_parse(str,&size,";");
if (size>0&&!yon_char_is_empty(parsed[0])){
int removed_size;
config_str removed = yon_char_parse(parsed[0],&removed_size,",");
if (yon_char_parsed_check_exist(removed,removed_size,repo->name)==-1){
yon_char_parsed_add_or_create_if_exists(removed,&removed_size,repo->name);
} else {
yon_char_parsed_free(removed,removed_size);
return;
}
if (!yon_char_is_empty(parsed[1])) free(parsed[1]);
parsed[1] = yon_char_parsed_to_string_full(parsed,size,",");
} else {
yon_char_parsed_add_or_create_if_exists(parsed,&size,repo->name);
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
}
char *final = yon_char_parsed_to_string_full(parsed,size,";");
yon_config_register(STORAGE(storage->path),STORAGE_command,final);
free(final);
if (parsed&&size) yon_char_parsed_free(parsed,size);
} else {
char *final = yon_char_unite(repo->name,";;",NULL);
yon_config_register(STORAGE(storage->path),STORAGE_command,final);
free(final);
}
}
void yon_repo_struct_sign(storage_struct *storage, repo_struct *repo,const char *sign){
char *str = config(STORAGE(storage->path));
int size;
config_str parsed = yon_char_parse(str,&size,";");
if (size>2&&!yon_char_is_empty(parsed[2])){
int signs_size;
config_str signs = yon_char_parse(parsed[2],&signs_size,",");
char *final = yon_char_unite(repo->name,":",sign,NULL);
yon_char_parsed_add_or_create_if_exists(signs,&signs_size,final);
free(final);
yon_char_parsed_free(signs,signs_size);
} else if (size>1){
char *final = yon_char_unite(repo->name,":",sign,NULL);
yon_char_parsed_add_or_create_if_exists(parsed,&size,final);
free(final);
} else if (size>0){
char *final = yon_char_unite(repo->name,":",sign,NULL);
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
yon_char_parsed_add_or_create_if_exists(parsed,&size,final);
free(final);
} else if (!size){
char *final = yon_char_unite(repo->name,":",sign,NULL);
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
yon_char_parsed_add_or_create_if_exists(parsed,&size,"");
yon_char_parsed_add_or_create_if_exists(parsed,&size,final);
free(final);
}
char *final = yon_char_parsed_to_string_full(parsed,size,";");
yon_config_register(STORAGE(storage->path),STORAGE_command,final);
free(final);
if (parsed&&size) yon_char_parsed_free(parsed,size);
}

@ -0,0 +1,182 @@
#include "ubl-settings-repomanager.h"
void on_calendar_open(GtkWidget *self,key_creation_window *window){
yon_calendar_popover_open(GTK_ENTRY(window->ExpireEntry),self);
}
void on_key_generate_accept(GtkWidget *self, key_creation_window* window){
const char *name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
const char *type = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
const char *email = gtk_entry_get_text(GTK_ENTRY(window->EmailEntry));
char *strength = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->KeyStrengthSpin)));
const char *comment = gtk_entry_get_text(GTK_ENTRY(window->CommentsEntry));
if (!yon_char_is_empty(name)&&strlen(name)<5){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_SHORT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->NameEntry);
return;
}
if (!yon_char_is_empty(email)&&strlen(email)<5){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_SHORT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->EmailEntry);
return;
}
GtkWidget *highlight_target=NULL;
if (yon_char_is_empty(name)){
highlight_target=window->NameEntry;
} else if (yon_char_is_empty(type)){
highlight_target=window->EncryptionCombo;
} else if (yon_char_is_empty(email)){
highlight_target=window->EmailEntry;
} else if (yon_char_is_empty(strength)){
highlight_target=window->KeyStrengthSpin;
}
if (highlight_target){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(highlight_target);
return;
}
char *expire = NULL;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ExpireCombo))==1){
GDateTime *datetime = g_date_time_new_from_unix_local(yon_calendar_get_last_date());
expire = g_date_time_format(datetime,"%Y%m%dT000000");
g_date_time_unref(datetime);
}
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
const char *password_confirm = gtk_entry_get_text(GTK_ENTRY(window->PasswordConfirmationEntry));
int ex_status=0;
if (yon_char_is_empty(password)&&yon_char_is_empty(password_confirm)){
yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password));
ex_status = system(yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password)));
} else if (!strcmp(password,password_confirm)){
yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password));
ex_status = system(yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password)));
} else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_INCORRECT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordConfirmationEntry);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
if (!ex_status)
yon_ubl_status_box_render(KEY_CREATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
else
yon_ubl_status_box_render(KEY_CREATION_FAILURE_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_widget_destroy(window->Window);
yon_sign_list_update();
}
key_creation_window *yon_key_creation_window_new(){
key_creation_window *window = malloc(sizeof(key_creation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_key);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
window->EmailEntry = yon_gtk_builder_get_widget(builder,"EmailEntry");
window->CommentsEntry = yon_gtk_builder_get_widget(builder,"CommentsEntry");
window->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
window->KeyStrengthSpin = yon_gtk_builder_get_widget(builder,"KeyStrengthSpin");
window->ExpireCombo = yon_gtk_builder_get_widget(builder,"ExpireCombo");
window->ExpireEntry = yon_gtk_builder_get_widget(builder,"ExpireEntry");
window->ExpireButton = yon_gtk_builder_get_widget(builder,"ExpireButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->PasswordConfirmationEntry = yon_gtk_builder_get_widget(builder,"PasswordConfirmationEntry");
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordConfirmationEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireButton);
g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireEntry);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->ExpireButton),"clicked",G_CALLBACK(on_calendar_open),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_key_generate_accept),window);
int size;
config_str encription_keys = yon_file_open(key_encription_path,&size);
window->expire_time=0;
for (int i=1;i<size;i++){
yon_char_remove_last_symbol(encription_keys[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(encription_keys[i],&parsed_size,";");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[2],parsed[0]);
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->EncryptionCombo),"RSA");
return window;
}
void on_key_clicked(GtkWidget *self, main_window *widgets){
key_creation_window *window = yon_key_creation_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEY_CREATION_TITLE_LABEL,icon_path,"key-create-window");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),KEY_CREATION_TITLE_LABEL);
gtk_widget_show(window->Window);
}
void on_sign_window_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
sign_window *window = yon_dictionary_get_data(dict->first->next,sign_window*);
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
char *arch;
char *repo;
char *storage;
char *signature = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->SignCombo));
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&arch,-1);
char *full_path = yon_char_new(arch);
repo = yon_char_divide(arch,yon_char_find_last(arch,'/'));
storage = yon_char_divide(repo,yon_char_find_last(repo,'/'));
storage = yon_char_append(storage,"/");
GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL);
char *targets = "";
for (int i=0;i<g_list_length(list);i++){
char *pack;
gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->RepoFileList),&iter,(GtkTreePath*)g_list_nth_data(list,i));
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoFileList),&iter,2,&pack,-1);
char *temp = yon_char_unite(targets, " ", full_path,"/",pack,NULL);
if (!yon_char_is_empty(targets)) free(targets);
targets=temp;
}
if (!system(yon_debug_output("%s\n",yon_sign_package(storage,repo,arch,targets,signature)))){
yon_ubl_status_box_render(SIGN_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else {
yon_ubl_status_box_render(SIGN_FAIL_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
on_subwindow_close(window->Window);
}
yon_interface_update(widgets);
}
sign_window *yon_sign_window_new(){
sign_window *window = malloc(sizeof(sign_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_sign);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->SignCombo = yon_gtk_builder_get_widget(builder,"SignCombo");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->SignButton = yon_gtk_builder_get_widget(builder,"SignButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void on_packages_sign(GtkWidget *self, main_window *widgets){
sign_window *window = yon_sign_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),SIGNATURE_TITLE_LABEL,icon_path,"sign-window");
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->SignCombo));
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->SignButton),"clicked",G_CALLBACK(on_sign_window_accept),dict);
gtk_widget_show(window->Window);
}

@ -1,275 +1,349 @@
// #include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
// void on_move_repo_changed(GtkWidget *self, repo_add_window *window){
// GtkWidget *ArchCombo = NULL; void on_move_storage_changed(GtkWidget *self, repo_add_window *window){
// ArchCombo = self==window->MoveSourceRepoEntry?window->MoveSourceArchEntry:window->MoveTargetArchEntry; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry));
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry));
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(ArchCombo)); char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry));
// GtkTreeIter iter,itar; if (!yon_char_is_empty(path_str)){
// char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveTargetStorageEntry),path_str);
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); storage_struct *storage = g_hash_table_lookup(main_config.storages,path_str);
// int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); int size;
// for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ config_str repos = (config_str)g_hash_table_get_keys_as_array(storage->repos,&size);
// char *target; for (int i=0;i<size;i++){
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&target,-1); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry),repos[i],repos[i]);
// char *child_id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry),repos[i],repos[i]);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ArchCombo),child_id,target); }
// } }
}
// }
void on_move_repo_changed(GtkWidget *self, repo_add_window *window){
// void on_move_arch_changed(GtkWidget *self, repo_add_window *window){ if (gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry))) return;
// GtkWidget *TargetArchCombo = self==window->MoveTargetArchEntry?window->MoveSourceArchEntry:window->MoveTargetArchEntry; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveTargetArchEntry));
// GtkWidget *TargetRepoCombo = self==window->MoveTargetArchEntry?window->MoveSourceRepoEntry:window->MoveTargetRepoEntry; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveSourceArchEntry));
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(self))>-1){ GtkWidget *check_repo = NULL;
if (self == window->MoveSourceRepoEntry){
// const char *current = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(self)); check_repo = window->MoveTargetRepoEntry;
// const char *repo_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(TargetRepoCombo)); } else {
check_repo = window->MoveSourceRepoEntry;
// if (!yon_char_is_empty(current)&&!yon_char_is_empty(repo_id)){ }
const char *current_repo_selection = gtk_combo_box_get_active_id(GTK_COMBO_BOX(self));
// GtkTreeIter iter, itar; const char *check_repo_selection = gtk_combo_box_get_active_id(GTK_COMBO_BOX(check_repo));
if (!yon_char_is_empty(current_repo_selection)&&!yon_char_is_empty(check_repo_selection)&&!strcmp(current_repo_selection,check_repo_selection)){
// g_signal_handlers_block_by_func(G_OBJECT(TargetArchCombo),on_move_arch_changed,window); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),REPO_SAME_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// if (yon_gtk_combo_box_text_find(TargetArchCombo,(char*)current)==-1){ return;
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,repo_id); }
// gtk_tree_store_append(window->tree_copy,&itar,&iter); const char *storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry));
// char *id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); const char *repo_name = gtk_combo_box_get_active_id(GTK_COMBO_BOX(self));
// yon_debug_output("%s\n","arch"); if (yon_char_is_empty(storage_path)||yon_char_is_empty(repo_name)) return;
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(TargetArchCombo),id,current); storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_path);
// } if (storage){
// g_signal_handlers_unblock_by_func(G_OBJECT(TargetArchCombo),on_move_arch_changed,window); repo_struct *repo = g_hash_table_lookup(storage->repos,repo_name);
// gtk_widget_set_sensitive(window->MoveTargetArchEntry,0); if (repo){
// gtk_widget_set_sensitive(window->AddPackageButton,1); gtk_widget_set_sensitive(window->RepoSignCombo,1);
// } int size;
// } config_str archs = (config_str)g_hash_table_get_keys_as_array(repo->archs,&size);
// } for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceArchEntry),archs[i],archs[i]);
// void on_move_add_accept(GtkWidget *self, dictionary *dict){ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetArchEntry),archs[i],archs[i]);
// repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*); }
// file_chooser_window *dialog = yon_dictionary_get_data(dict->first->next,file_chooser_window*); }
// GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog->FileChooserWidget)); }
// for (int i=0;i<g_slist_length(list);i++){ if (!yon_char_is_empty(current_repo_selection)||!yon_char_is_empty(check_repo_selection)){
// char *path = (char*)g_slist_nth_data(list,i); gtk_widget_set_sensitive(window->MoveSourceArchEntry,1);
// if (yon_file_is_directory(path)){ gtk_widget_set_sensitive(window->MoveTargetArchEntry,1);
// int size; } else {
// config_str files = yon_file_ls(path,&size); gtk_widget_set_sensitive(window->MoveSourceArchEntry,0);
// for (int k=0;k<size;k++){ gtk_widget_set_sensitive(window->MoveTargetArchEntry,0);
// if (strstr(files[k],".pkg.tar")&&!strstr(files[k],".sig")){ }
// GtkTreeIter iter;
// int temp_size; }
// config_str name = yon_config_load(yon_get_package_name_from_filename(files[k]),&temp_size);
// yon_char_remove_last_symbol(name[0],'\n'); void on_move_check_fill(GtkWidget *self, repo_add_window *window){
// gtk_list_store_append(window->PackagesList,&iter); if (gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry))&&
// gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,files[k],-1); gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry))&&
// } gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry))&&
// } gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveTargetStorageEntry))&&
// } else { gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveTargetRepoEntry))&&
// GtkTreeIter iter; gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveTargetArchEntry))){
// int temp_size; gtk_widget_set_sensitive(window->AddPackageButton,1);
// config_str name = yon_config_load(yon_get_package_name_from_filename(path),&temp_size); }
// if (temp_size<=0){ }
// yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// return; void on_move_arch_changed(GtkWidget *self, repo_add_window *window){
// } GtkWidget *check_arch = NULL;
// yon_char_remove_last_symbol(name[0],'\n'); if (self == window->MoveSourceArchEntry){
// if (!yon_gtk_tree_model_check_exist(GTK_TREE_MODEL(window->PackagesList),&iter,name[0],1)){ check_arch = window->MoveTargetArchEntry;
// gtk_list_store_append(window->PackagesList,&iter); } else {
// gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,path,-1); check_arch = window->MoveSourceArchEntry;
// } else { }
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); const char *chosen = gtk_combo_box_get_active_id(GTK_COMBO_BOX(self));
// } if (!gtk_combo_box_set_active_id(GTK_COMBO_BOX(check_arch),chosen)){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(check_arch),chosen,chosen);
// } while(gtk_events_pending())gtk_main_iteration();
// } gtk_combo_box_set_active_id(GTK_COMBO_BOX(check_arch),chosen);
// gtk_widget_destroy(dialog->Window); }
// free(dialog); gtk_widget_set_sensitive(window->MoveTargetArchEntry,0);
// GtkTreeIter iter; }
// if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->tree_copy),&iter)){
// gtk_widget_set_sensitive(window->MoveSourceStorageEntry,0); void on_move_add_accept(GtkWidget *self, dictionary *dict){
// gtk_widget_set_sensitive(window->MoveSourceRepoEntry,0); repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*);
// gtk_widget_set_sensitive(window->MoveSourceArchEntry,0); filechooser_window *dialog = yon_dictionary_get_data(dict->first->next,filechooser_window*);
// gtk_widget_set_sensitive(window->MoveTargetRepoEntry,0); int size;
// gtk_widget_set_sensitive(window->MoveTargetArchEntry,0); config_str packages = yon_char_parse(dialog->last_success_selection,&size,",");
for (int i=0;i<size;i++){
// if (window->StorageCombo&&window->RepositoryCombo&&window->ArchitectureCombo){ if (yon_file_is_directory(packages[i])){
// gtk_widget_set_sensitive(window->StorageCombo,0); int dir_size;
// gtk_widget_set_sensitive(window->RepositoryCombo,0); config_str files = yon_file_ls(packages[i],&dir_size);
// gtk_widget_set_sensitive(window->ArchitectureCombo,0); for (int k=0;k<dir_size;k++){
// } if (strstr(files[k],".pkg.tar")&&!strstr(files[k],".sig")){
// } GtkTreeIter iter;
// } int temp_size;
char *full_path = yon_char_unite(packages[i],"/",files[k],NULL);
// void on_move_add_package(GtkWidget *self, repo_add_window *window){ config_str name = yon_config_load(yon_get_package_name_from_filename(full_path),&temp_size);
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->MoveTargetArchEntry))>-1&&gtk_combo_box_get_active(GTK_COMBO_BOX(window->MoveSourceStorageEntry))>-1){ if (name&&!yon_char_is_empty(name[0]))
// file_chooser_window *dialog = yon_file_chooser_new(); yon_char_remove_last_symbol(name[0],'\n');
// yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow"); gtk_list_store_append(window->PackagesList,&iter);
// gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),CHOSE_PACKAGES_TITLE_LABEL); gtk_list_store_set(window->PackagesList,&iter,1,name&&!yon_char_is_empty(name[0])?name[0]:"",2,full_path,-1);
// GtkFileFilter *filter = gtk_file_filter_new(); free(full_path);
// gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]"); }
// gtk_file_filter_set_name(filter,"*.pkg.tar.*"); }
// gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter);
// GtkTreeIter iter,itar; } else {
// yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),GTK_TREE_MODEL(window->tree_copy),&iter); GtkTreeIter iter;
// char *target; int temp_size;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&target,3,&dialog->root_path,-1); config_str name = yon_config_load(yon_get_package_name_from_filename(packages[i]),&temp_size);
// gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->FileChooserWidget),target); if (temp_size<=0){
yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// dictionary *dict = NULL; return;
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); }
// yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog); yon_char_remove_last_symbol(name[0],'\n');
if (!yon_gtk_tree_model_check_exist(GTK_TREE_MODEL(window->PackagesList),&iter,name[0],1)){
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"current-folder-changed",G_CALLBACK(on_folder_changed),dialog); gtk_list_store_append(window->PackagesList,&iter);
// g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_move_add_accept),dict); gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,packages[i],-1);
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"file-activated",G_CALLBACK(on_file_chooser_file_activate),dict); } else {
// gtk_widget_show(dialog->Window); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// } }
// }
}
// void on_move_accept(GtkWidget *self, dictionary *dict){ }
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); yon_char_parsed_free(packages,size);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*); gtk_widget_destroy(dialog->Window);
free(dialog);
// int size = 0; GtkTreeIter iter;
// config_str packages = NULL; if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->PackagesList),&iter)){
// GtkTreeIter iter,itar; gtk_widget_set_sensitive(window->MoveSourceStorageEntry,0);
// for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){ gtk_widget_set_sensitive(window->MoveSourceRepoEntry,0);
// char *target=NULL; gtk_widget_set_sensitive(window->MoveSourceArchEntry,0);
// gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,2,&target,-1);
// if (!yon_char_is_empty(target)){ gtk_widget_set_sensitive(window->MoveTargetRepoEntry,0);
// free(yon_char_divide(target,yon_char_find_last(target,'/'))); gtk_widget_set_sensitive(window->MoveTargetArchEntry,0);
// yon_char_parsed_add_or_create_if_exists(packages,&size,target);
// free(target); if (window->StorageCombo&&window->RepositoryCombo&&window->ArchitectureCombo){
// } gtk_widget_set_sensitive(window->StorageCombo,0);
// } gtk_widget_set_sensitive(window->RepositoryCombo,0);
// if (size){ gtk_widget_set_sensitive(window->ArchitectureCombo,0);
// char *arch = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->MoveSourceArchEntry)); }
// yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry),GTK_TREE_MODEL(window->tree_copy),&iter); }
// yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveTargetRepoEntry),GTK_TREE_MODEL(window->tree_copy),&itar); }
// char *source_path, *source_repo, *target_path, *target_repo;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&source_repo,-1); void on_move_add_package(GtkWidget *self, repo_add_window *window){
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&target_repo,-1); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->MoveTargetArchEntry))>-1&&gtk_combo_box_get_active(GTK_COMBO_BOX(window->MoveSourceStorageEntry))>-1){
// source_path = yon_char_divide(source_repo,yon_char_find_last(source_repo,'/')); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
// target_path = yon_char_divide(target_repo,yon_char_find_last(target_repo,'/')); yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow");
// char *command = yon_move_packages_command(source_path,arch,source_repo, target_repo, yon_char_parsed_to_string(packages,size," ")); gtk_label_set_text(GTK_LABEL(dialog->HeaderTopic),CHOSE_PACKAGES_TITLE_LABEL);
// yon_debug_output("%s\n",command); GtkFileFilter *filter = gtk_file_filter_new();
// if (!system(command)){ gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]");
// yon_ubl_status_box_render(PACKAGES_MOVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); gtk_file_filter_set_name(filter,"*.pkg.tar.*");
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
// gtk_tree_store_clear(widgets->RepoList); GtkTreeIter iter,itar;
// yon_gtk_tree_store_copy_full(window->tree_copy,widgets->RepoList); char *target;
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),GTK_TREE_MODEL(widgets->RepoList)); const char* storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry));
storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_path);
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); if (storage){
// if (!yon_char_is_empty(id)){ const char *repo_name = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry));
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoList),&iter,id); repo_struct *repo = g_hash_table_lookup(storage->repos,repo_name);
// gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),gtk_tree_path_new_from_string(id)); if (repo){
// gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&iter); target = repo->path;
// on_main_tree_selection_changed(NULL,widgets); }
// } gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog->MainFileChooser),1);
// yon_config_load_update(widgets); gtk_widget_show(dialog->ChooseFolderCheck);
// on_subwindow_close(window->MainWindow);
// } }
// } else { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->MainFileChooser),target);
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// } dictionary *dict = NULL;
// } yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
// void on_move_remove_package(GtkWidget *self, repo_add_window *window){
// GtkTreeIter iter; yon_file_chooser_set_root(dialog,target);
// GtkTreeModel *model; if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){ on_move_add_accept(self,dict);
// gtk_list_store_remove(window->PackagesList,&iter); }
// } }
// if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->PackagesList),&iter)){ }
// gtk_widget_set_sensitive(window->MoveSourceStorageEntry,1); void on_move_accept(GtkWidget *self, dictionary *dict){
// gtk_widget_set_sensitive(window->MoveSourceRepoEntry,1); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// gtk_widget_set_sensitive(window->MoveSourceArchEntry,1); repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// gtk_widget_set_sensitive(window->MoveTargetRepoEntry,1);
// if (window->StorageCombo&&window->RepositoryCombo&&window->ArchitectureCombo){ const char *storage = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry));
// gtk_widget_set_sensitive(window->StorageCombo,1); const char *source_repo = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry));
// gtk_widget_set_sensitive(window->RepositoryCombo,1); const char *target_repo = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveTargetRepoEntry));
// gtk_widget_set_sensitive(window->ArchitectureCombo,1); const char *arch = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry));
// } if (yon_char_is_empty(storage)){
// } yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// } yon_ubl_status_highlight_incorrect(window->MoveSourceStorageEntry);
return;
// repo_add_window *on_move_clicked(GtkWidget *self, main_window *widgets){ }
// repo_add_window *window = yon_repo_add_window_new(); if (yon_char_is_empty(source_repo)){
// yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),MOVE_PACKAGES_TITLE_LABEL,icon_path,"move-repo-window"); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),MOVE_PACKAGES_TITLE_LABEL); yon_ubl_status_highlight_incorrect(window->MoveSourceRepoEntry);
// gtk_button_set_label(GTK_BUTTON(window->AddButton),MOVE_LABEL); return;
// gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),MOVE_PACKAGES_LABEL); }
// gtk_widget_show(window->MoveSourceFrame); if (yon_char_is_empty(target_repo)){
// gtk_widget_show(window->MoveTargetFrame); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo)); yon_ubl_status_highlight_incorrect(window->MoveTargetRepoEntry);
// GtkTreeIter iter; return;
// for_iter (window->tree_copy,&iter){ }
// char *current; if (yon_char_is_empty(arch)) {
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&current,-1); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// if (!yon_char_is_empty(current)){ yon_ubl_status_highlight_incorrect(window->MoveSourceArchEntry);
// char *path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&iter); return;
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceStorageEntry),path,current); }
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetStorageEntry),path,current); const char *repo_sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// } if (!yon_char_is_empty(storage)&&!yon_char_is_empty(source_repo)&&!yon_char_is_empty(target_repo)&&!yon_char_is_empty(arch)){
// }
GtkTreeIter iter;
// yon_sign_list_update(); GtkTreeModel *model = GTK_TREE_MODEL(window->PackagesList);
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo)); int size;
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo)); config_str parsed = NULL;
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0); for_iter(model,&iter){
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->PackageSignCombo),0); char *path;
gtk_tree_model_get(model,&iter,2,&path,-1);
// gtk_widget_destroy(gtk_widget_get_parent(window->StorageCombo)); yon_char_parsed_add_or_create_if_exists(parsed, &size,path+(yon_char_find_last(path,'/')>-1?yon_char_find_last(path,'/')+1:0));
// dictionary *dict = NULL; }
// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); if (!size) {
// g_signal_connect(G_OBJECT(window->MoveSourceStorageEntry),"changed",G_CALLBACK(on_move_storage_changed),window); yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
// g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window); yon_ubl_status_highlight_incorrect(window->PackagesTree);
// g_signal_connect(G_OBJECT(window->MoveSourceArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window); return;
}
// g_signal_connect(G_OBJECT(window->MoveTargetRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window); char *packages = yon_char_parsed_to_string(parsed,size," ");
// g_signal_connect(G_OBJECT(window->MoveTargetArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window); char *command = NULL;
command = yon_move_packages_command(storage,arch,source_repo,target_repo,packages,repo_sign);
// g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_move_add_package),window); if (system(yon_debug_output("%s\n",command))){
// g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window); yon_ubl_status_box_render(PACKAGES_MOVE_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_move_accept),dict); } else {
// g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_repo_sign_load),window); yon_ubl_status_box_render(PACKAGES_MOVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){ }
free(command);
// char *target = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(widgets->RepoList),&iter); }
// int mod = yon_char_count(target,":")+1; yon_interface_update(widgets);
// char *arc=NULL; gtk_widget_destroy(window->MainWindow);
// char *repo=NULL; free(window);
// char *stor=NULL; }
// if (mod ==3){
// arc = yon_char_new(target); void on_move_remove_package(GtkWidget *self, repo_add_window *window){
// char *temp = yon_char_new(target); GtkTreeIter iter;
// repo = yon_char_divide(temp,yon_char_find_last(temp,':')); GtkTreeModel *model;
// free(temp); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){
// temp = yon_char_new(repo); gtk_list_store_remove(window->PackagesList,&iter);
// stor = yon_char_divide(temp,yon_char_find_last(temp,':')); }
// free(temp); if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->PackagesList),&iter)){
// } else if (mod>=2){
// repo = yon_char_new(target); gtk_widget_set_sensitive(window->MoveSourceStorageEntry,1);
// char *temp = yon_char_new(target); gtk_widget_set_sensitive(window->MoveSourceRepoEntry,1);
// stor = yon_char_divide(temp,yon_char_find_last(temp,':')); gtk_widget_set_sensitive(window->MoveSourceArchEntry,1);
// free(temp);
// } else if (mod>=1){ gtk_widget_set_sensitive(window->MoveTargetRepoEntry,1);
// stor = yon_char_new(target); if (window->StorageCombo&&window->RepositoryCombo&&window->ArchitectureCombo){
// } gtk_widget_set_sensitive(window->StorageCombo,1);
gtk_widget_set_sensitive(window->RepositoryCombo,1);
// if (stor) gtk_widget_set_sensitive(window->ArchitectureCombo,1);
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry),stor); }
// if (repo) }
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry),repo); }
// if (arc)
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),arc);
// } void yon_move_window_set_selected(main_window *widgets, repo_add_window *window){
// gtk_widget_show(window->MainWindow); GtkTreeIter iter, itar, itor;
// return window;
// } if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){
int depth = gtk_tree_store_iter_depth(widgets->RepoList,&iter);
char *storage=NULL, *repo=NULL, *arch=NULL;
storage_struct *storage_str;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,7,&storage_str,-1);
if (depth==2){
storage = ((arch_struct*)storage_str)->storage_path;
repo = ((arch_struct*)storage_str)->repo_name;
arch = ((arch_struct*)storage_str)->name;
}
if (!yon_char_is_empty(storage)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry),storage);
while(gtk_events_pending()) gtk_main_iteration();
if (!yon_char_is_empty(repo)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry),repo);
while(gtk_events_pending()) gtk_main_iteration();
if (!yon_char_is_empty(arch)) gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),arch);
}
}
repo_add_window *on_move_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),MOVE_PACKAGES_TITLE_LABEL,icon_path,"move-repo-window");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),MOVE_PACKAGES_TITLE_LABEL);
gtk_button_set_label(GTK_BUTTON(window->AddButton),MOVE_LABEL);
gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),MOVE_PACKAGES_LABEL);
gtk_widget_show(window->MoveSourceFrame);
gtk_widget_show(window->MoveTargetFrame);
gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
int size;
config_str storages = (config_str)g_hash_table_get_keys_as_array(main_config.storages,&size);
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceStorageEntry),storages[i],storages[i]);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetStorageEntry),storages[i],storages[i]);
}
GtkTreeIter iter;
yon_sign_list_update();
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PackageSignCombo),0);
gtk_widget_destroy(gtk_widget_get_parent(window->StorageCombo));
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->MoveSourceStorageEntry),"changed",G_CALLBACK(on_move_storage_changed),window);
g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window);
g_signal_connect(G_OBJECT(window->MoveSourceArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window);
g_signal_connect(G_OBJECT(window->MoveTargetRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window);
g_signal_connect(G_OBJECT(window->MoveTargetArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window);
g_signal_connect(G_OBJECT(window->MoveSourceStorageEntry),"changed",G_CALLBACK(on_move_check_fill),window);
g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_move_check_fill),window);
g_signal_connect(G_OBJECT(window->MoveSourceArchEntry),"changed",G_CALLBACK(on_move_check_fill),window);
g_signal_connect(G_OBJECT(window->MoveTargetRepoEntry),"changed",G_CALLBACK(on_move_check_fill),window);
g_signal_connect(G_OBJECT(window->MoveTargetArchEntry),"changed",G_CALLBACK(on_move_check_fill),window);
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_move_add_package),window);
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window);
yon_rmb_menu_setup(window->PackagesTree,(int(*)(void*))gtk_widget_is_sensitive,window->AddPackageButton,
ADD_PACKAGE_LABEL,add_icon_name,G_CALLBACK(on_move_add_package),window,
REMOVE_PACKAGE_LABEL,remove_icon,G_CALLBACK(on_move_remove_package),window,
NULL);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_move_accept),dict);
// g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_move_window_set_selected(widgets,window);
yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
return window;
}

@ -1,4 +1,4 @@
// #include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
// void on_remove_arch_selection_changed(GtkWidget *self, repo_add_window *window){ // void on_remove_arch_selection_changed(GtkWidget *self, repo_add_window *window){
@ -9,126 +9,111 @@
// } // }
// } // }
// void on_remove_accept(GtkWidget *self, dictionary *dict){ void on_remove_accept(GtkWidget *self, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*); repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// GtkTreeModel *model; const char *storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// GtkTreeIter iter; const char *repo = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
// const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo)); const char *arch = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
// char *storage_path; const char *sign = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// char *repo = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
// char *arch = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
// if (!yon_char_is_empty(storage_id)){ if (!yon_char_is_empty(storage_path)){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,storage_id); GtkTreeIter iter;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&storage_path,-1); GtkTreeModel *model = GTK_TREE_MODEL(window->PackagesList);
// int size=0; int size;
// config_str packages=NULL; config_str packages=NULL;
// for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){
// char *target;
// gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,1,&target,-1);
// yon_char_parsed_add_or_create_if_exists(packages,&size,target);
// }
// if (size){
// char *sign = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// char *command;
// if (yon_char_is_empty(sign)){
// command = yon_delete_packages_command(storage_path,arch,repo,yon_char_parsed_to_string(packages,size," "));
// } else {
// command = yon_delete_packages_sign_command(storage_path,arch,repo,sign,yon_char_parsed_to_string(packages,size," "));
// }
// yon_debug_output("%s\n",command);
// if (!system(command)){
// yon_ubl_status_box_render(PACKAGES_REMOVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL);
// gtk_tree_store_clear(widgets->RepoList);
// yon_gtk_tree_store_copy_full(window->tree_copy,widgets->RepoList);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),GTK_TREE_MODEL(widgets->RepoList));
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); for_iter(model,&iter){
// if (!yon_char_is_empty(id)){ char *target;
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoList),&iter,id); gtk_tree_model_get(model,&iter,2,&target,-1);
// gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),gtk_tree_path_new_from_string(id)); char *filename = yon_char_divide(target,yon_char_find_last(target,'/'));
// gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&iter); yon_char_parsed_add_or_create_if_exists(packages,&size,target);
// on_main_tree_selection_changed(NULL,widgets); }
// } if (size){
// } char *final = yon_char_parsed_to_string(packages,size," ");
// yon_config_load_update(widgets); char *command = remove_packages_command(storage_path,arch,repo,final,sign);
// } else { if (system(yon_debug_output("%s\n",command))){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PACKAGES_REMOVE_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
// return; } else {
// } yon_ubl_status_box_render(PACKAGES_REMOVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// }else { }
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); }
// return; }
// } gtk_widget_destroy(window->MainWindow);
// gtk_widget_destroy(window->MainWindow); free(window);
// } yon_interface_update(widgets);
}
// void on_remove_add_package(GtkWidget *self, repo_add_window *window){ void on_remove_add_package(GtkWidget *self, repo_add_window *window){
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))>-1){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))>-1){
// file_chooser_window *dialog = yon_file_chooser_new(); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
// yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow"); yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow");
// gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),CHOSE_PACKAGES_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(dialog->HeaderTopic),CHOSE_PACKAGES_TITLE_LABEL);
// GtkFileFilter *filter = gtk_file_filter_new(); GtkFileFilter *filter = gtk_file_filter_new();
// gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]"); gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]");
// gtk_file_filter_set_name(filter,"*.pkg.tar.*"); gtk_file_filter_set_name(filter,"*.pkg.tar.*");
// gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
// GtkTreeIter iter,itar; GtkTreeIter iter,itar;
// yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->ArchitectureCombo),GTK_TREE_MODEL(window->tree_copy),&iter); char *target;
// char *target; const char* storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
// int temp_size=0; storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_path);
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&target,-1); if (storage){
// yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->ArchitectureCombo),GTK_TREE_MODEL(window->tree_copy),&itar); const char *repo_name = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo));
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&dialog->root_path,-1); repo_struct *repo = g_hash_table_lookup(storage->repos,repo_name);
// gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->FileChooserWidget),target); if (repo){
target = repo->path;
}
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog->MainFileChooser),1);
gtk_widget_show(dialog->ChooseFolderCheck);
// dictionary *dict = NULL; }
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->MainFileChooser),target);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"current-folder-changed",G_CALLBACK(on_folder_changed),dialog); dictionary *dict = NULL;
// g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_move_add_accept),dict); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"file-activated",G_CALLBACK(on_file_chooser_file_activate),dict); yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
// gtk_widget_show(dialog->Window);
// }
// }
yon_file_chooser_set_root(dialog,target);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
on_move_add_accept(self,dict);
}
}
}
// repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets){
// repo_add_window *window = yon_repo_add_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),REMOVE_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGES_TITLE_LABEL);
// GtkTreeIter iter;
// for_iter (window->tree_copy,&iter){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&current,-1);
// if (!yon_char_is_empty(current)){
// char *path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&iter);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),path,current);
// }
// }
// gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),REMOVE_PACKAGES_LABEL);
// yon_sign_list_update();
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
// gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo)); repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),REMOVE_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGES_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),REMOVE_PACKAGES_LABEL);
// gtk_button_set_label(GTK_BUTTON(window->AddButton),REMOVE_LABEL); int size;
// dictionary *dict = NULL; config_str storages = (config_str)g_hash_table_get_keys_as_array(main_config.storages,&size);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); for (int i=0;i<size;i++){
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),storages[i],storages[i]);
// g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window); }
// g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window); yon_sign_list_update();
// g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_remove_arch_selection_changed),window); yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),dict); yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
// g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_remove_add_package),window); gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
// g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window); gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
// yon_add_window_set_selected(widgets,window);
// gtk_widget_show(window->MainWindow); gtk_button_set_label(GTK_BUTTON(window->AddButton),REMOVE_LABEL);
// return window; dictionary *dict = NULL;
// } yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window);
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),dict);
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_remove_add_package),window);
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_add_window_set_selected(widgets,window);
yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
return window;
}

@ -4,6 +4,11 @@
void on_repo_signed(GtkWidget *self, storage_repo_block *block){ void on_repo_signed(GtkWidget *self, storage_repo_block *block){
storage_config_window *window = g_object_get_data(G_OBJECT(self),"window"); storage_config_window *window = g_object_get_data(G_OBJECT(self),"window");
const char *sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(block->SignatureCombo)); const char *sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(block->SignatureCombo));
const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id);
repo_struct *repo = g_hash_table_lookup(storage->repos,block->repo_name);
// yon_repo_struct_sign(storage,repo,sign);
yon_config_register(repo->path,STORAGE_command,(char*)sign);
if (!yon_char_is_empty(block->sign_request)) free(block->sign_request); if (!yon_char_is_empty(block->sign_request)) free(block->sign_request);
block->sign_request = yon_char_new(sign); block->sign_request = yon_char_new(sign);
} }
@ -13,6 +18,9 @@ void on_repo_removed(GtkWidget *self,storage_repo_block *block){
const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id); storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id);
if (g_hash_table_lookup(storage->repos,block->repo_name)){ if (g_hash_table_lookup(storage->repos,block->repo_name)){
repo_struct *repo = g_hash_table_lookup(storage->repos,block->repo_name);
// yon_storage_struct_remove(storage,repo);
yon_config_remove_element(storage->path,repo->path,",");
g_hash_table_remove(storage->repos,block->repo_name); g_hash_table_remove(storage->repos,block->repo_name);
gtk_widget_destroy(block->MainBox); gtk_widget_destroy(block->MainBox);
yon_storage_repo_block_destroy(block); yon_storage_repo_block_destroy(block);

@ -3,9 +3,44 @@
// // storage-configure window section // // storage-configure window section
void yon_storage_open_add_repos(char *storage_path, storage_config_window *window){
int size;
config_str repos = yon_file_list_dirs(storage_path,&size);
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_path);
if (size){
for (int i=0;i<size;i++){
char *repo_name = repos[i];
if (!strcmp(repo_name,"pool")) continue;
if (g_hash_table_lookup(storage->repos,repo_name)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->AddEntry);
continue;
}
char *new_repo = yon_char_new(repo_name);
repo_struct *repo = yon_repo_struct_new();
storage_repo_block *block = yon_storage_repo_block_new();
g_object_set_data(G_OBJECT(block->SignatureCombo),"repo_storage",repo);
g_object_set_data(G_OBJECT(block->SignatureCombo),"window",window);
g_object_set_data(G_OBJECT(block->RepoRemoveButton),"window",window);
repo->name=new_repo;
block->repo_name=new_repo;
repo->path = yon_char_unite(storage_path,"/",new_repo,NULL);
repo->storage_path = yon_char_new(storage_path);
yon_config_append_element(storage->path,(char*)repo->path,",");
gtk_entry_set_text(GTK_ENTRY(block->RepoNameEntry),new_repo);
gtk_box_pack_start(GTK_BOX(window->ReposBox),block->MainBox,0,0,0);
g_hash_table_insert(storage->repos,repo->name,repo);
// yon_storage_struct_add_repo(storage,repo);
gtk_entry_set_text(GTK_ENTRY(window->AddEntry),"");
}
}
}
void on_storage_open(GtkWidget *self, storage_config_window *window){ void on_storage_open(GtkWidget *self, storage_config_window *window){
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),OPEN_EXISTING_TOOLTIP_LABEL,icon_path,"file_chooser_window");
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){ if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->MainFileChooser)); char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->MainFileChooser));
storage_struct *storage = yon_storage_struct_new(); storage_struct *storage = yon_storage_struct_new();
@ -14,12 +49,18 @@ void on_storage_open(GtkWidget *self, storage_config_window *window){
free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/'))); free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/')));
g_hash_table_insert(window->storages_copy,storage->path,storage); g_hash_table_insert(window->storages_copy,storage->path,storage);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path);
while (gtk_events_pending()) gtk_main_iteration();
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->StoragePathCombo),storage->path);
yon_config_register(storage->path,STORAGE_command,"");
yon_storage_open_add_repos(storage->path,window);
} }
} }
void on_storage_create(GtkWidget *self, storage_config_window *window){ void on_storage_create(GtkWidget *self, storage_config_window *window){
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CREATE_NEW_STORAGE_LABEL,icon_path,"file_chooser_window");
gtk_button_set_label(GTK_BUTTON(dialog->SaveButton),yon_char_get_localised_from_lib(CREATE_NEW_TOOLTIP_LABEL));
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_APPLY){ if (yon_file_chooser_start(dialog)==GTK_RESPONSE_APPLY){
storage_struct *storage = yon_storage_struct_new(); storage_struct *storage = yon_storage_struct_new();
storage->path=dialog->last_success_selection; storage->path=dialog->last_success_selection;
@ -27,29 +68,43 @@ void on_storage_create(GtkWidget *self, storage_config_window *window){
free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/'))); free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/')));
g_hash_table_insert(window->storages_copy,storage->path,storage); g_hash_table_insert(window->storages_copy,storage->path,storage);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path);
while (gtk_events_pending()) gtk_main_iteration();
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->StoragePathCombo),storage->path);
yon_config_register(storage->path,STORAGE_command,"");
} }
} }
void on_storage_disable(GtkWidget *self, storage_config_window *window){ void on_storage_disable(GtkWidget *self, storage_config_window *window){
const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
if (yon_char_is_empty(storage_target)) return;
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target); storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target);
if (storage){ if (storage){
const char *path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
if (!config((char*)path)){
yon_config_register((char*)path,STORAGE_command,"-");
}
yon_config_set_status((char*)path,-1);
gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo))); gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo)));
gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0);
g_hash_table_remove(window->storages_copy,storage_target); // g_hash_table_remove(window->storages_copy,storage_target);
yon_storage_sturct_free_full(storage); // yon_storage_sturct_free_full(storage);
} }
} }
void on_storage_remove(GtkWidget *self, storage_config_window *window){ void on_storage_remove(GtkWidget *self, storage_config_window *window){
const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
if (yon_char_is_empty(storage_target)) return;
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target); storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target);
if (storage){ if (storage){
const char *path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
if (!config((char*)path)){
yon_config_register((char*)path,STORAGE_command,"-");
}
yon_config_set_status((char*)path,-2);
gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo))); gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo)));
gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0);
g_hash_table_remove(window->storages_copy,storage_target); // g_hash_table_remove(window->storages_copy,storage_target);
yon_storage_sturct_free_full(storage); // yon_storage_sturct_free_full(storage);
yon_char_parsed_add_or_create_if_exists(window->delete_storages,&window->delete_storages_size,(char*)storage_target);
} }
} }
@ -77,9 +132,11 @@ void on_repo_add(GtkWidget *self, storage_config_window *window){
block->repo_name=new_repo; block->repo_name=new_repo;
repo->path = yon_char_unite(storage_target,"/",new_repo,NULL); repo->path = yon_char_unite(storage_target,"/",new_repo,NULL);
repo->storage_path = yon_char_new(storage_target); repo->storage_path = yon_char_new(storage_target);
yon_config_append_element(storage->path,(char*)repo->path,",");
gtk_entry_set_text(GTK_ENTRY(block->RepoNameEntry),new_repo); gtk_entry_set_text(GTK_ENTRY(block->RepoNameEntry),new_repo);
gtk_box_pack_start(GTK_BOX(window->ReposBox),block->MainBox,0,0,0); gtk_box_pack_start(GTK_BOX(window->ReposBox),block->MainBox,0,0,0);
g_hash_table_insert(storage->repos,repo->name,repo); g_hash_table_insert(storage->repos,repo->name,repo);
// yon_storage_struct_add_repo(storage,repo);
gtk_entry_set_text(GTK_ENTRY(window->AddEntry),""); gtk_entry_set_text(GTK_ENTRY(window->AddEntry),"");
} }
@ -112,33 +169,49 @@ void yon_storage_config_update(storage_config_window *window){
} }
} }
void on_storage_accept(GtkWidget *self, dictionary *dict){ void yon_storage_remove(char *key, storage_struct *storage,void*){
char *parameter = config(key);
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); switch (yon_config_get_status(key)){
// storage_config_window *window = yon_dictionary_get_data(dict->first->next,storage_config_window*); case -2: yon_window_config_erase_instant_parameter(key,"storage_info");
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL); if (rmdir(key)){};
// gtk_tree_store_clear(main_config.tree_store); break;
// yon_gtk_tree_store_copy_full(window->storages_copy,main_config.tree_store); case -1: yon_window_config_erase_instant_parameter(key,"storage_info");
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),GTK_TREE_MODEL(main_config.tree_store)); break;
// yon_window_config_save_instant(); case 0:
// GtkTreeIter iter; break;
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); case 1: yon_window_config_add_instant_parameter(key,"storage_info",parameter,YON_TYPE_STRING);
// if (!yon_char_is_empty(id)){ break;
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoList),&iter,id); }
// gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),gtk_tree_path_new_from_string(id)); int size;
// gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&iter); config_str parsed = yon_char_parse(parameter,&size,",");
// on_main_tree_selection_changed(NULL,widgets); for (int i=0;i<size;i++){
// } char *sign = config(parsed[i]);
// on_subwindow_close(self); char *repo_name = parsed[i]+yon_char_find_last(parsed[i],'/')+1;
// yon_config_load_update(widgets); char *command = create_storage_command(key,repo_name,sign);
// yon_ubl_status_box_render(STORAGES_SAVED_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_launch(command);
free(command);
}
yon_storage_sturct_free_full(storage);
} }
void on_storage_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
storage_config_window *window = yon_dictionary_get_data(dict->first->next,storage_config_window*);
gtk_widget_destroy(window->MainWindow);
g_hash_table_foreach_remove(window->storages_copy,(GHRFunc)yon_storage_remove,NULL);
g_hash_table_unref(window->storages_copy);
free(window);
yon_interface_update(widgets);
}
void on_storage_changed(GtkWidget *self, storage_config_window *window){ void on_storage_changed(GtkWidget *self, storage_config_window *window){
yon_storage_config_update(window); yon_storage_config_update(window);
} }
void yon_repo_creation_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target){
gtk_widget_set_sensitive(target,gtk_combo_box_get_active(toggle)>-1 ? 1 : 0);
}
storage_config_window *yon_storage_config_window_new(){ storage_config_window *yon_storage_config_window_new(){
storage_config_window *window = malloc(sizeof(storage_config_window)); storage_config_window *window = malloc(sizeof(storage_config_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_storage_config); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_storage_config);
@ -160,13 +233,30 @@ storage_config_window *yon_storage_config_window_new(){
window->delete_storages_size=0; window->delete_storages_size=0;
yon_storage_hash_table_clone(main_config.storages,window->storages_copy); yon_storage_hash_table_clone(main_config.storages,window->storages_copy);
GList *list = g_hash_table_get_values(window->storages_copy);
GList *iter;
for (iter=list;iter;iter=iter->next){
storage_struct *storage = (storage_struct*)iter->data;
int repos_size;
config_str paths = NULL;
GList *repos = g_hash_table_get_values(storage->repos);
GList *iter2;
for (iter2=repos;iter2;iter2=iter2->next){
repo_struct *repo = (repo_struct*)iter2->data;
yon_char_parsed_add_or_create_if_exists(paths,&repos_size,repo->path);
}
yon_config_register(storage->path,STORAGE_command,yon_char_parsed_to_string(paths,repos_size,","));
}
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->OpenExistingButton),"clicked",G_CALLBACK(on_storage_open),window); g_signal_connect(G_OBJECT(window->OpenExistingButton),"clicked",G_CALLBACK(on_storage_open),window);
g_signal_connect(G_OBJECT(window->CreateNewButton),"clicked",G_CALLBACK(on_storage_create),window); g_signal_connect(G_OBJECT(window->CreateNewButton),"clicked",G_CALLBACK(on_storage_create),window);
// g_signal_connect(G_OBJECT(window->DisableButton),"clicked",G_CALLBACK(on_storage_disable),window); g_signal_connect(G_OBJECT(window->DisableButton),"clicked",G_CALLBACK(on_storage_disable),window);
g_signal_connect(G_OBJECT(window->DeleteButton),"clicked",G_CALLBACK(on_storage_remove),window); g_signal_connect(G_OBJECT(window->DeleteButton),"clicked",G_CALLBACK(on_storage_remove),window);
g_signal_connect(G_OBJECT(window->AddRepoButton),"clicked",G_CALLBACK(on_repo_add),window); g_signal_connect(G_OBJECT(window->AddRepoButton),"clicked",G_CALLBACK(on_repo_add),window);
g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(on_storage_changed),window); g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(on_storage_changed),window);
g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(yon_repo_creation_set_sensitive_from_combo_box),window->AddEntry);
g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(yon_repo_creation_set_sensitive_from_combo_box),window->AddRepoButton);
return window; return window;
@ -180,11 +270,11 @@ void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){
GList *listiter; GList *listiter;
for (listiter = storages;listiter;listiter=listiter->next){ for (listiter = storages;listiter;listiter=listiter->next){
storage_struct *cur_storage = (storage_struct*)listiter->data; storage_struct *cur_storage = (storage_struct*)listiter->data;
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),cur_storage->name,cur_storage->path); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),cur_storage->path,cur_storage->path);
} }
dictionary *dict = NULL; dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_storage_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_storage_accept),dict);
gtk_widget_show(window->MainWindow); gtk_widget_show(window->MainWindow);
} }

@ -5,44 +5,23 @@ config main_config;
// // filechooser window section // // filechooser window section
// void on_file_chooser_entry_changed(GtkEntry *self, file_chooser_window *window){
// const char *text = gtk_entry_get_text(self);
// GtkFileFilter *filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(window->FileChooserWidget));
// gtk_file_chooser_remove_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter);
// filter = gtk_file_filter_new();
// char *pattern = !yon_char_is_empty(text)?yon_char_unite("*",text,"*.pkg.tar*[^.sig]",NULL) : "*.pkg.tar*[^.sig]";
// gtk_file_filter_add_pattern(filter,pattern);
// gtk_file_filter_set_name(filter,"*.pkg.tar*");
// gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter);
// if (!yon_char_is_empty(text)) free(pattern);
// }
// void on_file_chooser_file_activate(GtkWidget *self, dictionary *dict){
// on_add_accept(self,dict);
// }
// file_chooser_window *yon_file_chooser_new(){
// file_chooser_window *window = malloc(sizeof(file_chooser_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_filechooser);
// window->Window = yon_gtk_builder_get_widget(builder,"Window");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel2");
// window->ChooseButton = yon_gtk_builder_get_widget(builder,"ChooseButton");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
// window->FileChooserWidget = yon_gtk_builder_get_widget(builder,"FileChooserWidget");
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// g_signal_connect(G_OBJECT(window->NameEntry),"changed",G_CALLBACK(on_file_chooser_entry_changed),window);
// return window;
// }
// // main window // // main window
void on_folder_changed(GtkFileChooser *self, file_chooser_window *dialog){ void on_folder_changed(GtkFileChooser *self, dictionary *dict){
repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*);
filechooser_window *dialog = yon_dictionary_get_data(dict->first->next,filechooser_window*);
const char *current = gtk_file_chooser_get_current_folder(self); const char *current = gtk_file_chooser_get_current_folder(self);
if (!strstr(current,dialog->root_path)){
gtk_file_chooser_set_current_folder(self,dialog->root_path); const char* storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry));
storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_path);
if (storage){
const char *repo_name = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry));
repo_struct *repo = g_hash_table_lookup(storage->repos,repo_name);
if (repo){
if (!strstr(current,repo->path)){
gtk_file_chooser_set_current_folder(self,repo->path);
}
}
} }
} }
@ -65,7 +44,12 @@ char *yon_path_get_name(char *path){
return copy; return copy;
} }
void yon_remove_config_storages(char *key,storage_struct *storage,void*){
yon_storage_sturct_free_full(storage);
}
int yon_storages_load(main_window *widgets){ int yon_storages_load(main_window *widgets){
g_hash_table_remove_all(main_config.storages);
gsize size; gsize size;
config_str storages = yon_window_config_get_section("storage_info",&size); config_str storages = yon_window_config_get_section("storage_info",&size);
@ -73,16 +57,18 @@ int yon_storages_load(main_window *widgets){
for(int i=0;i<size;i++){ for(int i=0;i<size;i++){
char *repos = NULL; char *repos = NULL;
if (yon_window_config_get_parameter("storage_info",storages[i],&repos,YON_TYPE_STRING)){ if (yon_window_config_get_parameter("storage_info",storages[i],&repos,YON_TYPE_STRING)){
char *storage_name = yon_path_get_name(storages[i]); char *storage_name = yon_path_get_name(storages[i]);
storage_struct *storage = yon_storage_struct_new(); storage_struct *storage = yon_storage_struct_new();
g_hash_table_insert(main_config.storages,storage_name,storage);
storage->name=storage_name; storage->name=storage_name;
storage->path=yon_char_new(storages[i]); storage->path=yon_char_new(storages[i]);
g_hash_table_insert(main_config.storages,storage->path,storage);
if (yon_char_is_empty(repos)) continue;
int repos_size; int repos_size;
config_str repo_names = yon_char_parse(repos,&repos_size,","); config_str repo_names = yon_char_parse(repos,&repos_size,",");
yon_storage_fill_repos(storage,repo_names,repos_size); yon_storage_fill_repos(storage,repo_names,repos_size);
yon_char_parsed_free(repo_names,repos_size);
} }
} }
@ -94,7 +80,7 @@ void yon_repo_tree_build_storage(char *key, storage_struct *storage, main_window
struct repo_tree_build data; struct repo_tree_build data;
data.widgets=widgets; data.widgets=widgets;
gtk_tree_store_append(widgets->RepoList,&data.storageiter,NULL); gtk_tree_store_append(widgets->RepoList,&data.storageiter,NULL);
gtk_tree_store_set(widgets->RepoList,&data.storageiter,2,storage->name,3,storage->path,7,storage,8,0,-1); gtk_tree_store_set(widgets->RepoList,&data.storageiter,0,folder_no_edits,2,storage->name,3,storage->path,7,storage,8,0,-1);
g_hash_table_foreach(storage->repos,(GHFunc)yon_repo_tree_build_repo,&data); g_hash_table_foreach(storage->repos,(GHFunc)yon_repo_tree_build_repo,&data);
} }
@ -105,98 +91,45 @@ void yon_repo_tree_build_repo(char *key, repo_struct *repo, struct repo_tree_bui
} }
void yon_repo_tree_build_arch(char *key, arch_struct *arch, struct repo_tree_build *data){ void yon_repo_tree_build_arch(char *key, arch_struct *arch, struct repo_tree_build *data){
int arch_status = system(yon_repo_get_signature_status_arch(arch->storage_path,arch->repo_name,arch->name));
int package_status = system(yon_repo_get_signature_status_packages(arch->storage_path,arch->repo_name,arch->name));
arch_status = WEXITSTATUS(arch_status);
char *image_name = NULL;
char *image_tooltip = NULL;
if (!arch_status&&!package_status){
image_name = key_icon_name;
image_tooltip = SIGN_LABEL;
} else if (arch_status != 2 || package_status != 2){
image_name = warning_icon_name;
image_tooltip = UNSIGNED_LABEL;
}
gtk_tree_store_append(data->widgets->RepoList,&data->architer,&data->repoiter); gtk_tree_store_append(data->widgets->RepoList,&data->architer,&data->repoiter);
gtk_tree_store_set(data->widgets->RepoList,&data->architer,2,arch->name,3,arch->path,7,arch,8,2,-1); gtk_tree_store_set(data->widgets->RepoList,&data->architer,0,image_name,2,arch->name,3,arch->path,7,arch,8,2,9,image_tooltip,-1);
} }
void yon_interface_update(main_window *widgets){ void yon_interface_update(main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
GtkTreePath *path = NULL;
yon_sign_list_update();
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
path = gtk_tree_model_get_path(model,&iter);
}
gtk_tree_store_clear(widgets->RepoList); gtk_tree_store_clear(widgets->RepoList);
gtk_list_store_clear(widgets->RepoFileList); gtk_list_store_clear(widgets->RepoFileList);
gtk_list_store_clear(widgets->RepoPackagesList); gtk_list_store_clear(widgets->RepoPackagesList);
yon_storages_load(widgets); yon_storages_load(widgets);
g_hash_table_foreach(main_config.storages,(GHFunc)yon_repo_tree_build_storage,widgets); g_hash_table_foreach(main_config.storages,(GHFunc)yon_repo_tree_build_storage,widgets);
if (path){
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),path);
gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),path);
gtk_tree_path_free(path);
}
on_main_tree_selection_changed(widgets->Window,widgets);
} }
// void yon_config_load_update(main_window *widgets){
// gtk_tree_store_clear(widgets->RepoList);
// gsize size=0;
// config_str storages = yon_window_config_get_section("storage_info",&size);
// GtkTreeIter iter,itar,childiter;
// for (int i=0;i<size;i++){
// char *name = yon_char_new(storages[i]);
// free(yon_char_divide(name,yon_char_find_last(name,'/')));
// gtk_tree_store_append(widgets->RepoList,&iter,NULL);
// gtk_tree_store_set(widgets->RepoList,&iter,0,folder_no_edits,2,name,3,storages[i],-1);
// free(name);
// yon_window_config_get_parameter("storage_info",storages[i],&name,YON_TYPE_STRING);
// if (!yon_char_is_empty(name)){
// int parsed_size;
// config_str name_parsed = yon_char_parse(name,&parsed_size,",");
// for (int j=0;j<parsed_size;j++){
// char *nm = yon_char_new(name_parsed[j]);
// free(yon_char_divide(nm,yon_char_find_last(nm,'/')));
// gtk_tree_store_append(widgets->RepoList,&itar,&iter);
// gtk_tree_store_set(widgets->RepoList,&itar,2,nm,3,name_parsed[j],-1);
// int size;
// config_str dirs = yon_file_list_dirs(name_parsed[j],&size);
// for (int k=0;k<size;k++){
// if (strcmp(dirs[k],"pool")&&strcmp(dirs[k],nm)){
// char *arch_path = yon_char_unite(name_parsed[j],"/",dirs[k],NULL);
// int arch_status = system(yon_debug_output("%s\n",yon_repo_get_signature_status_arch(storages[i],nm,dirs[k])));
// arch_status = WEXITSTATUS(arch_status);
// int packages_status = system(yon_debug_output("%s\n",yon_repo_get_signature_status_packages(storages[i],nm,dirs[k])));
// char *sign_status_image = "";
// if (!arch_status&&!packages_status){
// sign_status_image = key_icon_name;
// } else if (!arch_status&&packages_status==2)
// sign_status_image = warning_icon_name;
// else if (arch_status==2&&packages_status==2)
// sign_status_image = "";
// else
// sign_status_image = warning_icon_name;
// gtk_tree_store_append(widgets->RepoList,&childiter,&itar);
// gtk_tree_store_set(widgets->RepoList,&childiter,0,sign_status_image,2,dirs[k],3,arch_path,-1);
// }
// }
// free(nm);
// }
// yon_char_parsed_free(name_parsed,parsed_size);
// }
// }
// if (size)
// yon_char_parsed_free(storages,size);
// }
// config_str yon_tree_store_storage_get_archs(GtkTreeStore *target, GtkTreeIter *storage, int *size){
// config_str final = NULL;
// GtkTreeIter iter,itar;
// int repos_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,storage);
// for (;repos_valid;repos_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
// int archs_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&itar,&iter);
// for (;archs_valid;archs_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&itar)){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(target),&itar,2,&current,-1);
// if (yon_char_parsed_check_exist(final,*size,current)==-1)
// yon_char_parsed_add_or_create_if_exists(final,size,current);
// }
// }
// return final;
// }
// config_str yon_tree_store_repo_get_archs(GtkTreeStore *target, GtkTreeIter *repo, int *size){
// config_str final = NULL;
// GtkTreeIter iter;
// int repos_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,repo);
// for (;repos_valid;repos_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,2,&current,-1);
// if (yon_char_parsed_check_exist(final,*size,current)==-1)
// yon_char_parsed_add_or_create_if_exists(final,size,current);
// }
// return final;
// }
// char *yon_signature_get(GtkTreeView *target, GtkTreeIter *iter){ // char *yon_signature_get(GtkTreeView *target, GtkTreeIter *iter){
// GtkTreeIter itar; // GtkTreeIter itar;
@ -243,7 +176,7 @@ void yon_sublist_packages_build(char *key, char *file, main_window *widgets){
gtk_list_store_set(widgets->RepoFileList,&iter,1,key,-1); gtk_list_store_set(widgets->RepoFileList,&iter,1,key,-1);
} }
void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){ void on_main_tree_selection_changed(GtkWidget *, main_window *widgets){
gtk_list_store_clear(widgets->RepoFileList); gtk_list_store_clear(widgets->RepoFileList);
gtk_list_store_clear(widgets->RepoPackagesList); gtk_list_store_clear(widgets->RepoPackagesList);
GtkTreeIter iter; GtkTreeIter iter;
@ -257,7 +190,45 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){
if (data_type!=YON_REPO_DATA_ARCH){ if (data_type!=YON_REPO_DATA_ARCH){
g_hash_table_foreach(data_struct->repos,(GHFunc)yon_sublist_build,widgets); g_hash_table_foreach(data_struct->repos,(GHFunc)yon_sublist_build,widgets);
} else { } else {
g_hash_table_foreach(data_struct->repos,(GHFunc)yon_sublist_packages_build,widgets); int size;
config_str packages = yon_arch_struct_get_packages((arch_struct*)data_struct, &size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(packages[i],&parsed_size,";");
if (size){
if (strcmp(parsed[0],"-")){
int sign_status = system(yon_repo_get_signature_status(((arch_struct*)data_struct)->storage_path,((arch_struct*)data_struct)->repo_name,((arch_struct*)data_struct)->name,parsed[1]));
char *sign_icon = "";
char *sign_tooltip = "";
if (!sign_status){
sign_icon = package_signature_icon_name;
sign_tooltip = SIGNED_LABEL;
} else {
sign_icon = package_signature_error_icon_name;
sign_tooltip = UNSIGNED_LABEL;
}
GtkTreeIter itar;
gtk_list_store_append(widgets->RepoFileList,&itar);
gtk_list_store_set(widgets->RepoFileList,&itar,0,sign_icon,1,parsed[0],2,parsed[1],3,sign_tooltip,-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
}
yon_char_parsed_free(packages,size);
}
}
}
void yon_package_info_set_markup(config_str parsed, int size){
for (int i=0;i<size;i++){
if (strstr(parsed[i],":")){
char *escaped = g_markup_escape_text(parsed[i],strlen(parsed[i]));
char *temp = yon_char_divide_search(escaped,":",-1);
char *temp2 = yon_char_unite("<b>",temp,":</b>",escaped,NULL);
free(parsed[i]);
free(escaped);
free(temp);
parsed[i]=temp2;
} }
} }
} }
@ -269,8 +240,8 @@ void on_package_selection_changed(GtkWidget *self, main_window *widgets){
GtkTreeIter subiter; GtkTreeIter subiter;
GtkTreeModel *submodel; GtkTreeModel *submodel;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&submodel,&subiter)) return; if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&submodel,&subiter)) return;
char *target; char *target, *filename;
gtk_tree_model_get(submodel,&subiter,1,&target,-1); gtk_tree_model_get(submodel,&subiter,1,&target,2,&filename,-1);
enum YON_REPO_DATA_TYPE data_type; enum YON_REPO_DATA_TYPE data_type;
gtk_tree_model_get(model,&iter,8,&data_type,-1); gtk_tree_model_get(model,&iter,8,&data_type,-1);
switch (data_type){ switch (data_type){
@ -278,12 +249,13 @@ void on_package_selection_changed(GtkWidget *self, main_window *widgets){
storage_struct *storage; storage_struct *storage;
gtk_tree_model_get(model,&iter,7,&storage,-1); gtk_tree_model_get(model,&iter,7,&storage,-1);
repo_struct *repo = g_hash_table_lookup(storage->repos,target); repo_struct *repo = g_hash_table_lookup(storage->repos,target);
if (repo){
int size; int size;
config_str archs = (config_str)g_hash_table_get_keys_as_array(repo->archs,&size); config_str archs = (config_str)g_hash_table_get_keys_as_array(repo->archs,&size);
char *archs_str = yon_char_parsed_to_string(archs,size,","); char *archs_str = yon_char_parsed_to_string(archs,size,",");
char *info_label = get_repo_info_label(repo->name,archs_str,""); char *info_label = get_repo_info_label(repo->name,archs_str,"");
gtk_label_set_markup(GTK_LABEL(widgets->InformationLabel),info_label); gtk_label_set_markup(GTK_LABEL(widgets->InformationLabel),info_label);
}
} break; } break;
case YON_REPO_DATA_REPO: { case YON_REPO_DATA_REPO: {
repo_struct *repo; repo_struct *repo;
@ -298,14 +270,15 @@ void on_package_selection_changed(GtkWidget *self, main_window *widgets){
case YON_REPO_DATA_ARCH: { case YON_REPO_DATA_ARCH: {
arch_struct *arch; arch_struct *arch;
gtk_tree_model_get(model,&iter,7,&arch,-1); gtk_tree_model_get(model,&iter,7,&arch,-1);
char *filename = g_hash_table_lookup(arch->packages,target);
char *path = yon_char_unite(arch->storage_path,"/",arch->repo_name,"/",arch->name,"/",filename,NULL); char *path = yon_char_unite(arch->storage_path,"/",arch->repo_name,"/",arch->name,"/",filename,NULL);
char *command = get_package_info_command(path); char *command = get_package_info_command(path);
int size; int size;
config_str parsed = yon_config_load(command,&size); config_str parsed = yon_config_load(command,&size);
yon_package_info_set_markup(parsed,size);
char *info_label = yon_char_parsed_to_string(parsed,size,""); char *info_label = yon_char_parsed_to_string(parsed,size,"");
gtk_label_set_markup(GTK_LABEL(widgets->InformationLabel),g_markup_escape_text(info_label,strlen(info_label)));
gtk_label_set_markup(GTK_LABEL(widgets->InformationLabel),info_label);
yon_char_parsed_free(parsed,size); yon_char_parsed_free(parsed,size);
if (!yon_char_is_empty(info_label)) free(info_label); if (!yon_char_is_empty(info_label)) free(info_label);
@ -330,7 +303,7 @@ void yon_combo_box_text_set_signs(GtkComboBoxText *target){
void yon_sign_list_update(){ void yon_sign_list_update(){
if (main_config.signs&&main_config.signs_size) yon_char_parsed_free(main_config.signs,main_config.signs_size); if (main_config.signs&&main_config.signs_size) yon_char_parsed_free(main_config.signs,main_config.signs_size);
main_config.signs = yon_config_load(get_gpg_keys_command,&main_config.signs_size); main_config.signs = yon_config_load(yon_debug_output("%s\n",get_gpg_keys_command),&main_config.signs_size);
for (int i=0;i<main_config.signs_size;i++){ for (int i=0;i<main_config.signs_size;i++){
yon_char_remove_last_symbol(main_config.signs[i],'\n'); yon_char_remove_last_symbol(main_config.signs[i],'\n');
} }
@ -340,115 +313,6 @@ void on_ubl_settings_update_launch(){
yon_launch_app_with_arguments(ubl_settings_update_command,NULL); yon_launch_app_with_arguments(ubl_settings_update_command,NULL);
} }
// void on_calendar_open(GtkWidget *self,key_creation_window *window){
// yon_calendar_popover_open(GTK_ENTRY(window->ExpireEntry),self);
// }
// void on_key_generate_accept(GtkWidget *self, key_creation_window* window){
// const char *name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
// const char *type = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
// const char *email = gtk_entry_get_text(GTK_ENTRY(window->EmailEntry));
// char *strength = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->KeyStrengthSpin)));
// const char *comment = gtk_entry_get_text(GTK_ENTRY(window->CommentsEntry));
// if (!yon_char_is_empty(name)&&strlen(name)<5){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_SHORT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(window->NameEntry);
// return;
// }
// GtkWidget *highlight_target=NULL;
// if (yon_char_is_empty(name)){
// highlight_target=window->NameEntry;
// } else if (yon_char_is_empty(type)){
// highlight_target=window->EncryptionCombo;
// } else if (yon_char_is_empty(email)){
// highlight_target=window->EmailEntry;
// } else if (yon_char_is_empty(strength)){
// highlight_target=window->KeyStrengthSpin;
// }
// if (highlight_target){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(highlight_target);
// return;
// }
// char *expire = NULL;
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ExpireCombo))==1){
// GDateTime *datetime = g_date_time_new_from_unix_local(yon_calendar_get_last_date());
// expire = g_date_time_format(datetime,"%Y%m%dT000000");
// g_date_time_unref(datetime);
// }
// const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
// const char *password_confirm = gtk_entry_get_text(GTK_ENTRY(window->PasswordConfirmationEntry));
// int ex_status=0;
// if (yon_char_is_empty(password)&&yon_char_is_empty(password_confirm)){
// yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password));
// ex_status = system(yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password)));
// } else if (!strcmp(password,password_confirm)){
// yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password));
// ex_status = system(yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password)));
// } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_INCORRECT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(window->PasswordConfirmationEntry);
// yon_ubl_status_highlight_incorrect(window->PasswordEntry);
// return;
// }
// if (!ex_status)
// yon_ubl_status_box_render(KEY_CREATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// else
// yon_ubl_status_box_render(KEY_CREATION_FAILURE_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
// gtk_widget_destroy(window->Window);
// yon_sign_list_update();
// }
// key_creation_window *yon_key_creation_window_new(){
// key_creation_window *window = malloc(sizeof(key_creation_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_key);
// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
// window->EmailEntry = yon_gtk_builder_get_widget(builder,"EmailEntry");
// window->CommentsEntry = yon_gtk_builder_get_widget(builder,"CommentsEntry");
// window->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
// window->KeyStrengthSpin = yon_gtk_builder_get_widget(builder,"KeyStrengthSpin");
// window->ExpireCombo = yon_gtk_builder_get_widget(builder,"ExpireCombo");
// window->ExpireEntry = yon_gtk_builder_get_widget(builder,"ExpireEntry");
// window->ExpireButton = yon_gtk_builder_get_widget(builder,"ExpireButton");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
// window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
// window->PasswordConfirmationEntry = yon_gtk_builder_get_widget(builder,"PasswordConfirmationEntry");
// yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordConfirmationEntry));
// yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
// g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireButton);
// g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireEntry);
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// g_signal_connect(G_OBJECT(window->ExpireButton),"clicked",G_CALLBACK(on_calendar_open),window);
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_key_generate_accept),window);
// int size;
// config_str encription_keys = yon_file_open(key_encription_path,&size);
// window->expire_time=0;
// for (int i=1;i<size;i++){
// yon_char_remove_last_symbol(encription_keys[i],'\n');
// int parsed_size;
// config_str parsed = yon_char_parse(encription_keys[i],&parsed_size,";");
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[2],parsed[0]);
// yon_char_parsed_free(parsed,parsed_size);
// }
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->EncryptionCombo),"RSA");
// return window;
// }
// void on_key_clicked(GtkWidget *self, main_window *widgets){
// key_creation_window *window = yon_key_creation_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEY_CREATION_TITLE_LABEL,icon_path,"key-create-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),KEY_CREATION_TITLE_LABEL);
// gtk_widget_show(window->Window);
// }
void on_tree_view_activate(GtkWidget *self, GtkTreePath* path, GtkTreeViewColumn* column, main_window *widgets){ void on_tree_view_activate(GtkWidget *self, GtkTreePath* path, GtkTreeViewColumn* column, main_window *widgets){
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),path); gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),path);
@ -476,101 +340,18 @@ void on_update_clicked(GtkWidget *self, main_window *widgets){
yon_interface_update(widgets); yon_interface_update(widgets);
} }
// void on_sign_window_accept(GtkWidget *self, dictionary *dict){ int yon_tree_is_selected(void *widget){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = (main_window*)widget;
// sign_window *window = yon_dictionary_get_data(dict->first->next,sign_window*); GtkTreeModel *model;
// GtkTreeModel *model; GtkTreeIter iter, itar;
// GtkTreeIter iter; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){ gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&itar);
// char *arch; if (gtk_tree_store_iter_depth(widgets->RepoList,&itar)==2){
// char *repo; return 1;
// char *storage; }
// char *signature = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->SignCombo)); }
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&arch,-1); return 0;
// char *full_path = yon_char_new(arch); }
// repo = yon_char_divide(arch,yon_char_find_last(arch,'/'));
// storage = yon_char_divide(repo,yon_char_find_last(repo,'/'));
// storage = yon_char_append(storage,"/");
// GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL);
// char *targets = "";
// for (int i=0;i<g_list_length(list);i++){
// char *pack;
// gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->RepoFileList),&iter,(GtkTreePath*)g_list_nth_data(list,i));
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoFileList),&iter,2,&pack,-1);
// char *temp = yon_char_unite(targets, " ", full_path,"/",pack,NULL);
// if (!yon_char_is_empty(targets)) free(targets);
// targets=temp;
// }
// if (!system(yon_debug_output("%s\n",yon_sign_package(storage,repo,arch,targets,signature)))){
// yon_ubl_status_box_render(SIGN_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// }
// on_subwindow_close(window->Window);
// }
// }
// sign_window *yon_sign_window_new(){
// sign_window *window = malloc(sizeof(sign_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_sign);
// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->SignCombo = yon_gtk_builder_get_widget(builder,"SignCombo");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->SignButton = yon_gtk_builder_get_widget(builder,"SignButton");
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// return window;
// }
// void on_packages_sign(GtkWidget *self, main_window *widgets){
// sign_window *window = yon_sign_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),SIGNATURE_TITLE_LABEL,icon_path,"sign-window");
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->SignCombo));
// dictionary *dict = NULL;
// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// g_signal_connect(G_OBJECT(window->SignButton),"clicked",G_CALLBACK(on_sign_window_accept),dict);
// gtk_widget_show(window->Window);
// }
// int yon_tree_is_selected(void *widget){
// main_window *widgets = (main_window*)widget;
// GtkTreeModel *model;
// GtkTreeIter iter, itar;
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){
// gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&itar);
// if (gtk_tree_store_iter_depth(widgets->RepoList,&itar)==2){
// return 1;
// }
// }
// return 0;
// }
// void on_rmb_remove(GtkWidget *self, main_window *widgets){
// repo_add_window *window = on_remove_clicked(NULL,widgets);
// GtkTreeModel *model;
// GtkTreeIter iter;
// char *path;
// gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter);
// gtk_tree_model_get(model,&iter,3,&path,-1);
// GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model);
// for (int i=0;i<g_list_length(list);i++){
// GtkTreeIter itar;
// char *filename, *name;
// gtk_tree_model_get_iter(model,&iter,g_list_nth_data(list,i));
// gtk_tree_model_get(model,&iter,1,&name,2,&filename,-1);
// char *full_path = yon_char_unite(path,"/",filename,NULL);
// gtk_list_store_append(window->PackagesList,&itar);
// gtk_list_store_set(window->PackagesList,&itar,1,name,2,full_path,-1);
// free(full_path);
// free(filename);
// free(name);
// }
// }
main_window *yon_main_window_complete(main_window *widgets){ main_window *yon_main_window_complete(main_window *widgets){
widgets = yon_remalloc(widgets,sizeof(main_window)); widgets = yon_remalloc(widgets,sizeof(main_window));
@ -607,20 +388,20 @@ main_window *yon_main_window_complete(main_window *widgets){
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->KeyMenuItem),"menuitemtop"); gtk_style_context_add_class(gtk_widget_get_style_context(widgets->KeyMenuItem),"menuitemtop");
gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop");
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle");
// g_signal_connect(G_OBJECT(widgets->KeyMenuItem),"activate",G_CALLBACK(on_key_clicked),widgets); g_signal_connect(G_OBJECT(widgets->KeyMenuItem),"activate",G_CALLBACK(on_key_clicked),widgets);
} }
main_config.tree_store = widgets->RepoList; main_config.tree_store = widgets->RepoList;
// rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets, rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets,
// SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets, SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets,
// MOVE_PACKAGES_TITLE_LABEL,move_icon,G_CALLBACK(on_rmb_move),widgets, MOVE_PACKAGES_TITLE_LABEL,move_icon,G_CALLBACK(on_move_clicked),widgets,
// REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_rmb_remove),widgets, REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_remove_clicked),widgets,
// NULL); NULL);
g_signal_connect(G_OBJECT(widgets->DBConfigurationButton),"clicked",G_CALLBACK(on_storage_configure_clicked),widgets); g_signal_connect(G_OBJECT(widgets->DBConfigurationButton),"clicked",G_CALLBACK(on_storage_configure_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets); g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets); g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets); g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->ReposTree),"cursor-changed",G_CALLBACK(on_main_tree_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->ReposTree),"cursor-changed",G_CALLBACK(on_main_tree_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CloudButton),"clicked",G_CALLBACK(on_ubl_settings_update_launch),widgets); g_signal_connect(G_OBJECT(widgets->CloudButton),"clicked",G_CALLBACK(on_ubl_settings_update_launch),widgets);
g_signal_connect(G_OBJECT(widgets->RepoFileTree),"cursor-changed",G_CALLBACK(on_package_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->RepoFileTree),"cursor-changed",G_CALLBACK(on_package_selection_changed),widgets);
@ -641,9 +422,9 @@ main_window *yon_main_window_complete(main_window *widgets){
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
textdomain (LocaleName); textdomain (LocaleName);
yon_ubl_connect_config((_template_config*)&main_config);
config_init(); config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL; config_str unfound = NULL;
int size=0; int size=0;

@ -17,8 +17,6 @@
#endif #endif
#include "ubl-strings.h" #include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-repomanager"
#define _(String) gettext(String) #define _(String) gettext(String)
#define glade_path "/com/ublinux/ui/ubl-settings-repomanager.glade" #define glade_path "/com/ublinux/ui/ubl-settings-repomanager.glade"
@ -38,6 +36,7 @@
#define document_deleted "com.ublinux.ubl-settings-repomanager.key-red-symbolic" #define document_deleted "com.ublinux.ubl-settings-repomanager.key-red-symbolic"
#define document_added "com.ublinux.ubl-settings-repomanager.key-green-symbolic" #define document_added "com.ublinux.ubl-settings-repomanager.key-green-symbolic"
#define add_icon_name "com.ublinux.libublsettingsui-gtk3.increase-symbolic"
#define move_icon "com.ublinux.libublsettingsui-gtk3.arrows-left-right-symbolic" #define move_icon "com.ublinux.libublsettingsui-gtk3.arrows-left-right-symbolic"
#define remove_icon "com.ublinux.libublsettingsui-gtk3.trash-symbolic" #define remove_icon "com.ublinux.libublsettingsui-gtk3.trash-symbolic"
@ -59,14 +58,16 @@
#define key_encription_path "/usr/share/ubl-settings-repomanager/csv/crypt-key.csv" #define key_encription_path "/usr/share/ubl-settings-repomanager/csv/crypt-key.csv"
typedef char* string; typedef char* string;
#define create_storage_command(path,name) yon_char_unite("repo-manager add -r '",name,"' -d '", path,"'",NULL) #define create_storage_command(path,name,sign) yon_char_unite("repo-manager add -r '",name,"' -d '", path,"'",!yon_char_is_empty(sign)?" -S ":NULL,sign,NULL)
#define add_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL) #define add_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL)
#define add_packages_sign_command(path,arch,name,repo_sign,pack_sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S ",repo_sign," -s ",pack_sign," ",packages_path,NULL) #define add_packages_sign_command(path,arch,name,repo_sign,pack_sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S ",repo_sign," -s ",pack_sign," ",packages_path,NULL)
#define add_packages_package_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -s '",sign,"' ",packages_path,NULL) #define add_packages_package_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -s '",sign,"' ",packages_path,NULL)
#define add_packages_repo_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",sign,"' ",packages_path,NULL) #define add_packages_repo_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",sign,"' ",packages_path,NULL)
#define remove_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager remove -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL) #define remove_packages_command(path,arch,name,packages_path,sign) yon_char_unite("repo-manager remove -r '",name,"' -a '",arch,"' -d '", path,"' ",sign?"-S ":"",sign?sign:"",sign?" ":"",packages_path,NULL)
#define repo_sign_command(storage_path, repo, sign) yon_char_unite("repo-manager add -f -r '",repo,"' -d '", storage_path, "' -S ", sign,NULL)
#define yon_move_packages_command(storage,arch, source_repo, target_repo, packages) yon_char_unite("repo-manager move -d '",storage,"' -a '",arch,"' -R '",source_repo,"' -r '",target_repo,"' ", packages,NULL) #define yon_move_packages_command(storage,arch, source_repo, target_repo, packages,sign) yon_char_unite("repo-manager move -d '",storage,"' -a '",arch,"' -R '",source_repo,"' -r '",target_repo,"' ",sign?"-S ":"",sign?sign:"",sign?" ":"", packages,NULL)
#define yon_delete_packages_command(storage,arch, target_repo, packages) yon_char_unite("repo-manager remove -d '",storage,"' -a '",arch,"' -r '",target_repo,"' ", packages,NULL) #define yon_delete_packages_command(storage,arch, target_repo, packages) yon_char_unite("repo-manager remove -d '",storage,"' -a '",arch,"' -r '",target_repo,"' ", packages,NULL)
#define yon_delete_packages_sign_command(storage,arch, target_repo,sign, packages) yon_char_unite("repo-manager remove -d '",storage,"' -a '",arch,"' -r '",target_repo,"' -S '",sign,"' ", packages,NULL) #define yon_delete_packages_sign_command(storage,arch, target_repo,sign, packages) yon_char_unite("repo-manager remove -d '",storage,"' -a '",arch,"' -r '",target_repo,"' -S '",sign,"' ", packages,NULL)
@ -106,7 +107,7 @@ typedef char* string;
#define get_package_info_command(filename) yon_char_unite("pacman -Q --info --file '",filename,"' 2>/dev/null|sed -e 's/ */ /g' -e 's/ : /: /g' -e 's/\\n/ /g' -e 's/^ /\\t/g'",NULL) #define get_package_info_command(filename) yon_char_unite("pacman -Q --info --file '",filename,"' 2>/dev/null|sed -e 's/ */ /g' -e 's/ : /: /g' -e 's/\\n/ /g' -e 's/^ /\\t/g'",NULL)
#define get_storage_info_label(path, repos, archs) yon_char_unite("<b>",STORAGE_PATH_LABEL,":</b> ", path,"\n\n<b>", REPOS_LABEL,":</b> ",repos,"\n\n<b>",ARCHS_LABEL,":</b> ",archs,NULL) #define get_storage_info_lab el(path, repos, archs) yon_char_unite("<b>",STORAGE_PATH_LABEL,":</b> ", path,"\n\n<b>", REPOS_LABEL,":</b> ",repos,"\n\n<b>",ARCHS_LABEL,":</b> ",archs,NULL)
#define get_repo_info_label(repos, archs,sign) yon_char_unite("<b>",REPO_NAME_LABEL,":</b> ",repos,"\n\n<b>",ARCHS_LABEL,":</b> ",archs,"\n\n",sign,NULL) #define get_repo_info_label(repos, archs,sign) yon_char_unite("<b>",REPO_NAME_LABEL,":</b> ",repos,"\n\n<b>",ARCHS_LABEL,":</b> ",archs,"\n\n",sign,NULL)
@ -118,9 +119,9 @@ Key-Type: ",type,"\n\
Key-Length: 1024\n\ Key-Length: 1024\n\
Subkey-Type: ELG-E\n\ Subkey-Type: ELG-E\n\
Subkey-Length: ",strength,"\n\ Subkey-Length: ",strength,"\n\
Name-Real: ",name,"\n\ Name-Real: ",name,"\n",\
Name-Comment: ",comment,"\n\ !yon_char_is_empty(comment)?"Name-Comment: ":"",!yon_char_is_empty(comment)?comment:"",!yon_char_is_empty(comment)?"\n":""\
Name-Email: ",email,"\n\ "Name-Email: ",email,"\n\
Expire-Date: ",!yon_char_is_empty(expire)?expire:"0","\n\ Expire-Date: ",!yon_char_is_empty(expire)?expire:"0","\n\
Passphrase: ",password,"\n\ Passphrase: ",password,"\n\
%commit\n\ %commit\n\
@ -133,15 +134,20 @@ Key-Type: ",type,"\n\
Key-Length: 1024\n\ Key-Length: 1024\n\
Subkey-Type: ELG-E\n\ Subkey-Type: ELG-E\n\
Subkey-Length: ",strength,"\n\ Subkey-Length: ",strength,"\n\
Name-Real: ",name,"\n\ Name-Real: ",name,"\n",\
Name-Comment: ",comment,"\n\ !yon_char_is_empty(comment)?"Name-Comment: ":"",!yon_char_is_empty(comment)?comment:"",!yon_char_is_empty(comment)?"\n":""\
Name-Email: ",email,"\n\ "Name-Email: ",email,"\n\
Expire-Date: ",!yon_char_is_empty(expire)?expire:"0","\n\ Expire-Date: ",!yon_char_is_empty(expire)?expire:"0","\n\
%no-protection\n\ %no-protection\n\
%commit\n\ %commit\n\
%echo done\n\ %echo done\n\
EOF",NULL) EOF",NULL)
#define STORAGE_search_macro "STORAGE["
#define STORAGE(target) yon_char_unite("STORAGE[",target,"]",NULL)
#define STORAGE_command "echo \"\""
typedef char* string; typedef char* string;
__attribute__((unused)) static \ __attribute__((unused)) static \
@ -236,17 +242,6 @@ typedef struct {
config_str delete_storages; config_str delete_storages;
} storage_config_window; } storage_config_window;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *HeadLabel;
GtkWidget *CancelButton;
GtkWidget *ChooseButton;
GtkWidget *NameEntry;
GtkWidget *FileChooserWidget;
char *root_path;
} file_chooser_window;
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;
GtkWidget *StatusBox; GtkWidget *StatusBox;
@ -299,7 +294,7 @@ typedef struct {
char *storage_path; char *storage_path;
GHashTable *archs; GHashTable *archs;
char *path; char *path;
int sign_status; char *sign_status;
} repo_struct; } repo_struct;
typedef struct { typedef struct {
@ -366,7 +361,6 @@ void on_add_target_repo_selection_changed(GtkWidget *target,repo_add_window *win
config_str yon_tree_store_get_all_at_level(GtkTreeStore *target,GtkTreeIter *parent, int *size, int column, int level); config_str yon_tree_store_get_all_at_level(GtkTreeStore *target,GtkTreeIter *parent, int *size, int column, int level);
gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data); gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data);
void on_file_chooser_file_activate(GtkWidget *self, dictionary *dict); void on_file_chooser_file_activate(GtkWidget *self, dictionary *dict);
file_chooser_window *yon_file_chooser_new();
gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data); gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data);
void on_storage_configure_clicked(GtkWidget *self, main_window *widgets); void on_storage_configure_clicked(GtkWidget *self, main_window *widgets);
storage_config_window *yon_storage_config_window_new(); storage_config_window *yon_storage_config_window_new();
@ -384,7 +378,7 @@ void on_add_clicked(GtkWidget *self, main_window *widgets);
void on_rmb_move(GtkWidget *self, main_window *widgets); void on_rmb_move(GtkWidget *self, main_window *widgets);
repo_add_window *on_move_clicked(GtkWidget *self, main_window *widgets); repo_add_window *on_move_clicked(GtkWidget *self, main_window *widgets);
repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets); repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets);
void on_folder_changed(GtkFileChooser *self, file_chooser_window *dialog); void on_folder_changed(GtkFileChooser *self, dictionary *dict);
void on_move_remove_package(GtkWidget *self, repo_add_window *window); void on_move_remove_package(GtkWidget *self, repo_add_window *window);
void on_move_add_accept(GtkWidget *self, dictionary *dict); void on_move_add_accept(GtkWidget *self, dictionary *dict);
void on_ubl_settings_update_launch(); void on_ubl_settings_update_launch();
@ -408,3 +402,19 @@ void yon_sublist_build(char *key, storage_struct *storage, main_window *widgets)
void yon_storage_repo_block_destroy(storage_repo_block *block); void yon_storage_repo_block_destroy(storage_repo_block *block);
void yon_storage_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash); void yon_storage_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash);
void yon_storage_sturct_free_full(storage_struct *storage); void yon_storage_sturct_free_full(storage_struct *storage);
void yon_storage_edit_accept(storage_struct *target_struct, storage_struct *source_struct);
void yon_storage_struct_remove(storage_struct *storage,repo_struct *repo);
void yon_storage_struct_add_repo(storage_struct *storage,repo_struct *repo);
void yon_repo_struct_sign(storage_struct *storage, repo_struct *repo,const char *sign);
void yon_storage_remove(char *key, storage_struct *storage,void*);
config_str yon_arch_struct_get_packages(arch_struct *arch, int *size);
void yon_move_window_set_selected(main_window *widgets, repo_add_window *window);
void on_move_add_package(GtkWidget *self, repo_add_window *window);
void on_packages_sign(GtkWidget *self, main_window *widgets);
void yon_add_window_add_chosen_packages(main_window *widgets, repo_add_window *window);
void yon_storage_open_add_repos(char *storage_path, storage_config_window *window);
void yon_package_info_set_markup(config_str parsed, int size);
void on_remove_window_tree_changed(GtkWidget *self, repo_add_window *window);
void on_move_window_tree_changed(GtkWidget *self, repo_add_window *window);
void on_move_check_fill(GtkWidget *self, repo_add_window *window);
void yon_repo_creation_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target);

@ -2,6 +2,8 @@
#define TITLE_LABEL _("Repository manager") #define TITLE_LABEL _("Repository manager")
#define TITLE_INFO_LABEL _("Repository management and configuring") #define TITLE_INFO_LABEL _("Repository management and configuring")
#define WIKI_LINK _("https://wiki.ublinux.ru/en/Software/Programs_and_utilities/All/ubl-settings-repomanager")
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?") #define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.") #define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.")
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation") #define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
@ -65,6 +67,7 @@
#define STORAGE_LABEL _("Storage:") #define STORAGE_LABEL _("Storage:")
#define OPEN_EXISTING_TOOLTIP_LABEL _("Open existing") #define OPEN_EXISTING_TOOLTIP_LABEL _("Open existing")
#define CREATE_NEW_TOOLTIP_LABEL _("Create new") #define CREATE_NEW_TOOLTIP_LABEL _("Create new")
#define CREATE_NEW_STORAGE_LABEL _("Create new storage")
#define DISABLE_TOOLTIP_LABEL _("Disable") #define DISABLE_TOOLTIP_LABEL _("Disable")
#define DELETE_TOOLTIP_LABEL _("Delete") #define DELETE_TOOLTIP_LABEL _("Delete")
#define ADD_REPO_TOOLTIP_LABEL _("Add repository") #define ADD_REPO_TOOLTIP_LABEL _("Add repository")
@ -86,8 +89,11 @@
#define REPO_SIGN_ERROR_LABEL _("Repository sign failed - repository has no packages") #define REPO_SIGN_ERROR_LABEL _("Repository sign failed - repository has no packages")
#define DATA_LOADED_LABEL _("Data has been loaded") #define DATA_LOADED_LABEL _("Data has been loaded")
#define PACKAGES_ADD_ERROR_LABEL _("Failed to add packages")
#define PACKAGES_ADD_SUCCESS_LABEL _("Packages were added successfully") #define PACKAGES_ADD_SUCCESS_LABEL _("Packages were added successfully")
#define PACKAGES_REMOVE_ERROR_LABEL _("Packages remove has failed")
#define PACKAGES_REMOVE_SUCCESS_LABEL _("Packages were removed successfully") #define PACKAGES_REMOVE_SUCCESS_LABEL _("Packages were removed successfully")
#define PACKAGES_MOVE_ERROR_LABEL _("Packages move has failed")
#define PACKAGES_MOVE_SUCCESS_LABEL _("Packages were moved successfully") #define PACKAGES_MOVE_SUCCESS_LABEL _("Packages were moved successfully")
#define STORAGES_SAVED_LABEL _("Changes saved") #define STORAGES_SAVED_LABEL _("Changes saved")
#define KEY_CREATION_SUCCESS_LABEL _("Key was successfully created") #define KEY_CREATION_SUCCESS_LABEL _("Key was successfully created")
@ -161,9 +167,15 @@
#define SIGNATURE_TITLE_LABEL _("Sign packages") #define SIGNATURE_TITLE_LABEL _("Sign packages")
#define SIGN_SUCCESS_LABEL _("Packages successfully signed") #define SIGN_SUCCESS_LABEL _("Packages successfully signed")
#define SIGN_FAIL_LABEL _("Package sign has failed")
#define EMPTY_FOLDER_LABEL _("Folder must contain repositories") #define EMPTY_FOLDER_LABEL _("Folder must contain repositories")
#define FILES_EXIST_LABEL _("Folder must not be empty") #define FILES_EXIST_LABEL _("Folder must not be empty")
#define NAME_SHORT_LABEL _("Name must be 5 or more symbols") #define NAME_SHORT_LABEL _("Name must be 5 or more symbols")
#define REPO_SAME_CHOSEN_LABEL _("Same repository was chosen for source and target")
#define SIGNED_LABEL _("Signed")
#define UNSIGNED_LABEL _("Unsigned")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@ -228,6 +228,7 @@
<child> <child>
<object class="GtkEntry" id="AddEntry"> <object class="GtkEntry" id="AddEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
@ -239,6 +240,7 @@
<child> <child>
<object class="GtkButton" id="AddRepoButton"> <object class="GtkButton" id="AddRepoButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add repository</property> <property name="tooltip-text" translatable="yes">Add repository</property>

@ -16,6 +16,8 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Filename --> <!-- column-name Filename -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkListStore" id="RepoPackageList"> <object class="GtkListStore" id="RepoPackageList">
@ -46,6 +48,8 @@
<column type="gpointer"/> <column type="gpointer"/>
<!-- column-name DataStructType --> <!-- column-name DataStructType -->
<column type="gint"/> <column type="gint"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
@ -231,6 +235,7 @@
<property name="headers-visible">False</property> <property name="headers-visible">False</property>
<property name="expander-column">treeviewcolumn1</property> <property name="expander-column">treeviewcolumn1</property>
<property name="search-column">2</property> <property name="search-column">2</property>
<property name="tooltip-column">9</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>
@ -304,6 +309,7 @@
<property name="model">RepoFileList</property> <property name="model">RepoFileList</property>
<property name="headers-visible">False</property> <property name="headers-visible">False</property>
<property name="search-column">1</property> <property name="search-column">1</property>
<property name="tooltip-column">3</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>

Loading…
Cancel
Save