112 Commits

Author SHA1 Message Date
Alexandre Arnt
1e3b31cc1c release prep 2024-06-09 18:07:17 -03:00
Alexandre Arnt
483064a956 - BugFix: Could not remove packages when internet connection was down
(thanks to Theluga).
2024-06-08 19:46:36 -03:00
Alexandre Arnt
8a3731b072 - Updated translations 2024-06-08 10:08:41 -03:00
Alexandre Arnt
ebf4ad9df9 - Updated translations 2024-06-06 21:47:18 -03:00
Alexandre Arnt
8aa2abe5ff - Unused?? 2024-06-06 19:53:51 -03:00
Alexandre Arnt
ddd97fd5ba fix optionsdialog ui 2024-06-06 19:46:55 -03:00
Alexandre Arnt
fe5df3e8a2 - version 0.16.1 prep 2024-06-06 17:36:04 -03:00
Alexandre Arnt
5bb8de6b6e - fix str 2024-06-06 16:29:12 -03:00
Alexandre Arnt
3408bebc0c - fix str 2024-06-06 16:27:09 -03:00
Alexandre Arnt
56641548d9 - str fix. 2024-06-06 16:12:55 -03:00
Alexandre Arnt
973fb2a473 - fix 2024-06-06 15:48:51 -03:00
Alexandre Arnt
fe4c704892 - fix 2024-06-06 15:46:09 -03:00
Alexandre Arnt
cb7b571dcc - fix 2024-06-06 15:45:17 -03:00
Alexandre Arnt
4afdd15784 - fix 2024-06-06 15:38:38 -03:00
Alexandre Arnt
53ea9fc062 - Version bump 2024-06-06 14:13:14 -03:00
Alexandre Arnt
e3d37d6f3d - BugFix: Do not install notifier's desktop file in /etc/xdg/autostart. 2024-06-06 13:55:34 -03:00
Alexandre Arnt
db9d26f858 - a small test. 2024-06-06 13:27:55 -03:00
Alexandre Arnt
e9c98087bc - BugFix: Info/Files tabs were always empty if they were selected at
octopi's start.
2024-06-06 10:18:15 -03:00
Alexandre Arnt
dff5d0ea9f - Arrow key navegation refreshes Info and Files tabs again. 2024-06-05 20:11:03 -03:00
Alexandre Arnt
6e7e3c6f4c - Added shortcut key "Ctrl+Shift+U" to upgrade outdated AUR packages. 2024-06-05 19:32:30 -03:00
Alexandre Arnt
bc44fa3d78 - Small fix in Files Tab code. 2024-06-05 13:30:43 -03:00
Alexandre Arnt
5cb760d1dc updated arabic tx 2024-05-27 20:04:17 -03:00
Alexandre Arnt
1ff9761e13 updated arabic tx 2024-05-27 20:04:00 -03:00
Alexandre Arnt
5d08cb59d6 Updated polish tx 2024-05-26 09:48:53 -03:00
Alexandre Arnt
33bdea2850 Merge branch 'master' of https://github.com/aarnt/octopi 2024-05-25 20:25:39 -03:00
Alexandre Arnt
9887f40a08 - BugFix: Updated some LANG environment variables to C.UTF-8. 2024-05-25 20:22:52 -03:00
Alexandre Arnt
8751898bd0 Merge pull request #557 from SGOrava/notifier-kf6
Fix building octopi-notifier with KF6
2024-05-25 19:35:55 -03:00
5af7cd8abc Fix building octopi-notifier with KF6
Use `KF6StatusNotifierItem` instead of `KF6Notifications`.

Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
2024-05-21 21:22:08 +02:00
Alexandre Arnt
1dbebc4ccc Bugfix in PKGBUILD 2024-05-19 12:34:04 -03:00
Alexandre Arnt
cf0122f936 -Updated translations. 2024-05-19 12:17:46 -03:00
Alexandre Arnt
05a1d28850 - 0.16.0 prep 2024-05-19 11:55:25 -03:00
Alexandre Arnt
99bc556cf3 - 0.16.0 prep 2024-05-19 11:04:23 -03:00
Alexandre Arnt
8c508c91c8 msg fix 2024-05-18 19:54:32 -03:00
Alexandre Arnt
e0708b73b6 - Default to Qt6 libs 2024-05-18 19:32:49 -03:00
Alexandre Arnt
aad8ac342e Preparing for 0.16.0 2024-05-18 19:11:09 -03:00
Alexandre Arnt
435f0281e5 - Bugfix in KSTATUS/pro 2024-05-18 17:50:35 -03:00
Alexandre Arnt
a081ac2bfd - Default to Qt6 lib build 2024-05-18 14:51:58 -03:00
Alexandre Arnt
d0fbc89b9e - Fix for QTERMWIDGET6 compat 2024-05-18 14:20:38 -03:00
Alexandre Arnt
eebfa41342 - Fix for QTERMWIDGET6 compat 2024-05-18 14:13:27 -03:00
Alexandre Arnt
a974769a4c - Updated qt-sudo strings. 2024-05-11 10:42:34 -03:00
Alexandre Arnt
69e85dddd2 Updated PKGBUILD file. 2024-03-11 09:17:30 -03:00
Alexandre Arnt
4f6101f1af - Removed buggy str. 2024-03-10 22:30:25 -03:00
Alexandre Arnt
644c5a3d78 - Fixed a typo. 2024-03-10 22:22:38 -03:00
Alexandre Arnt
cd32995a81 - Now using unified qt-sudo project. 2024-03-10 22:03:37 -03:00
Alexandre Arnt
64e72f06c9 - BugFix in notifier. 2024-03-04 19:44:39 -03:00
Alexandre Arnt
9037688da5 Fixed silent error when pacman's database is locked (thanks to SloppyPuppy). 2024-01-22 08:53:43 -03:00
Alexandre Arnt
8f9647e58f Merge pull request #546 from SloppyPuppy/master
fixed silent fail when pacman running
2024-01-22 08:50:08 -03:00
Момчило Ињац
039824122b fixed silent fail when pacman running 2024-01-21 11:50:07 +01:00
Alexandre Arnt
59c785f364 - BUGFIX: Yay AUR search was not working anymore. 2024-01-20 10:22:34 -03:00
Alexandre Arnt
f79da34b3e - BugFix: '--noeditmenu' is deprecated. Use '--editmenu=false' instead
(thanks to rbaruccojr).
2023-12-29 19:47:38 -03:00
Alexandre Arnt
b2e6dfc8a2 - Added files 2023-12-29 19:43:09 -03:00
Alexandre Arnt
3397776586 - Updated CHANGELOG. 2023-12-29 19:31:14 -03:00
Alexandre Arnt
d308c470eb - Another dev cycle begins... 2023-12-29 19:29:35 -03:00
Alexandre Arnt
a07a3a9b38 Merge pull request #540 from MatMoul/patch-1
Update PKGBUILD
2023-11-10 07:32:13 -03:00
MatMoul
71759c8f7e Update PKGBUILD
Update sed for knotifier.

