mirror of
https://github.com/aarnt/octopi.git
synced 2025-11-20 17:44:42 +01:00
Compare commits
112 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e3b31cc1c | ||
|
|
483064a956 | ||
|
|
8a3731b072 | ||
|
|
ebf4ad9df9 | ||
|
|
8aa2abe5ff | ||
|
|
ddd97fd5ba | ||
|
|
fe5df3e8a2 | ||
|
|
5bb8de6b6e | ||
|
|
3408bebc0c | ||
|
|
56641548d9 | ||
|
|
973fb2a473 | ||
|
|
fe4c704892 | ||
|
|
cb7b571dcc | ||
|
|
4afdd15784 | ||
|
|
53ea9fc062 | ||
|
|
e3d37d6f3d | ||
|
|
db9d26f858 | ||
|
|
e9c98087bc | ||
|
|
dff5d0ea9f | ||
|
|
6e7e3c6f4c | ||
|
|
bc44fa3d78 | ||
|
|
5cb760d1dc | ||
|
|
1ff9761e13 | ||
|
|
5d08cb59d6 | ||
|
|
33bdea2850 | ||
|
|
9887f40a08 | ||
|
|
8751898bd0 | ||
|
5af7cd8abc
|
|||
|
|
1dbebc4ccc | ||
|
|
cf0122f936 | ||
|
|
05a1d28850 | ||
|
|
99bc556cf3 | ||
|
|
8c508c91c8 | ||
|
|
e0708b73b6 | ||
|
|
aad8ac342e | ||
|
|
435f0281e5 | ||
|
|
a081ac2bfd | ||
|
|
d0fbc89b9e | ||
|
|
eebfa41342 | ||
|
|
a974769a4c | ||
|
|
69e85dddd2 | ||
|
|
4f6101f1af | ||
|
|
644c5a3d78 | ||
|
|
cd32995a81 | ||
|
|
64e72f06c9 | ||
|
|
9037688da5 | ||
|
|
8f9647e58f | ||
|
|
039824122b | ||
|
|
59c785f364 | ||
|
|
f79da34b3e | ||
|
|
b2e6dfc8a2 | ||
|
|
3397776586 | ||
|
|
d308c470eb | ||
|
|
a07a3a9b38 | ||
|
|
71759c8f7e | ||
|
|
b4301d72cc | ||
|
|
27f5df6aef | ||
|
|
0cddcd876d | ||
|
|
8a9465738d | ||
|
|
1416d16f49 | ||
|
|
d99839e7e9 | ||
|
|
2521696214 | ||
|
|
24a1423de0 | ||
|
|
6d97331ff2 | ||
|
|
f60d7d971e | ||
|
|
d8a1722d2a | ||
|
|
9085b6ca56 | ||
|
|
bebc5d1276 | ||
|
|
bbccd59fed | ||
|
|
1335406977 | ||
|
|
e7f783cc52 | ||
|
|
a4d718b8b7 | ||
|
|
1fa610f194 | ||
|
|
f59315cd60 | ||
|
|
712a43f39e | ||
|
|
7e3c26adbf | ||
|
|
030efb79b5 | ||
|
|
43b7e86f84 | ||
|
|
f403fd7f9a | ||
|
|
dfb0062aa0 | ||
|
|
455ae4853f | ||
|
|
8d7e4eac39 | ||
|
|
71dcb5fdcb | ||
|
|
7fdabbe9ef | ||
|
|
630f4efd17 | ||
|
|
4b12c8b06f | ||
|
|
c5f1e9694d | ||
|
|
cbd43ab731 | ||
|
|
1166691c37 | ||
|
|
e98fec0fb9 | ||
|
|
d0a30a9eca | ||
|
|
a92868cbb3 | ||
|
|
db36d56be9 | ||
|
|
2db10e3b4b | ||
|
|
3e3acfde39 | ||
|
|
a994beb935 | ||
|
|
144a8ca86e | ||
|
|
462bfec623 | ||
|
|
0a47127c71 | ||
|
|
ba9a934c7c | ||
|
|
d726e53976 | ||
|
|
06c42e047e | ||
|
|
5abd25ff76 | ||
|
|
15f33ee87c | ||
|
|
8b4db5bbd3 | ||
|
|
a4687d1a95 | ||
|
|
1a44290006 | ||
|
|
d16f189c72 | ||
|
|
3ce25e63c5 | ||
|
|
029ecfbedf | ||
|
|
1b8d9aca43 | ||
|
|
00b40f1a87 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -23,3 +23,4 @@ sudo/moc*.*
|
||||
sudo/octopi-sudo
|
||||
sudo/qrc*.cpp
|
||||
sudo/ui_pass*.h
|
||||
sudo/.qtc_clangd
|
||||
|
||||
12
.tx/config
12
.tx/config
@@ -1,9 +1,11 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[octopi.octopi]
|
||||
file_filter = resources/translations/octopi_<lang>.ts
|
||||
source_file = resources/translations/octopi_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:arnt:p:octopi:r:octopi]
|
||||
file_filter = resources/translations/octopi_<lang>.ts
|
||||
source_file = resources/translations/octopi_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
|
||||
38
CHANGELOG
38
CHANGELOG
@@ -1,3 +1,41 @@
|
||||
0.16.1 (2024-06-09)
|
||||
BugFix: Updated some LANG environment variables to C.UTF-8.
|
||||
BugFix: Info/Files tabs were always empty if they were selected at octopi's start.
|
||||
BugFix: Do not install notifier's desktop file in /etc/xdg/autostart.
|
||||
BugFix: Could not remove packages when internet connection was down (thanks to Theluga).
|
||||
Added shortcut key "Ctrl+Shift+U" to upgrade outdated AUR packages.
|
||||
Arrow keys navegation refresh Info and Files tabs again.
|
||||
Updated translations.
|
||||
|
||||
0.16.0 (2024-05-19)
|
||||
BugFix: '--noeditmenu' is deprecated. Use '--editmenu=false' instead (thanks to rbaruccojr).
|
||||
BugFix: Fixed silent error when pacman's database is locked (thanks to SloppyPuppy).
|
||||
BugFix: Files tab expand all items by default.
|
||||
BugFix: Updated translations.
|
||||
Now using the unified qt-sudo project (https://github.com/aarnt/qt-sudo) for privilege escalation.
|
||||
Default to Qt6 lib build (including qtermwidget6)
|
||||
|
||||
0.15.0 (2023-09-10)
|
||||
BugFix: Invalidate Info/Files tabs when user is navigating packages using the keyboard.
|
||||
BugFix: Better handle dependencies while staging packages for deletion.
|
||||
BugFix: First yay-bin download now works again.
|
||||
BugFix: Polished navigation on Info tab dependencies
|
||||
BugFix: AUR passwords that contained a "+" char failed to login at aur.archlinux.org.
|
||||
BugFix: When using the pacman backend, call "pacman -Qm" to fetch ALL foreign packages.
|
||||
BugFix: Change install reason did not work with pacman backend.
|
||||
Made the code Qt5/Qt6 compatible.
|
||||
Using "pacman -Fl" to view contents of non installed packages (thanks to Zesko).
|
||||
Added a Terminal tab to options dialog to config its colors and fonts.
|
||||
Octopi-sudo code was synced to match project "lxqt-sudo" version 1.3.0.
|
||||
|
||||
0.14.0 (2022-10-05)
|
||||
Added --overwrite="*" checkbox in AUR tab (Tools/Options) when using yay.
|
||||
Octopi-sudo code was synced to match project "lxqt-sudo" version 1.1.0.
|
||||
BugFix: Package search did not work correctly when query string contained a "+" sign.
|
||||
BugFix: Info/Files tab refresh was duplicated.
|
||||
BugFix: Disable (another try) Info/Files tab refresh while typing in Filter/Search
|
||||
line edit.
|
||||
|
||||
0.13.0 (2022-03-30)
|
||||
BugFix: editFile() caused a crash while in Mate desktop. Both "Open PKGBUILD"
|
||||
and "Show PKGBUILD diff" options were affected.
|
||||
|
||||
@@ -1,25 +1,32 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project(octopi VERSION 0.11.0 LANGUAGES CXX)
|
||||
project(octopi VERSION 0.16.1 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD True)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
add_subdirectory(sudo)
|
||||
option(USE_QTERMWIDGET6 "Build with qtermwidget6 instead of qtermwidget5" ON)
|
||||
|
||||
add_subdirectory(helper)
|
||||
add_subdirectory(notifier)
|
||||
add_subdirectory(cachecleaner)
|
||||
add_subdirectory(repoeditor)
|
||||
|
||||
find_package(Qt5 5.14.0 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
|
||||
find_package(qtermwidget5 REQUIRED)
|
||||
if (USE_QTERMWIDGET6)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Gui Network Xml Widgets LinguistTools)
|
||||
find_package(qtermwidget6 REQUIRED)
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
|
||||
find_package(qtermwidget5 REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(alpm_octopi_utils REQUIRED)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
file(GLOB TS_FILES LIST_DIRECTORIES false "${CMAKE_CURRENT_LIST_DIR}/resources/translations/*.ts")
|
||||
qt5_add_translation(qmFiles ${TS_FILES})
|
||||
qt_add_translation(qmFiles ${TS_FILES})
|
||||
|
||||
set(src
|
||||
src/QtSolutions/qtsingleapplication.cpp
|
||||
@@ -99,13 +106,20 @@ set(ui ui/mainwindow.ui ui/transactiondialog.ui ui/multiselectiondialog.ui ui/op
|
||||
|
||||
set(qrc resources.qrc)
|
||||
|
||||
qt5_wrap_ui(src ${ui})
|
||||
qt5_add_resources(src ${qrc})
|
||||
qt_wrap_ui(src ${ui})
|
||||
qt_add_resources(src ${qrc})
|
||||
|
||||
add_executable(octopi ${src} ${header} ${qmFiles})
|
||||
target_compile_definitions(octopi PRIVATE OCTOPI_EXTENSIONS ALPM_BACKEND QT_DEPRECATED_WARNINGS QT_USE_QSTRINGBUILDER QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_NO_URL_CAST_FROM_STRING QT_NO_CAST_FROM_BYTEARRAY)
|
||||
target_include_directories(octopi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets qtermwidget5 alpm_octopi_utils)
|
||||
|
||||
if (USE_QTERMWIDGET6)
|
||||
target_include_directories(octopi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi PRIVATE Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::Widgets qtermwidget6 alpm_octopi_utils)
|
||||
else()
|
||||
target_include_directories(octopi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets qtermwidget5 alpm_octopi_utils)
|
||||
endif()
|
||||
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/resources/images/octopi_green.png" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
file(RENAME "${CMAKE_CURRENT_BINARY_DIR}/octopi_green.png" "${CMAKE_CURRENT_BINARY_DIR}/octopi.png")
|
||||
install(TARGETS octopi RUNTIME DESTINATION bin LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
|
||||
|
||||
34
PKGBUILD
34
PKGBUILD
@@ -1,47 +1,49 @@
|
||||
pkgname=octopi
|
||||
pkgver=0.13.0
|
||||
_pkgname=octopi
|
||||
pkgname=octopi-git
|
||||
pkgver=0.16.1.latest
|
||||
pkgrel=1
|
||||
pkgdesc="This is Octopi, a powerful Pacman frontend using Qt libs"
|
||||
pkgdesc="This is Octopi, a powerful Pacman frontend using Qt libs (git checkout)"
|
||||
url="https://tintaescura.com/projects/octopi/"
|
||||
arch=('i686' 'x86_64')
|
||||
license=('GPL2')
|
||||
depends=('alpm_octopi_utils' 'pkgfile' 'qtermwidget' 'sudo')
|
||||
depends=('alpm_octopi_utils' 'qtermwidget' 'sudo')
|
||||
makedepends=('git')
|
||||
groups=('system')
|
||||
source=("git+https://github.com/aarnt/octopi.git")
|
||||
md5sums=('SKIP')
|
||||
|
||||
prepare() {
|
||||
cd "${pkgname}"
|
||||
|
||||
# enable the kstatus switch, disable if you wish to build without Plasma/knotifications support
|
||||
sed -e "s|DEFINES += ALPM_BACKEND #KSTATUS|DEFINES += ALPM_BACKEND KSTATUS|" -i notifier/octopi-notifier.pro
|
||||
|
||||
cd "${_pkgname}"
|
||||
cp resources/images/octopi_green.png resources/images/octopi.png
|
||||
}
|
||||
|
||||
|
||||
pkgver() {
|
||||
cd "${_pkgname}"
|
||||
git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//'
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${pkgname}"
|
||||
cd "${_pkgname}"
|
||||
echo "Starting build..."
|
||||
qmake-qt5 PREFIX=/usr QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_LFLAGS="${LDFLAGS}" octopi.pro
|
||||
qmake6 PREFIX=/usr QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_LFLAGS="${LDFLAGS}" octopi.pro
|
||||
make
|
||||
|
||||
_subdirs="cachecleaner helper notifier repoeditor sudo"
|
||||
_subdirs="cachecleaner helper notifier repoeditor"
|
||||
|
||||
for _subdir in $_subdirs; do
|
||||
pushd $_subdir
|
||||
echo "Building octopi-$_subdir..."
|
||||
qmake-qt5 PREFIX=/usr QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_LFLAGS="${LDFLAGS}" "octopi-$_subdir.pro"
|
||||
qmake6 PREFIX=/usr QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_LFLAGS="${LDFLAGS}" "octopi-$_subdir.pro"
|
||||
make
|
||||
popd
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${pkgname}"
|
||||
cd "${_pkgname}"
|
||||
make INSTALL_ROOT="${pkgdir}" install
|
||||
|
||||
_subdirs="cachecleaner helper notifier repoeditor sudo"
|
||||
_subdirs="cachecleaner helper notifier repoeditor"
|
||||
|
||||
for _subdir in $_subdirs; do
|
||||
pushd $_subdir
|
||||
|
||||
51
README.md
51
README.md
@@ -4,7 +4,7 @@
|
||||
|
||||
The project site is hosted on https://tintaescura.com/projects/octopi
|
||||
|
||||
Currently, 14 Linux distros are compatible with it
|
||||
Currently, 12 Linux distros are compatible with it
|
||||
|
||||
* [ArchBang](http://archbang.org/)
|
||||
* [Archcraft](https://archcraft.io/)
|
||||
@@ -12,8 +12,6 @@ Currently, 14 Linux distros are compatible with it
|
||||
* [ArcoLinux](https://arcolinux.info/)
|
||||
* [Artix Linux](https://artixlinux.org)
|
||||
* [CachyOS](https://cachyos.org/)
|
||||
* [Chakra](https://chakralinux.org/)
|
||||
* [CondresOS](https://condresos.codelinsoft.it/)
|
||||
* [EndeavourOS](https://endeavouros.com/)
|
||||
* [Garuda Linux](https://garudalinux.org/)
|
||||
* [KaOS](https://kaosx.us/)
|
||||
@@ -26,7 +24,7 @@ Currently, 14 Linux distros are compatible with it
|
||||
You'll need:
|
||||
* [Alpm_octopi_utils](https://github.com/aarnt/alpm_octopi_utils/) library
|
||||
* A helper to execute pacman commands called "octphelper", available on "./helper" dir
|
||||
* A privilege escalation tool called "octopi-sudo", available on "./sudo" dir
|
||||
* A privilege escalation tool called [qt-sudo](https://github.com/aarnt/qt-sudo/)
|
||||
* qtermwidget package, in order to build Octopi with embedded terminal support
|
||||
|
||||
### To install Octopi using pacman
|
||||
@@ -39,7 +37,7 @@ If Octopi package is available in your distro's repository, you can just type:
|
||||
|
||||
### Steps to build Octopi source code (qmake)
|
||||
|
||||
Assuming you have vala compiler and Qt5 libs properly installed, follow these steps:
|
||||
Assuming you have vala compiler and Qt6 libs properly installed, follow these steps:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/aarnt/alpm_octopi_utils
|
||||
@@ -47,29 +45,31 @@ $ cd alpm_octopi_utils
|
||||
$ make
|
||||
# make install
|
||||
$ cd ..
|
||||
$ git clone https://github.com/aarnt/octopi
|
||||
$ cd octopi/sudo
|
||||
$ qmake-qt5
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../helper
|
||||
$ qmake-qt5
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../notifier
|
||||
$ qmake-qt5
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../cachecleaner
|
||||
$ qmake-qt5
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../repoeditor
|
||||
$ qmake-qt5
|
||||
$ git clone https://github.com/aarnt/qt-sudo
|
||||
$ cd qt-sudo
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
$ cd ..
|
||||
$ qmake-qt5
|
||||
$ git clone https://github.com/aarnt/octopi
|
||||
$ cd octopi/helper
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../notifier
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../cachecleaner
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
$ cd ../repoeditor
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
$ cd ..
|
||||
$ qmake6
|
||||
$ make
|
||||
# make install
|
||||
```
|
||||
@@ -125,7 +125,6 @@ You'll need to install [pacaur](https://github.com/rmarquis/pacaur), [paru](http
|
||||
[pikaur](https://github.com/actionless/pikaur), [trizen](https://github.com/trizen/trizen) or
|
||||
[yay](https://github.com/Jguer/yay) in your system.
|
||||
If neither of the previous tools are found Octopi will download latest "yay-bin" github binary.
|
||||
In Chakra, [chaser](https://github.com/ccr-tools/chaser) will be supported out of the box.
|
||||
In KaOS, [kcp](https://github.com/bvaudour/kcp) will be supported out of the box.
|
||||
|
||||
### Ways to help/support Octopi
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[octopi.cachecleaner]
|
||||
file_filter = resources/translations/octopi_cachecleaner_<lang>.ts
|
||||
source_file = resources/translations/octopi_cachecleaner_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:arnt:p:octopi:r:cachecleaner]
|
||||
file_filter = resources/translations/octopi_cachecleaner_<lang>.ts
|
||||
source_file = resources/translations/octopi_cachecleaner_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Network Xml Widgets LinguistTools)
|
||||
if (USE_QTERMWIDGET6)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Network Xml Widgets LinguistTools)
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Network Xml Widgets LinguistTools)
|
||||
endif()
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
file(GLOB TS_FILES LIST_DIRECTORIES false "${CMAKE_CURRENT_LIST_DIR}/resources/translations/*.ts")
|
||||
qt5_add_translation(qmFiles ${TS_FILES})
|
||||
qt_add_translation(qmFiles ${TS_FILES})
|
||||
|
||||
set(src
|
||||
main.cpp
|
||||
@@ -44,12 +48,19 @@ set(ui ui/cachecleaner.ui)
|
||||
|
||||
set(qrc resources.qrc)
|
||||
|
||||
qt5_wrap_ui(src ${ui})
|
||||
qt5_add_resources(src ${qrc})
|
||||
qt_wrap_ui(src ${ui})
|
||||
qt_add_resources(src ${qrc})
|
||||
|
||||
add_executable(octopi-cachecleaner ${src} ${header} ${qmFiles})
|
||||
target_compile_definitions(octopi-cachecleaner PRIVATE QT_USE_QSTRINGBUILDER QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_NO_URL_CAST_FROM_STRING QT_NO_CAST_FROM_BYTEARRAY)
|
||||
target_include_directories(octopi-cachecleaner PRIVATE ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/src/QtSolutions" ${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-cachecleaner PRIVATE Qt5::Core Qt5::Network Qt5::Xml Qt5::Widgets)
|
||||
|
||||
if (USE_QTERMWIDGET6)
|
||||
target_include_directories(octopi-cachecleaner PRIVATE ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/src/QtSolutions" ${Qt6Core_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-cachecleaner PRIVATE Qt6::Core Qt6::Network Qt6::Xml Qt6::Widgets)
|
||||
else()
|
||||
target_include_directories(octopi-cachecleaner PRIVATE ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/src/QtSolutions" ${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-cachecleaner PRIVATE Qt5::Core Qt5::Network Qt5::Xml Qt5::Widgets)
|
||||
endif()
|
||||
|
||||
install(TARGETS octopi-cachecleaner RUNTIME DESTINATION bin LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi-cachecleaner.desktop" DESTINATION share/applications)
|
||||
|
||||
@@ -98,7 +98,7 @@ void CacheCleaner::onSendInfoToOctopiHelper()
|
||||
QString msg;
|
||||
QByteArray block;
|
||||
QDataStream out(&block, QIODevice::WriteOnly);
|
||||
out.setVersion(QDataStream::Qt_5_10);
|
||||
out.setVersion(QDataStream::Qt_5_15);
|
||||
|
||||
//Is octopi-helper running?
|
||||
bool isHelperExecuting=UnixCommand::isOctopiHelperRunning();
|
||||
|
||||
@@ -106,7 +106,8 @@ TRANSLATIONS += resources/translations/octopi_cachecleaner_pt_BR.ts \
|
||||
resources/translations/octopi_cachecleaner_hr.ts \
|
||||
resources/translations/octopi_cachecleaner_zh-Hans.ts \
|
||||
resources/translations/octopi_cachecleaner_zh_CN.ts \
|
||||
resources/translations/octopi_cachecleaner_ko.ts
|
||||
resources/translations/octopi_cachecleaner_ko.ts \
|
||||
resources/translations/octopi_cachecleaner_ko_KR.ts \
|
||||
|
||||
# install
|
||||
isEmpty(PREFIX) {
|
||||
|
||||
@@ -158,7 +158,11 @@ bool PackageGroupModel::isSUAvailable()
|
||||
*/
|
||||
void PackageGroupModel::cleanCache()
|
||||
{
|
||||
if (isExecutingCommand || UnixCommand::isPacmanDbLocked()) return;
|
||||
if (isExecutingCommand || UnixCommand::isPacmanDbLocked()){
|
||||
QMessageBox::critical( nullptr, StrConstants::getApplicationName(),
|
||||
StrConstants::getErrorDbLock());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isSUAvailable())
|
||||
return;
|
||||
@@ -195,7 +199,7 @@ void PackageGroupModel::finishedDryrun(int exitCode, QProcess::ExitStatus)
|
||||
if(exitCode > 1)
|
||||
{
|
||||
//process failed, provide info on errors
|
||||
QMessageBox::critical(m_listView, QStringLiteral("Error whith the underlying process"), m_acc->getErrors());
|
||||
QMessageBox::critical(m_listView, QStringLiteral("Error with the underlying process"), m_acc->getErrors());
|
||||
}
|
||||
else if (exitCode == 0)
|
||||
{
|
||||
|
||||
Binary file not shown.
@@ -4,12 +4,12 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
|
||||
<source>Cache Cleaner - Octopi</source>
|
||||
<translation>Чистач на кеш памет - Octopi</translation>
|
||||
<translation>Почистване на кеша - „Octopi“</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
|
||||
<source>Uninstalled packages</source>
|
||||
<translation>Деинсталирани пакети</translation>
|
||||
<translation>Премахнати пакети</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
|
||||
|
||||
BIN
cachecleaner/resources/translations/octopi_cachecleaner_ko_KR.qm
Normal file
BIN
cachecleaner/resources/translations/octopi_cachecleaner_ko_KR.qm
Normal file
Binary file not shown.
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ko_KR" version="2.0">
|
||||
<context>
|
||||
<name>CacheCleaner</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="14"/>
|
||||
<source>Cache Cleaner - Octopi</source>
|
||||
<translation>캐시 클리너 - Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="49"/>
|
||||
<source>Uninstalled packages</source>
|
||||
<translation>제거된 패키지</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="75"/>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="150"/>
|
||||
<source>Keep :</source>
|
||||
<translation>보관 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="82"/>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="157"/>
|
||||
<source>Number of old versions to keep</source>
|
||||
<translation>보관할 이전 버전 수</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="102"/>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="183"/>
|
||||
<source>Refresh</source>
|
||||
<translation>새로 고침</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/ui/cachecleaner.ui" line="127"/>
|
||||
<source>Installed packages</source>
|
||||
<translation>설치된 패키지</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PackageGroupModel</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="199"/>
|
||||
<source>Clean</source>
|
||||
<translation>청소하기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/cachecleaner/packagegroupmodel.cpp" line="222"/>
|
||||
<source>Clean %1</source>
|
||||
<translation>%1 청소하기</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,4 +1,8 @@
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Network)
|
||||
if (USE_QTERMWIDGET6)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Network)
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Network)
|
||||
endif()
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
@@ -8,6 +12,13 @@ set(header octopihelper.h ../src/argumentlist.h)
|
||||
|
||||
add_executable(octphelper ${src} ${header})
|
||||
target_compile_definitions(octphelper PRIVATE QT_DEPRECATED_WARNINGS QT_USE_QSTRINGBUILDER QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_NO_URL_CAST_FROM_STRING QT_NO_CAST_FROM_BYTEARRAY QT_NO_FOREACH)
|
||||
target_include_directories(octphelper PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octphelper PRIVATE Qt5::Core Qt5::Network)
|
||||
|
||||
if (USE_QTERMWIDGET6)
|
||||
target_include_directories(octphelper PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octphelper PRIVATE Qt6::Core Qt6::Network)
|
||||
else()
|
||||
target_include_directories(octphelper PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octphelper PRIVATE Qt5::Core Qt5::Network)
|
||||
endif()
|
||||
|
||||
install(TARGETS octphelper RUNTIME DESTINATION lib/octopi LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <QDataStream>
|
||||
#include <QFile>
|
||||
#include <QSettings>
|
||||
#include <QDateTime>
|
||||
|
||||
QFile *OctopiHelper::m_temporaryFile = nullptr;
|
||||
|
||||
@@ -119,6 +120,10 @@ OctopiHelper::OctopiHelper()
|
||||
//These settings enable all "pacman" output go thru QProcess output methods
|
||||
m_process->setProcessChannelMode(QProcess::ForwardedChannels);
|
||||
m_process->setInputChannelMode(QProcess::ForwardedInputChannel);
|
||||
|
||||
QString fname = QStringLiteral("/usr/lib/octopi/octphelper.log");
|
||||
m_logFile.setFileName(fname);
|
||||
m_logFile.open(QIODevice::WriteOnly | /*QIODevice::Append |*/ QIODevice::Text);
|
||||
}
|
||||
|
||||
OctopiHelper::~OctopiHelper()
|
||||
@@ -127,23 +132,23 @@ OctopiHelper::~OctopiHelper()
|
||||
if (m_temporaryFile != nullptr)
|
||||
QFile::remove(m_temporaryFile->fileName());
|
||||
removeTemporaryFiles();
|
||||
|
||||
if (m_logFile.isOpen())
|
||||
m_logFile.close();
|
||||
}
|
||||
|
||||
/*
|
||||
* Logs passed str in a file called "octphelper.log" (for debugging purposes)
|
||||
* Logs received str in a file called "octphelper.log" (for debugging purposes)
|
||||
*/
|
||||
void OctopiHelper::log(const QString &str)
|
||||
{
|
||||
QString fname = QStringLiteral("/usr/lib/octopi/octphelper.log");
|
||||
QFile file(fname);
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||
return;
|
||||
QString dateTimeFormat = QLocale().dateTimeFormat(QLocale::ShortFormat);
|
||||
QDateTime bdt = QDateTime::currentDateTime();
|
||||
|
||||
QTextStream out(&file);
|
||||
out << str << Qt::endl;
|
||||
QTextStream out(&m_logFile);
|
||||
out << bdt.toString(dateTimeFormat) << QLatin1String(": ") << str << Qt::endl;
|
||||
|
||||
file.flush();
|
||||
file.close();
|
||||
m_logFile.flush();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -154,8 +159,8 @@ QProcessEnvironment OctopiHelper::getProcessEnvironment()
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.remove(QStringLiteral("LANG"));
|
||||
env.remove(QStringLiteral("LC_MESSAGES"));
|
||||
env.insert(QStringLiteral("LANG"), QStringLiteral("C"));
|
||||
env.insert(QStringLiteral("LC_MESSAGES"), QStringLiteral("C"));
|
||||
env.insert(QStringLiteral("LANG"), QStringLiteral("C.UTF-8"));
|
||||
env.insert(QStringLiteral("LC_MESSAGES"), QStringLiteral("C.UTF-8"));
|
||||
env.remove(QStringLiteral("COLUMNS"));
|
||||
env.insert(QStringLiteral("COLUMNS"), QStringLiteral("132"));
|
||||
return env;
|
||||
@@ -230,12 +235,9 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
bool isNotifierRunning=isOctoToolRunning(QStringLiteral("octopi-notifier"));
|
||||
bool isCacheCleanerRunning=isOctoToolRunning(QStringLiteral("octopi-cachecle"));
|
||||
|
||||
if(!isOctopiRunning &&
|
||||
!isNotifierRunning &&
|
||||
!isCacheCleanerRunning)
|
||||
if (!isOctopiRunning && !isNotifierRunning && !isCacheCleanerRunning)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious execution method" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious execution method - NO [/usr/bin/octopi-cachecleaner] OR [/usr/bin/octopi-notifier] OR [/usr/bin/octopi] is running..."));
|
||||
return ctn_SUSPICIOUS_EXECUTION_METHOD;
|
||||
}
|
||||
|
||||
@@ -243,8 +245,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
QSharedMemory *sharedMem = new QSharedMemory(QStringLiteral("org.arnt.octopi"), this);
|
||||
if (!sharedMem->attach(QSharedMemory::ReadOnly))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Couldn't attach to memory" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Couldn't attach to memory"));
|
||||
return ctn_COULD_NOT_ATTACH_TO_MEM;
|
||||
}
|
||||
|
||||
@@ -263,8 +264,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (suspicious)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious transaction detected -> \"" << contents << "\"" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious transaction detected -> \"") + contents + QLatin1String("\""));
|
||||
return ctn_SUSPICIOUS_ACTIONS_FILE;
|
||||
}
|
||||
|
||||
@@ -280,13 +280,14 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
if ((line == QLatin1String("killall pacman")) ||
|
||||
(line == QLatin1String("rm ") + ctn_PACMAN_DATABASE_LOCK_FILE) ||
|
||||
(line == QLatin1String("echo -e")) ||
|
||||
(line == QLatin1String("echo \"Press any key to continue...\"")) ||
|
||||
(line == QLatin1String("read -n 1 -p \"Press any key to continue...\"")) ||
|
||||
(line == QLatin1String("echo \"PAKtC\"")) ||
|
||||
(line == QLatin1String("read -n 1 -p \"PAKtC\"")) ||
|
||||
(line == QLatin1String("pkgfile -u")) ||
|
||||
(line == QLatin1String("paccache -r -k 0")) ||
|
||||
(line == QLatin1String("paccache -r -k 1")) ||
|
||||
(line == QLatin1String("paccache -r -k 2")) ||
|
||||
(line == QLatin1String("paccache -r -k 3")) ||
|
||||
(line == QLatin1String("pacman -Fy")) ||
|
||||
(line == QLatin1String("pacman -Syu")) ||
|
||||
(line == QLatin1String("pacman -Syu --noconfirm")) ||
|
||||
(line.startsWith(QLatin1String("pacman -D --asexplicit "))) ||
|
||||
@@ -318,9 +319,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (suspicious)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious transaction detected -> \"" << line << "\"" << Qt::endl;
|
||||
//log(QStringLiteral("Offending line: ") + line);
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious transaction detected -> \"") + line + QLatin1String("\""));
|
||||
return ctn_SUSPICIOUS_ACTIONS_FILE;
|
||||
}
|
||||
}
|
||||
@@ -330,6 +329,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
contents = contents.replace(QLatin1String("rm ") + ctn_PACMAN_DATABASE_LOCK_FILE, QLatin1String("/usr/bin/rm ") + ctn_PACMAN_DATABASE_LOCK_FILE);
|
||||
contents = contents.replace(QLatin1String("pkgfile -u"), QLatin1String("/usr/bin/pkgfile -u"));
|
||||
contents = contents.replace(QLatin1String("paccache -r"), QLatin1String("/usr/bin/paccache -r"));
|
||||
contents = contents.replace(QLatin1String("pacman -Fy"), QLatin1String("/usr/bin/pacman -Fy"));
|
||||
contents = contents.replace(QLatin1String("pacman -Syu"), QLatin1String("/usr/bin/pacman -Syu"));
|
||||
contents = contents.replace(QLatin1String("pacman -D "), QLatin1String("/usr/bin/pacman -D "));
|
||||
contents = contents.replace(QLatin1String("pacman -S "), QLatin1String("/usr/bin/pacman -S "));
|
||||
@@ -338,8 +338,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
//If there is a "pacman" process executing elsewhere, let's abort octopi-helper!
|
||||
if (contents != QLatin1String("/usr/bin/killall pacman\n/usr/bin/rm ") + ctn_PACMAN_DATABASE_LOCK_FILE +QLatin1Char('\n') && isAppRunning(QStringLiteral("pacman"), true))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Pacman process already running" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Pacman process already running"));
|
||||
return ctn_PACMAN_PROCESS_EXECUTING;
|
||||
}
|
||||
|
||||
@@ -347,8 +346,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
{
|
||||
if (!isOctopiRunning && !testCommandFromNotifier)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious execution method" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious execution method -> Octopi not running"));
|
||||
return ctn_SUSPICIOUS_EXECUTION_METHOD;
|
||||
}
|
||||
|
||||
@@ -360,23 +358,21 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
{
|
||||
if (!testCommandFromNotifier)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout connecting to Octopi" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout connecting to Octopi"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
else goto testNotifierConnection;
|
||||
}
|
||||
|
||||
QDataStream in(&socket);
|
||||
in.setVersion(QDataStream::Qt_5_10);
|
||||
in.setVersion(QDataStream::Qt_5_15);
|
||||
QString octopiResponse;
|
||||
|
||||
do
|
||||
{
|
||||
if (!socket.waitForReadyRead() && !testCommandFromNotifier)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout contacting Octopi" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout contacting Octopi"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
|
||||
@@ -390,8 +386,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
}
|
||||
else if (octopiResponse != QLatin1String("Octopi est occupatus") && !testCommandFromNotifier)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: No transaction being executed" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: No transaction being executed"));
|
||||
return ctn_NO_TRANSACTION_EXECUTING;
|
||||
}
|
||||
}
|
||||
@@ -401,8 +396,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
{
|
||||
if (!isNotifierRunning)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious execution method" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious execution method -> Notifier is not running"));
|
||||
return ctn_SUSPICIOUS_EXECUTION_METHOD;
|
||||
}
|
||||
|
||||
@@ -412,21 +406,19 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (!socket.waitForConnected(5000))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout connecting to Octopi-Notifier" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout connecting to Octopi-Notifier"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
|
||||
QDataStream in(&socket);
|
||||
in.setVersion(QDataStream::Qt_5_10);
|
||||
in.setVersion(QDataStream::Qt_5_15);
|
||||
QString octopiResponse;
|
||||
|
||||
do
|
||||
{
|
||||
if (!socket.waitForReadyRead())
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout contacting Octopi-Notifier" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout contacting Octopi-Notifier"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
|
||||
@@ -436,8 +428,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (octopiResponse != QLatin1String("Octopi est occupatus"))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: No transaction being executed" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: No transaction being executed"));
|
||||
return ctn_NO_TRANSACTION_EXECUTING;
|
||||
}
|
||||
}
|
||||
@@ -446,8 +437,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
{
|
||||
if (!isCacheCleanerRunning)
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Suspicious execution method" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Suspicious execution method -> CacheCleaner is not running"));
|
||||
return ctn_SUSPICIOUS_EXECUTION_METHOD;
|
||||
}
|
||||
|
||||
@@ -457,21 +447,19 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (!socket.waitForConnected(5000))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout connecting to Octopi-CacheCleaner" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout connecting to Octopi-CacheCleaner"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
|
||||
QDataStream in(&socket);
|
||||
in.setVersion(QDataStream::Qt_5_10);
|
||||
in.setVersion(QDataStream::Qt_5_15);
|
||||
QString octopiResponse;
|
||||
|
||||
do
|
||||
{
|
||||
if (!socket.waitForReadyRead())
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: Timeout contacting Octopi-CacheCleaner" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: Timeout contacting Octopi-CacheCleaner"));
|
||||
return ctn_TIMEOUT_CONNECTING;
|
||||
}
|
||||
|
||||
@@ -481,8 +469,7 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
|
||||
if (octopiResponse != QLatin1String("Octopi est occupatus"))
|
||||
{
|
||||
QTextStream qout(stdout);
|
||||
qout << Qt::endl << "octopi-helper[aborted]: No transaction being executed" << Qt::endl;
|
||||
log(QLatin1String("octopi-helper[aborted]: No transaction being executed"));
|
||||
return ctn_NO_TRANSACTION_EXECUTING;
|
||||
}
|
||||
}
|
||||
@@ -503,6 +490,9 @@ int OctopiHelper::executePkgTransactionWithSharedMem()
|
||||
}
|
||||
|
||||
out << QLatin1String("unalias -a\n") << contents;
|
||||
|
||||
log(QLatin1String("Exec as root: ") + contents.trimmed());
|
||||
|
||||
out.flush();
|
||||
ftemp->close();
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
#include <QString>
|
||||
#include <QProcess>
|
||||
#include <QObject>
|
||||
#include <QFile>
|
||||
#include <QRandomGenerator>
|
||||
|
||||
@@ -38,6 +37,8 @@ private:
|
||||
QProcess *m_process;
|
||||
QProcessEnvironment getProcessEnvironment();
|
||||
QString m_suspiciousChars;
|
||||
QFile m_logFile;
|
||||
|
||||
static QFile *m_temporaryFile;
|
||||
|
||||
static QString getProxySettings();
|
||||
|
||||
@@ -1,12 +1,33 @@
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Xml Gui Widgets Network)
|
||||
find_package(qtermwidget5 REQUIRED)
|
||||
find_package(alpm_octopi_utils REQUIRED)
|
||||
find_package(KF5Notifications QUIET)
|
||||
option(USE_QTERMWIDGET6 "Build with qtermwidget6 instead of qtermwidget5" OFF)
|
||||
option(USE_KF5NOTIFICATIONS "Build with KF5Notifications support" OFF)
|
||||
option(USE_KF6NOTIFICATIONS "Build with KF6StatusNotifierItem support" OFF)
|
||||
|
||||
if(NOT KF5Notifications_FOUND)
|
||||
if (USE_QTERMWIDGET6)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat Xml Gui Widgets Network)
|
||||
find_package(qtermwidget6 REQUIRED)
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Xml Gui Widgets Network)
|
||||
find_package(qtermwidget5 REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(alpm_octopi_utils REQUIRED)
|
||||
|
||||
if (USE_KF5NOTIFICATIONS)
|
||||
find_package(KF5Notifications QUIET)
|
||||
endif()
|
||||
|
||||
if (USE_KF6NOTIFICATIONS)
|
||||
find_package(KF6StatusNotifierItem QUIET)
|
||||
endif()
|
||||
|
||||
if(USE_KF5NOTIFICATIONS AND NOT KF5Notifications_FOUND)
|
||||
message(WARNING "KNotifications not found. Skipping")
|
||||
endif()
|
||||
|
||||
if(USE_KF6NOTIFICATIONS AND NOT KF6StatusNotifierItem_FOUND)
|
||||
message(WARNING "KF6StatusNotifierItem not found. Skipping")
|
||||
endif()
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
set(src
|
||||
@@ -60,19 +81,34 @@ set(ui ../ui/transactiondialog.ui ../ui/optionsdialog.ui)
|
||||
|
||||
set(qrc ../resources.qrc)
|
||||
|
||||
qt5_wrap_ui(src ${ui})
|
||||
qt5_add_resources(src ${qrc})
|
||||
qt_wrap_ui(src ${ui})
|
||||
qt_add_resources(src ${qrc})
|
||||
|
||||
add_executable(octopi-notifier ${src} ${header})
|
||||
target_compile_definitions(octopi-notifier PRIVATE OCTOPI_EXTENSIONS ALPM_BACKEND QT_USE_QSTRINGBUILDER QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_NO_URL_CAST_FROM_STRING QT_NO_CAST_FROM_BYTEARRAY)
|
||||
target_include_directories(octopi-notifier PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-notifier PRIVATE Qt5::Core Qt5::Xml Qt5::Gui Qt5::Widgets Qt5::Network qtermwidget5 alpm_octopi_utils)
|
||||
if(KF5Notifications_FOUND)
|
||||
|
||||
if (USE_QTERMWIDGET6)
|
||||
target_include_directories(octopi-notifier PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-notifier PRIVATE Qt6::Core Qt6::Xml Qt6::Gui Qt6::Widgets Qt6::Network qtermwidget6 alpm_octopi_utils)
|
||||
|
||||
if(USE_KF6NOTIFICATIONS AND KF6StatusNotifierItem_FOUND)
|
||||
target_compile_definitions(octopi-notifier PRIVATE KSTATUS)
|
||||
find_package(Qt6 REQUIRED COMPONENTS DBus)
|
||||
target_include_directories(octopi-notifier PRIVATE ${Qt6DBus_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-notifier PRIVATE Qt6::DBus KF6::StatusNotifierItem)
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(octopi-notifier PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-notifier PRIVATE Qt5::Core Qt5::Xml Qt5::Gui Qt5::Widgets Qt5::Network qtermwidget5 alpm_octopi_utils)
|
||||
|
||||
if(USE_KF5NOTIFICATIONS AND KF5Notifications_FOUND)
|
||||
target_compile_definitions(octopi-notifier PRIVATE KSTATUS)
|
||||
find_package(Qt5 REQUIRED COMPONENTS DBus)
|
||||
target_include_directories(octopi-notifier PRIVATE ${Qt5DBus_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-notifier PRIVATE Qt5::DBus KF5::Notifications)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
install(TARGETS octopi-notifier RUNTIME DESTINATION bin LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi-notifier.desktop" DESTINATION share/applications)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi-notifier.desktop" DESTINATION /etc/xdg/autostart)
|
||||
#install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi-notifier.desktop" DESTINATION /etc/xdg/autostart)
|
||||
|
||||
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (!QFile::exists(ctn_OCTOPISUDO))
|
||||
{
|
||||
qDebug() << "Aborting notifier as 'octopi-sudo' binary could not be found! [" << ctn_OCTOPISUDO << "]";
|
||||
qDebug() << "Aborting notifier as 'qt-sudo' binary could not be found! [" << ctn_OCTOPISUDO << "]";
|
||||
return (-4);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "../src/package.h"
|
||||
#include "../src/transactiondialog.h"
|
||||
#include "../src/optionsdialog.h"
|
||||
#include "../src/utils.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QSystemTrayIcon>
|
||||
@@ -104,14 +105,13 @@ bool MainWindow::isOctopiBusy()
|
||||
|
||||
QTcpSocket socket;
|
||||
socket.connectToHost(QStringLiteral("127.0.0.1"), 12701);
|
||||
|
||||
if (!socket.waitForConnected(5000))
|
||||
{
|
||||
res=false;
|
||||
}
|
||||
|
||||
QDataStream in(&socket);
|
||||
in.setVersion(QDataStream::Qt_5_10);
|
||||
in.setVersion(QDataStream::Qt_5_15);
|
||||
QString octopiResponse;
|
||||
|
||||
do
|
||||
@@ -147,7 +147,7 @@ bool MainWindow::canOctopiUpgrade()
|
||||
}
|
||||
|
||||
QDataStream in(&socket);
|
||||
in.setVersion(QDataStream::Qt_5_10);
|
||||
in.setVersion(QDataStream::Qt_5_15);
|
||||
QString octopiResponse;
|
||||
|
||||
do
|
||||
@@ -230,7 +230,7 @@ void MainWindow::onSendInfoToOctopiHelper()
|
||||
QString msg;
|
||||
QByteArray block;
|
||||
QDataStream out(&block, QIODevice::WriteOnly);
|
||||
out.setVersion(QDataStream::Qt_5_10);
|
||||
out.setVersion(QDataStream::Qt_5_15);
|
||||
|
||||
//Is octopi-helper running?
|
||||
bool isHelperExecuting=UnixCommand::isOctopiHelperRunning();
|
||||
@@ -466,8 +466,8 @@ void MainWindow::aboutOctopiNotifier()
|
||||
* Hides Octopi
|
||||
*/
|
||||
void MainWindow::hideOctopi()
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-hide"));
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-hide"));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -475,7 +475,7 @@ void MainWindow::hideOctopi()
|
||||
*/
|
||||
void MainWindow::showOctopi()
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-show"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-show"));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -590,7 +590,7 @@ void MainWindow::doSystemUpgrade()
|
||||
if (m_checkUpdatesStringList.count() > m_outdatedStringList->count())
|
||||
{
|
||||
targets->clear();
|
||||
for(const auto &name : qAsConst(m_checkUpdatesStringList))
|
||||
for(const auto &name : std::as_const(m_checkUpdatesStringList))
|
||||
{
|
||||
PackageListData aux;
|
||||
aux = PackageListData(name, m_checkUpdatesNameNewVersion->value(name), QStringLiteral("0"));
|
||||
@@ -598,7 +598,7 @@ void MainWindow::doSystemUpgrade()
|
||||
}
|
||||
}
|
||||
|
||||
for(const auto &target : qAsConst(*targets))
|
||||
for(const auto &target : std::as_const(*targets))
|
||||
{
|
||||
totalDownloadSize += target.downloadSize;
|
||||
list = list + target.name + QLatin1Char('-') + target.version + QLatin1Char('\n');
|
||||
@@ -684,7 +684,7 @@ void MainWindow::doAURUpgrade()
|
||||
QString listOfTargets;
|
||||
QString auxPkg;
|
||||
|
||||
for(const QString &pkg : qAsConst(*m_outdatedAURStringList))
|
||||
for(const QString &pkg : std::as_const(*m_outdatedAURStringList))
|
||||
{
|
||||
auxPkg = pkg;
|
||||
auxPkg.remove(QStringLiteral("[1;39m"));
|
||||
@@ -780,7 +780,7 @@ void MainWindow::afterCheckUpdates(int exitCode, QProcess::ExitStatus)
|
||||
|
||||
m_commandExecuting = ectn_NONE;
|
||||
|
||||
for(const QString &line : qAsConst(checkUpdatesList))
|
||||
for(const QString &line : std::as_const(checkUpdatesList))
|
||||
{
|
||||
QStringList aux = line.split(QStringLiteral(" "), Qt::SkipEmptyParts);
|
||||
|
||||
@@ -1234,7 +1234,7 @@ void MainWindow::runOctopi(ExecOpt execOptions)
|
||||
{
|
||||
if (execOptions == ectn_SYSUPGRADE_NOCONFIRM_EXEC_OPT && canOctopiUpgrade())
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-sysupgrade-noconfirm"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-sysupgrade-noconfirm"));
|
||||
}
|
||||
else if (execOptions == ectn_CHECKUPDATES_EXEC_OPT) //&&
|
||||
//!UnixCommand::isAppRunning(QStringLiteral("octopi"), true))
|
||||
@@ -1244,7 +1244,7 @@ void MainWindow::runOctopi(ExecOpt execOptions)
|
||||
/*else if (execOptions == ectn_CHECKUPDATES_EXEC_OPT &&
|
||||
UnixCommand::isAppRunning(QStringLiteral("octopi"), true))
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-checkupdates"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-checkupdates"));
|
||||
}*/
|
||||
else if (execOptions == ectn_SYSUPGRADE_EXEC_OPT &&
|
||||
(!UnixCommand::isAppRunning(QStringLiteral("octopi"), true) ||
|
||||
@@ -1257,7 +1257,7 @@ void MainWindow::runOctopi(ExecOpt execOptions)
|
||||
UnixCommand::isAppRunning(QStringLiteral("octopi"), true) &&
|
||||
(m_outdatedStringList->count() > 0 || m_checkUpdatesStringList.count() > 0))
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-sysupgrade"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-sysupgrade"));
|
||||
}
|
||||
else if (execOptions == ectn_AUR_UPGRADE_EXEC_OPT &&
|
||||
(!UnixCommand::isAppRunning(QStringLiteral("octopi"), true) || !canOctopiUpgrade()) && m_outdatedAURStringList->count() > 0)
|
||||
@@ -1267,11 +1267,11 @@ void MainWindow::runOctopi(ExecOpt execOptions)
|
||||
else if (execOptions == ectn_AUR_UPGRADE_EXEC_OPT && canOctopiUpgrade() &&
|
||||
UnixCommand::isAppRunning(QStringLiteral("octopi"), true) && m_outdatedAURStringList->count() > 0)
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-aurupgrade"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-aurupgrade"));
|
||||
}
|
||||
else if (execOptions == ectn_NORMAL_EXEC_OPT)
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList());
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1290,7 +1290,7 @@ void MainWindow::showOptionsDialog()
|
||||
{
|
||||
if (m_optionsDialog == nullptr && UnixCommand::isAppRunning(QStringLiteral("octopi"), true))
|
||||
{
|
||||
QProcess::startDetached(QStringLiteral("octopi"), QStringList() << QStringLiteral("-options"));
|
||||
QProcess::startDetached(QStringLiteral("/usr/bin/octopi"), QStringList() << QStringLiteral("-options"));
|
||||
}
|
||||
else if (m_optionsDialog == nullptr)
|
||||
{
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
|
||||
QT += core xml gui network
|
||||
|
||||
# This controls whether octopi-notifier uses KStatusNotifier lib
|
||||
# You SHOULD REALLY enable KSTATUS define in plasma 5 desktops!
|
||||
DEFINES += OCTOPI_EXTENSIONS ALPM_BACKEND #KSTATUS
|
||||
DEFINES += OCTOPI_EXTENSIONS ALPM_BACKEND
|
||||
|
||||
# Disable automatic string conversions
|
||||
DEFINES += QT_USE_QSTRINGBUILDER \
|
||||
@@ -17,7 +15,7 @@ DEFINES += QT_USE_QSTRINGBUILDER \
|
||||
QT_NO_URL_CAST_FROM_STRING \
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
|
||||
CONFIG += qt warn_on debug link_pkgconfig ALPM_BACKEND
|
||||
CONFIG += qt warn_on debug link_pkgconfig ALPM_BACKEND USE_QTERMWIDGET6
|
||||
|
||||
ALPM_BACKEND {
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
@@ -27,16 +25,21 @@ ALPM_BACKEND {
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
}
|
||||
|
||||
LIBS += -lqtermwidget5
|
||||
|
||||
contains(DEFINES, KSTATUS){
|
||||
QT += dbus KNotifications
|
||||
USE_QTERMWIDGET6 {
|
||||
LIBS += -lqtermwidget6
|
||||
QT += core5compat
|
||||
} else {
|
||||
LIBS += -lqtermwidget5
|
||||
}
|
||||
|
||||
#contains(DEFINES, KSTATUS){
|
||||
# QT += dbus
|
||||
#}
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += qt console warn_on debug
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
TARGET = octopi-notifier
|
||||
TEMPLATE = app
|
||||
DESTDIR += ./bin
|
||||
@@ -123,10 +126,11 @@ target.path = $$BINDIR
|
||||
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
|
||||
sources.path = .
|
||||
|
||||
autostart.path = $$ETCDIR/xdg/autostart
|
||||
autostart.files += octopi-notifier.desktop
|
||||
#autostart.path = $$ETCDIR/xdg/autostart
|
||||
#autostart.files += octopi-notifier.desktop
|
||||
|
||||
desktop.path = $$DATADIR/applications
|
||||
desktop.files += octopi-notifier.desktop
|
||||
|
||||
INSTALLS += target autostart desktop
|
||||
#INSTALLS += target autostart desktop
|
||||
INSTALLS += target desktop
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "../src/pacmanexec.h"
|
||||
#include "../src/searchbar.h"
|
||||
#include "../src/uihelper.h"
|
||||
#include "../src/utils.h"
|
||||
#include "../src/strconstants.h"
|
||||
#include "../src/termwidget.h"
|
||||
|
||||
@@ -400,7 +401,7 @@ void OutputDialog::onCanStopTransaction(bool yesNo)
|
||||
/*
|
||||
* Kills all pacman processes
|
||||
*
|
||||
* Returns octopi-sudo exit code
|
||||
* Returns qt-sudo exit code
|
||||
*/
|
||||
int OutputDialog::stopTransaction()
|
||||
{
|
||||
@@ -489,6 +490,8 @@ void OutputDialog::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
emit finished(m_exitCode);
|
||||
event->accept();
|
||||
//Let's save window size...
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
12
octopi.pro
12
octopi.pro
@@ -14,7 +14,7 @@ DEFINES += QT_USE_QSTRINGBUILDER \
|
||||
QT_NO_URL_CAST_FROM_STRING \
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
|
||||
CONFIG += qt warn_on debug link_pkgconfig ALPM_BACKEND
|
||||
CONFIG += qt warn_on debug link_pkgconfig ALPM_BACKEND USE_QTERMWIDGET6
|
||||
|
||||
ALPM_BACKEND {
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
@@ -24,7 +24,12 @@ ALPM_BACKEND {
|
||||
QMAKE_CXXFLAGS += -std=c++17
|
||||
}
|
||||
|
||||
LIBS += -lqtermwidget5
|
||||
USE_QTERMWIDGET6 {
|
||||
LIBS += -lqtermwidget6
|
||||
QT += core5compat
|
||||
} else {
|
||||
LIBS += -lqtermwidget5
|
||||
}
|
||||
|
||||
TEMPLATE = app
|
||||
DESTDIR += bin
|
||||
@@ -165,7 +170,8 @@ TRANSLATIONS += resources/translations/octopi_pt_BR.ts \
|
||||
resources/translations/octopi_hr.ts \
|
||||
resources/translations/octopi_zh-Hans.ts \
|
||||
resources/translations/octopi_zh_CN.ts \
|
||||
resources/translations/octopi_ko.ts
|
||||
resources/translations/octopi_ko.ts \
|
||||
resources/translations/octopi_ko_KR.ts
|
||||
|
||||
# install
|
||||
isEmpty(PREFIX) {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[octopi.repoeditor]
|
||||
file_filter = resources/translations/octopi_repoeditor_<lang>.ts
|
||||
source_file = resources/translations/octopi_repoeditor_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:arnt:p:octopi:r:repoeditor]
|
||||
file_filter = resources/translations/octopi_repoeditor_<lang>.ts
|
||||
source_file = resources/translations/octopi_repoeditor_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
|
||||
if (USE_QTERMWIDGET6)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
|
||||
else()
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Gui Network Xml Widgets LinguistTools)
|
||||
endif()
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
find_library(UTIL_LIBRARY NAMES util)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
file(GLOB TS_FILES LIST_DIRECTORIES false "${CMAKE_CURRENT_LIST_DIR}/resources/translations/*.ts")
|
||||
qt5_add_translation(qmFiles ${TS_FILES})
|
||||
qt_add_translation(qmFiles ${TS_FILES})
|
||||
|
||||
set(src
|
||||
addrepo.cpp
|
||||
@@ -54,12 +59,19 @@ set(ui addrepo.ui repoeditor.ui)
|
||||
|
||||
set(qrc resources.qrc)
|
||||
|
||||
qt5_wrap_ui(src ${ui})
|
||||
qt5_add_resources(src ${qrc})
|
||||
qt_wrap_ui(src ${ui})
|
||||
qt_add_resources(src ${qrc})
|
||||
|
||||
add_executable(octopi-repoeditor ${src} ${header} ${qmFiles})
|
||||
target_compile_definitions(octopi-repoeditor PRIVATE QT_USE_QSTRINGBUILDER QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_NO_URL_CAST_FROM_STRING QT_NO_CAST_FROM_BYTEARRAY)
|
||||
target_include_directories(octopi-repoeditor PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-repoeditor PRIVATE Threads::Threads Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets ${UTIL_LIBRARY})
|
||||
|
||||
if (USE_QTERMWIDGET6)
|
||||
target_include_directories(octopi-repoeditor PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt6Core_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-repoeditor PRIVATE Threads::Threads Qt6::Core Qt6::Gui Qt6::Network Qt6::Xml Qt6::Widgets ${UTIL_LIBRARY})
|
||||
else()
|
||||
target_include_directories(octopi-repoeditor PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
|
||||
target_link_libraries(octopi-repoeditor PRIVATE Threads::Threads Qt5::Core Qt5::Gui Qt5::Network Qt5::Xml Qt5::Widgets ${UTIL_LIBRARY})
|
||||
endif()
|
||||
|
||||
install(TARGETS octopi-repoeditor RUNTIME DESTINATION bin LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include)
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/octopi-repoeditor.desktop" DESTINATION share/applications)
|
||||
|
||||
@@ -114,7 +114,8 @@ TRANSLATIONS += resources/translations/octopi_repoeditor_pt_BR.ts \
|
||||
resources/translations/octopi_repoeditor_hr.ts \
|
||||
resources/translations/octopi_repoeditor_zh-Hans.ts \
|
||||
resources/translations/octopi_repoeditor_zh_CN.ts \
|
||||
resources/translations/octopi_repoeditor_ko.ts
|
||||
resources/translations/octopi_repoeditor_ko.ts \
|
||||
resources/translations/octopi_repoeditor_ko_KR.ts
|
||||
|
||||
# install
|
||||
isEmpty(PREFIX) {
|
||||
|
||||
@@ -188,13 +188,14 @@ void RepoEditor::editEntry()
|
||||
QString location = ui->tableView->model()->data(locationMI).toString();
|
||||
|
||||
// take the type and address
|
||||
QRegExp locationMatch(QLatin1String("^(Server|Include)\\s*=\\s*(.+)"));
|
||||
locationMatch.indexIn(location);
|
||||
location = locationMatch.cap(2);
|
||||
QRegularExpression locationMatch(QLatin1String("^(Server|Include)\\s*=\\s*(.+)"));
|
||||
//locationMatch.indexIn(location);
|
||||
QRegularExpressionMatch rem = locationMatch.match(location);
|
||||
location = rem.captured(2);
|
||||
|
||||
// fill remaining fields
|
||||
addRepoDialog->setRepoLocation(location);
|
||||
addRepoDialog->setLocationType(locationMatch.cap(1) == QLatin1String("Server") ? 1 : 0);
|
||||
addRepoDialog->setLocationType(rem.captured(1) == QLatin1String("Server") ? 1 : 0);
|
||||
|
||||
if( addRepoDialog->exec() == QDialog::Accepted ) {
|
||||
ui->tableView->model()->setData( repoMI, addRepoDialog->getRepoName() );
|
||||
|
||||
Binary file not shown.
@@ -72,7 +72,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
|
||||
<source>You can not run Repository Editor with administrator's credentials.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>لا يمكنك تشغيل محرر المستودعات باستخدام بيانات اعتماد المسؤول.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -169,19 +169,19 @@
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="103"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="125"/>
|
||||
<source>Confirmation</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>تأكيد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="104"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="126"/>
|
||||
<source>There are unsaved changes.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>هناك تغييرات غير محفوظة.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="105"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="127"/>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>هل تريد حفظها؟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="160"/>
|
||||
|
||||
Binary file not shown.
@@ -4,7 +4,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="14"/>
|
||||
<source>Add Repository - Octopi</source>
|
||||
<translation>Добави хранилище - Octopi</translation>
|
||||
<translation>Добавяне на хранилище - „Octopi“</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="22"/>
|
||||
@@ -14,7 +14,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="32"/>
|
||||
<source>Repository name</source>
|
||||
<translation>Име на хранилище</translation>
|
||||
<translation>Име на хранилището</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="39"/>
|
||||
@@ -24,17 +24,17 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="86"/>
|
||||
<source>The repository name field can't be blank.</source>
|
||||
<translation>Не може без име на хранилище.</translation>
|
||||
<translation>Хранилището трябва да има име.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="101"/>
|
||||
<source>The repository location field is not valid.</source>
|
||||
<translation>Полето за място не е валидно.</translation>
|
||||
<translation>Полето за място не е правилно.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="104"/>
|
||||
<source>The repository name field is not valid.</source>
|
||||
<translation>Името на хранилището не е валидно.</translation>
|
||||
<translation>Името на хранилището не е правилно.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="111"/>
|
||||
@@ -44,7 +44,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="115"/>
|
||||
<source>Path to mirrors list file</source>
|
||||
<translation>Път до файла с огледалата</translation>
|
||||
<translation>Местоположение на файла със списъка на огледалата</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="124"/>
|
||||
@@ -54,17 +54,17 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="125"/>
|
||||
<source>Can't add repository.</source>
|
||||
<translation>Не може да се добави хранилище.</translation>
|
||||
<translation>Хранилището не може да бъде добавено.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="136"/>
|
||||
<source>Select local repository</source>
|
||||
<translation>Избери локално хранилище</translation>
|
||||
<translation>Избиране на локално хранилище</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="149"/>
|
||||
<source>Select mirrors list</source>
|
||||
<translation>Избор на списък с огледала</translation>
|
||||
<translation>Избиране на списък с огледала</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -72,7 +72,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
|
||||
<source>You can not run Repository Editor with administrator's credentials.</source>
|
||||
<translation>Не може да стартирате Редактора за източниците с администраторски права.</translation>
|
||||
<translation>Не може да стартирате Редактора на хранилищата с администраторски права.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -80,7 +80,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="208"/>
|
||||
<source>Backup error</source>
|
||||
<translation>Грешка при създаване на резервно копие</translation>
|
||||
<translation>Грешка при създаване на резервното копие</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="209"/>
|
||||
@@ -95,7 +95,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="282"/>
|
||||
<source>Active</source>
|
||||
<translation>Активен</translation>
|
||||
<translation>Активно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="282"/>
|
||||
@@ -113,17 +113,17 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="14"/>
|
||||
<source>Repository Editor - Octopi</source>
|
||||
<translation>Редактор на хранилища - Octopi</translation>
|
||||
<translation>Редактор на хранилища - „Octopi“</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="27"/>
|
||||
<source>Available Repositories</source>
|
||||
<translation>Достъпни хранилища</translation>
|
||||
<translation>Налични хранилища</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="75"/>
|
||||
<source>Edit</source>
|
||||
<translation>Редакция</translation>
|
||||
<translation>Редактиране</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="89"/>
|
||||
@@ -138,27 +138,27 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="130"/>
|
||||
<source>Move Up</source>
|
||||
<translation>Нагоре</translation>
|
||||
<translation>Преместване нагоре</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="144"/>
|
||||
<source>Move Down</source>
|
||||
<translation>Надолу</translation>
|
||||
<translation>Преместване надолу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="160"/>
|
||||
<source>Backup</source>
|
||||
<translation>Резервирай</translation>
|
||||
<translation>Резервно копие</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="168"/>
|
||||
<source>Create backup on save</source>
|
||||
<translation>Направи резерва при запис</translation>
|
||||
<translation>Създаване на резервно копие при запазване</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="191"/>
|
||||
<source>Load a backup file</source>
|
||||
<translation>Зареди резервен файл</translation>
|
||||
<translation>Зареждане на резервен файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="206"/>
|
||||
@@ -181,27 +181,27 @@
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="105"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="127"/>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation>Искате ли да ги запазим?</translation>
|
||||
<translation>Искате ли да ги запазите?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="160"/>
|
||||
<source>Can't load backup file</source>
|
||||
<translation>Резервния файл не може да се зареди</translation>
|
||||
<translation>Резервният файл не може да се зареди</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="161"/>
|
||||
<source>Selected file is not valid</source>
|
||||
<translation>Избраният файл не е валиден</translation>
|
||||
<translation>Избраният файл не е правилен</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="209"/>
|
||||
<source>Success</source>
|
||||
<translation>Успех</translation>
|
||||
<translation>Успешно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="210"/>
|
||||
<source>Repositories configuration successfully saved.</source>
|
||||
<translation>Настройките за хранилищата са запазени.</translation>
|
||||
<translation>Настройките на хранилищата са запазени успешно.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="215"/>
|
||||
@@ -211,7 +211,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="216"/>
|
||||
<source>Repositories configuration not saved.</source>
|
||||
<translation>Настройките за хранилищата не са запазени.</translation>
|
||||
<translation>Настройките на хранилищата не са запазени.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
Binary file not shown.
@@ -72,7 +72,7 @@
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
|
||||
<source>You can not run Repository Editor with administrator's credentials.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Editor úložiště nemůžete spustit s oprávněními správce.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -169,19 +169,19 @@
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="103"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="125"/>
|
||||
<source>Confirmation</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Potvrzení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="104"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="126"/>
|
||||
<source>There are unsaved changes.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Změny nejsou uložené.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="105"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="127"/>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Chcete je uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="160"/>
|
||||
|
||||
BIN
repoeditor/resources/translations/octopi_repoeditor_ko_KR.qm
Normal file
BIN
repoeditor/resources/translations/octopi_repoeditor_ko_KR.qm
Normal file
Binary file not shown.
217
repoeditor/resources/translations/octopi_repoeditor_ko_KR.ts
Normal file
217
repoeditor/resources/translations/octopi_repoeditor_ko_KR.ts
Normal file
@@ -0,0 +1,217 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ko_KR" version="2.1">
|
||||
<context>
|
||||
<name>AddRepo</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="14"/>
|
||||
<source>Add Repository - Octopi</source>
|
||||
<translation>저장소 추가 - Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="22"/>
|
||||
<source>Repository:</source>
|
||||
<translation>저장소 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="32"/>
|
||||
<source>Repository name</source>
|
||||
<translation>저장소 이름 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.ui" line="39"/>
|
||||
<source>Location:</source>
|
||||
<translation>위치 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="86"/>
|
||||
<source>The repository name field can't be blank.</source>
|
||||
<translation>저장소 이름 입력란은 비워 둘 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="101"/>
|
||||
<source>The repository location field is not valid.</source>
|
||||
<translation>저장소 위치 입력란이 잘못되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="104"/>
|
||||
<source>The repository name field is not valid.</source>
|
||||
<translation>저장소 이름 입력란이 잘못되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="111"/>
|
||||
<source>Address of remote or local packages repository</source>
|
||||
<translation>원격 또는 로컬 패키지 저장소의 주소</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="115"/>
|
||||
<source>Path to mirrors list file</source>
|
||||
<translation>미러 목록 파일 경로</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="124"/>
|
||||
<source>Error</source>
|
||||
<translation>오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="125"/>
|
||||
<source>Can't add repository.</source>
|
||||
<translation>저장소를 추가 할 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="136"/>
|
||||
<source>Select local repository</source>
|
||||
<translation>로컬 저장소 선택</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/addrepo.cpp" line="149"/>
|
||||
<source>Select mirrors list</source>
|
||||
<translation>미러 목록 선택</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
|
||||
<source>You can not run Repository Editor with administrator's credentials.</source>
|
||||
<translation>관리자 자격 증명으로는 저장소 편집기를 실행할 수 없습니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoConf</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="208"/>
|
||||
<source>Backup error</source>
|
||||
<translation>백업 오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="209"/>
|
||||
<source>Backup file already exists.</source>
|
||||
<translation>백업 파일이 이미 있습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="209"/>
|
||||
<source>Do you want to overwrite it?</source>
|
||||
<translation>덮어 쓰시겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="282"/>
|
||||
<source>Active</source>
|
||||
<translation>활성화</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="282"/>
|
||||
<source>Repository</source>
|
||||
<translation>저장소</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoconf.cpp" line="282"/>
|
||||
<source>Options</source>
|
||||
<translation>옵션</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoEditor</name>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="14"/>
|
||||
<source>Repository Editor - Octopi</source>
|
||||
<translation>저장소 편집기 - Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="27"/>
|
||||
<source>Available Repositories</source>
|
||||
<translation>사용 가능한 저장소</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="75"/>
|
||||
<source>Edit</source>
|
||||
<translation>편집</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="89"/>
|
||||
<source>Add</source>
|
||||
<translation>추가</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="103"/>
|
||||
<source>Remove</source>
|
||||
<translation>제거</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="130"/>
|
||||
<source>Move Up</source>
|
||||
<translation>위로 이동</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="144"/>
|
||||
<source>Move Down</source>
|
||||
<translation>아래로 이동</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="160"/>
|
||||
<source>Backup</source>
|
||||
<translation>백업</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="168"/>
|
||||
<source>Create backup on save</source>
|
||||
<translation>저장시 백업 만들기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="191"/>
|
||||
<source>Load a backup file</source>
|
||||
<translation>백업 파일 불러오기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.ui" line="206"/>
|
||||
<source>Backup file:</source>
|
||||
<translation>백업 파일 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="103"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="125"/>
|
||||
<source>Confirmation</source>
|
||||
<translation>확인</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="104"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="126"/>
|
||||
<source>There are unsaved changes.</source>
|
||||
<translation>저장되지 않은 변경 사항이 있습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="105"/>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="127"/>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation>저장하시겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="160"/>
|
||||
<source>Can't load backup file</source>
|
||||
<translation>백업 파일을 불러올 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="161"/>
|
||||
<source>Selected file is not valid</source>
|
||||
<translation>선택한 파일이 잘못되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="209"/>
|
||||
<source>Success</source>
|
||||
<translation>성공</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="210"/>
|
||||
<source>Repositories configuration successfully saved.</source>
|
||||
<translation>저장소 구성이 성공적으로 저장되었습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="215"/>
|
||||
<source>Error</source>
|
||||
<translation>오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Projects/octopi/repoeditor/repoeditor.cpp" line="216"/>
|
||||
<source>Repositories configuration not saved.</source>
|
||||
<translation>저장소 구성이 저장되지 않았습니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1076,7 +1076,7 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="472"/>
|
||||
<source>There are %n outdated packages in your system:</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="476"/>
|
||||
@@ -1086,27 +1086,27 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="480"/>
|
||||
<source>%n packages</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="484"/>
|
||||
<source>%n selected</source>
|
||||
<translation><numerusform>%n seleccionado</numerusform><numerusform>%n seleccionados</numerusform></translation>
|
||||
<translation><numerusform>%n seleccionado</numerusform><numerusform>%n seleccionados</numerusform><numerusform>%n seleccionados</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="488"/>
|
||||
<source>%n installed</source>
|
||||
<translation><numerusform>%n instalado</numerusform><numerusform>%n instalados</numerusform></translation>
|
||||
<translation><numerusform>%n instalado</numerusform><numerusform>%n instalados</numerusform><numerusform>%n instalados</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="492"/>
|
||||
<source>%n outdated</source>
|
||||
<translation><numerusform>%n desactualizado</numerusform><numerusform>%n desactualizados</numerusform></translation>
|
||||
<translation><numerusform>%n desactualizado</numerusform><numerusform>%n desactualizados</numerusform><numerusform>%n desactualizados</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="496"/>
|
||||
<source>%n available</source>
|
||||
<translation><numerusform>%n disponible</numerusform><numerusform>%n disponibles</numerusform></translation>
|
||||
<translation><numerusform>%n disponible</numerusform><numerusform>%n disponibles</numerusform><numerusform>%n disponibles</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="500"/>
|
||||
@@ -1231,12 +1231,12 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="639"/>
|
||||
<source>The following %n packages need to be retrieved</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="643"/>
|
||||
<source>The following %n packages will be removed</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="647"/>
|
||||
@@ -1256,7 +1256,7 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="659"/>
|
||||
<source>There are %n updates available!</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="663"/>
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1076,7 +1076,7 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="472"/>
|
||||
<source>There are %n outdated packages in your system:</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="476"/>
|
||||
@@ -1086,27 +1086,27 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="480"/>
|
||||
<source>%n packages</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="484"/>
|
||||
<source>%n selected</source>
|
||||
<translation><numerusform>%n sélectionné</numerusform><numerusform>%n sélectionnés</numerusform></translation>
|
||||
<translation><numerusform>%n sélectionné</numerusform><numerusform>%n sélectionnés</numerusform><numerusform>%n sélectionnés</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="488"/>
|
||||
<source>%n installed</source>
|
||||
<translation><numerusform>%n installé</numerusform><numerusform>%n installés</numerusform></translation>
|
||||
<translation><numerusform>%n installé</numerusform><numerusform>%n installés</numerusform><numerusform>%n installés</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="492"/>
|
||||
<source>%n outdated</source>
|
||||
<translation><numerusform>%n obsolète</numerusform><numerusform>%n obsolètes</numerusform></translation>
|
||||
<translation><numerusform>%n obsolète</numerusform><numerusform>%n obsolètes</numerusform><numerusform>%n obsolètes</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="496"/>
|
||||
<source>%n available</source>
|
||||
<translation><numerusform>%n disponible</numerusform><numerusform>%n disponibles</numerusform></translation>
|
||||
<translation><numerusform>%n disponible</numerusform><numerusform>%n disponibles</numerusform><numerusform>%n disponibles</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="500"/>
|
||||
@@ -1231,12 +1231,12 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="639"/>
|
||||
<source>The following %n packages need to be retrieved</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="643"/>
|
||||
<source>The following %n packages will be removed</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="647"/>
|
||||
@@ -1256,7 +1256,7 @@ You may need to synchronize database!</source>
|
||||
<message numerus="yes">
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="659"/>
|
||||
<source>There are %n updates available!</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="663"/>
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
resources/translations/octopi_ko_KR.qm
Normal file
BIN
resources/translations/octopi_ko_KR.qm
Normal file
Binary file not shown.
1659
resources/translations/octopi_ko_KR.ts
Normal file
1659
resources/translations/octopi_ko_KR.ts
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -491,7 +491,7 @@
|
||||
<location filename="../Projects/octopi/ui/optionsdialog.ui" line="95"/>
|
||||
<location filename="../Projects/octopi/src/optionsdialog.cpp" line="181"/>
|
||||
<source>Package List</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Zoznam balíkov</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/ui/optionsdialog.ui" line="107"/>
|
||||
@@ -568,7 +568,7 @@ Akékoľvek používanie poskytnutých súborov je na vlastné riziko.</translat
|
||||
<message>
|
||||
<location filename="../Projects/octopi/ui/optionsdialog.ui" line="483"/>
|
||||
<source>Build directory</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Adresár zostavení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/ui/optionsdialog.ui" line="518"/>
|
||||
@@ -818,12 +818,12 @@ Musíte synchronizovať databázu!</translation>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="256"/>
|
||||
<source>Last Modified</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Naposledy upravené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="260"/>
|
||||
<source>Out-of-date</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Neaktuálne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="264"/>
|
||||
@@ -1342,12 +1342,12 @@ You only need to accept and wait a few seconds.</source>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="737"/>
|
||||
<source>AUR username is not set.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Používateľské meno repozitára AUR nie je nastavené.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="742"/>
|
||||
<source>AUR password is not set.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Heslo repozitára AUR nie je nastavené.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Projects/octopi/src/strconstants.cpp" line="747"/>
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user