The curent sed cmd don't match the regular expression!
2023-10-23 23:24:19 +02:00
Alexandre Arnt
b4301d72cc - Release preparation. 2023-09-10 22:35:35 -03:00
Alexandre Arnt
27f5df6aef - Updated translations. 2023-09-10 20:54:35 -03:00
Alexandre Arnt
0cddcd876d - Always recreate helper log file. 2023-09-09 20:25:17 -03:00
Alexandre Arnt
8a9465738d Removed unused pkg 2023-09-09 19:35:03 -03:00
Alexandre Arnt
1416d16f49 - Using "pacman -Fl" to view contents of non installed packages (thanks
to Zesko).
2023-09-09 19:32:36 -03:00
Alexandre Arnt
d99839e7e9 - Small bugfix. 2023-09-09 16:51:25 -03:00
Alexandre Arnt
2521696214 - Bunch of bugfixes. 2023-09-09 15:53:20 -03:00
Alexandre Arnt
24a1423de0 - Parser fixes. 2023-09-08 23:30:07 -03:00
Alexandre Arnt
6d97331ff2 - Garuda Linux string parsing. 2023-09-08 23:19:01 -03:00
Alexandre Arnt
f60d7d971e - Small bugFixes. 2023-08-27 14:07:48 -03:00
Alexandre Arnt
d8a1722d2a - Fix in octopi helper code. 2023-08-26 11:09:04 -03:00
Alexandre Arnt
9085b6ca56 - BugFix: Change install reason did not work with pacman backend. 2023-08-26 11:00:59 -03:00
Alexandre Arnt
bebc5d1276 - Removed unused code. 2023-08-26 09:44:11 -03:00
Alexandre Arnt
bbccd59fed - Fix in helper code. 2023-08-26 09:36:16 -03:00
Alexandre Arnt
1335406977 - Enable again the helper logfile. 2023-08-25 17:59:07 -03:00
Alexandre Arnt
e7f783cc52 - Remove unused code. 2023-08-24 18:07:56 -03:00
Alexandre Arnt
a4d718b8b7 Added support for Qt5/Qt6 libs 2023-08-15 20:24:34 -03:00
Alexandre Arnt
1fa610f194 - Added support for both Qt5 and Qt6 libs. 2023-08-13 16:25:59 -03:00
Alexandre Arnt
f59315cd60 Support both Qt5 and Qt6 libs 2023-08-13 11:05:23 -03:00
Alexandre Arnt
712a43f39e - Made the code a bit more Qt6 friendly. 2023-08-01 17:37:09 -03:00
Alexandre Arnt
7e3c26adbf - Made the code a bit more Qt6 friendly. 2023-08-01 16:32:31 -03:00
Alexandre Arnt
030efb79b5 - Made the code a little bit more Qt6 friendly. 2023-08-01 16:10:42 -03:00
Alexandre Arnt
43b7e86f84 - Fixed sizes. 2023-07-24 22:39:15 -03:00
Alexandre Arnt
f403fd7f9a - Added a Terminal tab to options dialog to config its colors and fonts. 2023-07-24 22:35:40 -03:00
Alexandre Arnt
dfb0062aa0 - BugFix in octopi/notifier Updates tab code. 2023-07-24 09:28:02 -03:00
Alexandre Arnt
455ae4853f - BugFix: When using the pacman backend, call "pacman -Qm" to fetch ALL
foreign packages.
2023-07-23 09:36:28 -03:00
Alexandre Arnt
8d7e4eac39 - Stop calling Octopi's option dialog when Octopi was running. 2023-07-23 09:21:14 -03:00
Alexandre Arnt
71dcb5fdcb Updated files 2023-07-04 11:05:52 -03:00
Alexandre Arnt
7fdabbe9ef - BugFix: AUR passwords that contain a "+" char failed to login at
aur.archlinux.org.
2023-07-03 16:46:41 -03:00
Alexandre Arnt
630f4efd17 Fix in helper code. 2023-06-20 17:11:20 -03:00
Alexandre Arnt
4b12c8b06f - Better error logic in helper code. 2023-06-17 10:07:58 -03:00
Alexandre Arnt
c5f1e9694d - PressAnyKeyToContinue equals PAKtC now. 2023-06-17 10:00:01 -03:00
Alexandre Arnt
cbd43ab731 - Octopi-sudo code was synced to match project "lxqt-sudo" version
1.3.0.
2023-06-08 11:26:39 -03:00
Alexandre Arnt
1166691c37 - BugFix: Polished navigation on Info tab dependencies 2023-06-08 11:14:37 -03:00
Alexandre Arnt
e98fec0fb9 - Trying to fix Helper's aborted transactions caused by broken string
errors.
2023-06-08 09:30:39 -03:00
Alexandre Arnt
d0a30a9eca - BugFix: First yay-bin download now works again. 2023-05-22 14:26:27 -03:00
Alexandre Arnt
a92868cbb3 Merge pull request #522 from ShalokShalom/patch-1
fix typo
2022-12-20 07:22:43 -03:00
ShalokShalom
db36d56be9 fix typo 2022-12-20 03:58:28 +01:00
Alexandre Arnt
2db10e3b4b - Octopi-sudo code was synced to match project "lxqt-sudo" version
1.2.0.
2022-11-05 11:11:39 -03:00
Alexandre Arnt
3e3acfde39 - BugFix: Better handle dependencies while staging packages for
deletion.
2022-11-02 21:53:09 -03:00
Alexandre Arnt
a994beb935 - BugFix: invalidate Info/File tabs when user is navigating packages
using the keyboard.
2022-10-29 09:41:04 -03:00
Alexandre Arnt
144a8ca86e - Another dev cycle (0.15) begins... 2022-10-23 09:52:43 -03:00
Alexandre Arnt
462bfec623 - Updated CMakeLists.txt file. 2022-10-05 22:37:48 -03:00
Alexandre Arnt
0a47127c71 - Release preparation... 2022-10-05 22:19:02 -03:00
Alexandre Arnt
ba9a934c7c - BugFix: Package search did not work correctly when query string
contained a "+" sign.
2022-10-04 22:35:06 -03:00
Alexandre Arnt
d726e53976 - BugFix: AUR search did not work correctly when query string contained
a "+" sign.
2022-10-03 22:15:26 -03:00
Alexandre Arnt
06c42e047e Updated translations 2022-09-24 16:21:07 -03:00
Alexandre Arnt
5abd25ff76 Update README.md
Updated README file. RIP Chakra :-(
2022-09-15 11:18:54 -03:00
Alexandre Arnt
15f33ee87c Update CHANGELOG
Updated CHANGELOG
2022-09-15 11:07:40 -03:00
Alexandre Arnt
8b4db5bbd3 - Removed unneeded code. 2022-07-25 16:30:58 -03:00
Alexandre Arnt
a4687d1a95 - Added --overwrite="*" checkbox in AUR tab (Tools/Options) when using
yay.
2022-07-25 16:24:24 -03:00
Alexandre Arnt
1a44290006 Updated translations 2022-07-25 09:44:27 -03:00
Alexandre Arnt
d16f189c72 BugFix: Info/Files tab refresh was duplicated (another try). 2022-06-26 11:21:43 -03:00
Alexandre Arnt
3ce25e63c5 - BugFix: Info/Files tab refresh was duplicated;
- BugFix: Disable (another try) Info/Files tab refresh while typing in
Filter/Search line edit;
- Updated translations.
2022-06-25 11:11:55 -03:00
Alexandre Arnt
029ecfbedf - Synced octopi-sudo code with lxqt-sudo version 1.1.0. 2022-05-01 11:02:59 -03:00
Alexandre Arnt
1b8d9aca43 Again and again... 2022-04-16 09:05:12 -03:00
Alexandre Arnt
00b40f1a87 Play it again, Sam 2022-04-16 09:01:09 -03:00
205 changed files with 15986 additions and 20238 deletions

1
.gitignore vendored
View File

@@ -23,3 +23,4 @@ sudo/moc*.*
sudo/octopi-sudo
sudo/qrc*.cpp
sudo/ui_pass*.h
sudo/.qtc_clangd

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -72,7 +72,7 @@
<message>
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
<source>You can not run Repository Editor with administrator&apos;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"/>

View File

@@ -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&apos;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&apos;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&apos;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&apos;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>

View File

@@ -72,7 +72,7 @@
<message>
<location filename="Projects/octopi/repoeditor/main.cpp" line="54"/>
<source>You can not run Repository Editor with administrator&apos;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"/>

View 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&apos;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&apos;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&apos;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&apos;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

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

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

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.

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

File diff suppressed because it is too large Load Diff

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.

View File

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

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