Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4afdbaa220 | ||
|
|
81013bfe71 | ||
|
|
caccc333db |
@@ -4,7 +4,7 @@ _winehelper_completions() {
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--help --version --debug install installed install-dxvk install-vkd3d -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog change-wine"
|
||||
opts="--help --version --debug install installed install-dxvk install-vkd3d -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog change-wine clear-winetricks-cache"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||
|
||||
case "${prev}" in
|
||||
|
||||
@@ -21,6 +21,7 @@ _winehelper() {
|
||||
'backup-prefix[Создать резерную копию префикса]'
|
||||
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||
'change-wine[Изменить версию Wine/Proton для префикса]'
|
||||
'clear-winetricks-cache[Очистить кэш Winetricks]'
|
||||
)
|
||||
|
||||
wine_cmd=(
|
||||
|
||||
@@ -3,37 +3,33 @@
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="declaration"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="Декларация"
|
||||
export PROG_ICON="declarac"
|
||||
export BASE_PFX="defpfx_x86_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48"
|
||||
|
||||
DECL_FILE="${WH_TMP_DIR}/decl.html"
|
||||
curl -o "$DECL_FILE" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "https://www.nalog.gov.ru/rn77/program/5961249/"
|
||||
|
||||
if [[ ! -f "$DECL_FILE" ]] \
|
||||
|| grep -q "Forbidden" "$DECL_FILE"
|
||||
then
|
||||
fatal "The site page is unavailable or the request limit has been exceeded."
|
||||
fi
|
||||
|
||||
VER_YEAR=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF-2)}' | head -n 1)
|
||||
try_get_page "https://www.nalog.gov.ru/rn77/program/5961249/"
|
||||
VER_YEAR=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-2)}' | head -n 1)
|
||||
YEAR="${VER_YEAR//decl/}"
|
||||
VER_MSI_SLASH=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF-1)}' | head -n 1)
|
||||
VER_MSI=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF)}' | head -n 1)
|
||||
|
||||
VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1)
|
||||
VER_MSI=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF)}' | head -n 1)
|
||||
AUTOINSTALL_MSI="${WH_TMP_DIR}/${VER_MSI}"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/${VER_YEAR}/${VER_MSI_SLASH}/$VER_MSI" "${AUTOINSTALL_MSI}" ; then
|
||||
wine_run_install "${AUTOINSTALL_MSI}" "/q"
|
||||
if try_download "https://data.nalog.ru/files/${VER_YEAR}/${VER_MSI_SLASH}/${VER_MSI}" "${AUTOINSTALL_MSI}" ; then
|
||||
wine_run_install "${AUTOINSTALL_MSI}" /q
|
||||
try_remove_file "${AUTOINSTALL_MSI}"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/АО ГНИВЦ/Декларация ${YEAR}/Decl${YEAR}.exe"
|
||||
create_desktop "$PROG_NAME $YEAR" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
remove_desktop "Декларация $((YEAR - 1))"
|
||||
fi
|
||||
|
||||
# Удаляем ярлык предыдущей версии
|
||||
remove_desktop "Декларация $((YEAR - 1))"
|
||||
|
||||
print_info "Программа Декларация $YEAR успешно установлена"
|
||||
else
|
||||
fatal "Не удалось скачать установочный файл"
|
||||
fi
|
||||
|
||||
@@ -6,32 +6,24 @@ export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="Налогоплательщик ЮЛ"
|
||||
export PROG_ICON="npul"
|
||||
export BASE_PFX="defpfx_x86_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48"
|
||||
|
||||
NPUL_FILE="${WH_TMP_DIR}/npul.html"
|
||||
curl -o "$NPUL_FILE" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "https://www.nalog.gov.ru/rn77/program/5961229/"
|
||||
|
||||
if [[ ! -f "$NPUL_FILE" ]] \
|
||||
|| grep -q "Forbidden" "$NPUL_FILE"
|
||||
then
|
||||
fatal "Страница сайта не доступна, или превышено количество запросов к странице."
|
||||
fi
|
||||
|
||||
VER_MSI=$(grep -oP 'NalogUL\K[0-9.]+(?=\.msi)' "$NPUL_FILE" | tail -n 1)
|
||||
VER_MSI_SLASH=$(grep -oP '[0-9]+\.[0-9]+/NalogUL[0-9]+\.msi' "$NPUL_FILE" | tail -n 1)
|
||||
VER_EXE=$(grep -oP 'NalogUL\K[0-9.]+(?=\.exe)' "$NPUL_FILE" | tail -n 1)
|
||||
VER_EXE_SLASH=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+/NalogUL[0-9]+\.exe' "$NPUL_FILE" | tail -n 1)
|
||||
try_get_page "https://data.nalog.ru/rn77/program/5961229/"
|
||||
VER_MSI=$(read_page | grep -oP 'NalogUL\d+\.msi' | tail -1 | grep -oP '\d+')
|
||||
VER_MSI_URL="${VER_MSI:0:1}.${VER_MSI:1}" # 492 → 4.92
|
||||
VER_EXE=$(read_page | grep -oP 'NalogUL\d+\.exe' | tail -1 | grep -oP '\d+')
|
||||
VER_EXE_URL="${VER_EXE:0:1}.${VER_EXE:1:2}.${VER_EXE:3}" # 4924 → 4.92.4
|
||||
|
||||
AUTOINSTALL_MSI="${WH_TMP_DIR}/NalogUL${VER_MSI}.msi"
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/NalogUL${VER_EXE}.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_SLASH}" "${AUTOINSTALL_MSI}" ; then
|
||||
if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_URL}/NalogUL${VER_MSI}.msi" "${AUTOINSTALL_MSI}" ; then
|
||||
wine_run_install "${AUTOINSTALL_MSI}" /quiet INSTALLDIR="c:\npul"
|
||||
try_remove_file "${AUTOINSTALL_MSI}"
|
||||
try_remove_file "${AUTOINSTALL_MSI}"
|
||||
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "*.msi")"
|
||||
wine_run_install "${PRINT_INSTALLER}" "/q"
|
||||
@@ -42,7 +34,7 @@ if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_SLASH}" "${AUTOINST
|
||||
fi
|
||||
|
||||
if [[ -n "$VER_EXE" ]] \
|
||||
&& try_download "https://data.nalog.ru/files/nalul/${VER_EXE_SLASH}" "${AUTOINSTALL_EXE}"
|
||||
&& try_download "https://data.nalog.ru/files/nalul/${VER_EXE_URL}/NalogUL${VER_EXE}.exe" "${AUTOINSTALL_EXE}"
|
||||
then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" "/SILENT"
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
@@ -53,4 +45,3 @@ fi
|
||||
touch "$DRIVE_C/npul/INPUTDOC/linux.txt"
|
||||
WIN_FILE_EXEC="$DRIVE_C/npul/INPUTDOC/inputdoc.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
try_remove_file "$NPUL_FILE"
|
||||
|
||||
@@ -2,24 +2,26 @@
|
||||
# info_ru: Подготовка документов для государственной регистрации (ППДГР)
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/SetupPPDGR2.msi"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="ppdgr2"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="ППДГР-2"
|
||||
# export PROG_VERSION=""
|
||||
export PROG_ICON="ppdgr"
|
||||
# export ADD_MIME_TYPE=""
|
||||
export BASE_PFX="defpfx_dn48_x86_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="dotnet48 msxml3 msxml4 msxml6 corefonts lucida wsh57 vcrun6 jet40 gdiplus"
|
||||
export WH_WINDOWS_VER="10"
|
||||
var_winedlloverride_update "msxml4=b,wininet=b"
|
||||
export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48"
|
||||
|
||||
try_get_page "https://www.nalog.gov.ru/rn77/program/5961277/"
|
||||
VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1)
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/SetupPPDGR2.msi"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/ppdgr/2.7.0/SetupPPDGR2.msi" "${AUTOINSTALL_EXE}" ; then
|
||||
if try_download "https://data.nalog.ru/files/ppdgr/${VER_MSI_SLASH}/SetupPPDGR2.msi" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" /q
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/АО ГНИВЦ/ППДГР-2/PPDGR2.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
fi
|
||||
https://data.nalog.ru/files/ppdgr/2.7.3/SetupPPDGR2.msi
|
||||
|
||||
@@ -2,20 +2,21 @@
|
||||
# info_ru: Справочник кодов обозначения налоговых органов для целей учета налогоплательщиков
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/soun_ins.exe"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="soun"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="СОУН"
|
||||
# export PROG_VERSION=""
|
||||
export PROG_ICON="soun"
|
||||
# export ADD_MIME_TYPE=""
|
||||
export BASE_PFX="defpfx_x86_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="corefonts"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48"
|
||||
|
||||
try_get_page "https://www.nalog.gov.ru/rn77/program/5961268/"
|
||||
VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1)
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/soun_ins.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/Soun/2.6.2/soun_ins.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
if try_download "https://data.nalog.ru/files/Soun/${VER_MSI_SLASH}/soun_ins.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
# TODO: Тихий режим или предупреждение
|
||||
wine_run_install "${AUTOINSTALL_EXE}"
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
|
||||
@@ -2,22 +2,23 @@
|
||||
# info_ru: Программа проверки файлов на соответствие форматам представления в электронном виде налоговых деклараций, бухгалтерской отчетности.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
|
||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/tester2269.exe"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="Тестер"
|
||||
# export PROG_VERSION=""
|
||||
export PROG_ICON="tester"
|
||||
# export ADD_MIME_TYPE=""
|
||||
export BASE_PFX="defpfx_x86_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48"
|
||||
|
||||
try_get_page "https://www.nalog.gov.ru/rn77/program/5961279/"
|
||||
VER_EXE_SLASH=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF-1)}' | tail -n 1)
|
||||
VER_EXE=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF)}' | tail -n 1)
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/${VER_EXE}"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/tester/2.269/tester2269.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}"
|
||||
if try_download "https://data.nalog.ru/files/tester/${VER_EXE_SLASH}/${VER_EXE}" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Tester/tester.exe"
|
||||
|
||||
26
winehelper
26
winehelper
@@ -2293,6 +2293,30 @@ run_change_wine_version() {
|
||||
print_ok "Версия Wine для префикса $PREFIX_NAME успешно изменена на $WH_WINE_USE."
|
||||
}
|
||||
|
||||
clear_winetricks_cache() {
|
||||
local winetricks_cache_dir="$HOME/.cache/winetricks"
|
||||
local winehelper_wt_cache_dir="$HOME/.cache/winehelper/winetricks"
|
||||
|
||||
if [[ ! -d "$winetricks_cache_dir" ]] && [[ ! -d "$winehelper_wt_cache_dir" ]]; then
|
||||
print_info "Кэш Winetricks не найден. Очистка не требуется."
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ ! $1 =~ --force|-y ]] ; then
|
||||
print_warning "Вы собираетесь очистить кэш Winetricks."
|
||||
echo "Будут удалены все скачанные установщики Winetricks и списки компонентов."
|
||||
if ! print_confirmation "Продолжить?"
|
||||
then
|
||||
print_info "Операция отменена."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
print_info "Очистка кэша Winetricks..."
|
||||
try_remove_dir "$winetricks_cache_dir"
|
||||
try_remove_dir "$winehelper_wt_cache_dir"
|
||||
print_ok "Кэш Winetricks успешно очищен."
|
||||
}
|
||||
|
||||
wh_info () {
|
||||
echo "Использование: $SCRIPT_NAME [команда]
|
||||
|
||||
@@ -2312,6 +2336,7 @@ wh_info () {
|
||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||
clear-winetricks-cache очистить кэш Winetricks
|
||||
|
||||
Параметры:
|
||||
--help показать эту справку и выйти
|
||||
@@ -2370,6 +2395,7 @@ case "$arg1" in
|
||||
remove-prefix) remove_prefix "$@" ;;
|
||||
create-base-pfx) create_base_pfx "$@" ;;
|
||||
init-prefix) prepair_wine ; wait_wineserver ;;
|
||||
clear-winetricks-cache) clear_winetricks_cache "$@" ;;
|
||||
*)
|
||||
if [[ -f "$arg1" ]] ; then
|
||||
WIN_FILE_EXEC="$(readlink -f "$arg1")"
|
||||
|
||||
@@ -446,6 +446,7 @@ class WinetricksManagerDialog(QDialog):
|
||||
self.previous_tab_widget = None
|
||||
self.cache_dir = os.path.join(os.path.expanduser("~"), ".cache", "winehelper", "winetricks")
|
||||
os.makedirs(self.cache_dir, exist_ok=True)
|
||||
self.is_reloading_after_cache_clear = False
|
||||
|
||||
self.setWindowTitle(f"Менеджер компонентов для префикса: {os.path.basename(prefix_path)}")
|
||||
self.setMinimumSize(800, 500)
|
||||
@@ -478,8 +479,14 @@ class WinetricksManagerDialog(QDialog):
|
||||
self.log_output.setText(self.INFO_TEXT)
|
||||
main_layout.addWidget(self.log_output)
|
||||
|
||||
# Кнопки управления, выровненные по правому краю
|
||||
# Кнопки управления
|
||||
button_layout = QHBoxLayout()
|
||||
|
||||
self.clear_cache_button = QPushButton("Очистить кеш")
|
||||
self.clear_cache_button.setStyleSheet("background-color: red; color: white;")
|
||||
self.clear_cache_button.clicked.connect(self.clear_winetricks_cache)
|
||||
button_layout.addWidget(self.clear_cache_button)
|
||||
|
||||
button_layout.addStretch(1)
|
||||
|
||||
self.apply_button = QPushButton("Применить")
|
||||
@@ -736,9 +743,18 @@ class WinetricksManagerDialog(QDialog):
|
||||
self._log(output)
|
||||
self._log("--------------------------------------------------")
|
||||
|
||||
# Проверяем, были ли ошибки во время загрузки какой-либо из категорий
|
||||
has_errors = any(status == 'error' for status in self.category_statuses.values())
|
||||
|
||||
self.loading_count -= 1
|
||||
if self.loading_count == 0:
|
||||
self._update_ui_state()
|
||||
if self.is_reloading_after_cache_clear:
|
||||
if has_errors:
|
||||
self._log("\n=== Ошибка при обновлении списков. Проверьте лог выше. ===", "red")
|
||||
else:
|
||||
self._log("\n=== Списки успешно обновлены ===")
|
||||
self.is_reloading_after_cache_clear = False # Сбрасываем флаг
|
||||
|
||||
def _on_item_changed(self, item):
|
||||
"""Обрабатывает изменение состояния чекбокса, предотвращая снятие галочки с установленных."""
|
||||
@@ -895,6 +911,64 @@ class WinetricksManagerDialog(QDialog):
|
||||
self.installation_complete.emit()
|
||||
self.installation_finished = True
|
||||
|
||||
def clear_winetricks_cache(self):
|
||||
"""Запускает очистку кэша Winetricks."""
|
||||
reply = self._show_message_box(
|
||||
"Очистка кэша Winetricks",
|
||||
"Вы собираетесь удалить все скачанные установщики и списки компонентов Winetricks.\n\n"
|
||||
"Это действие может потребоваться, если у вас возникают проблемы со скачиванием или установкой компонентов.\n\n"
|
||||
"Продолжить?",
|
||||
QMessageBox.Question,
|
||||
{"buttons": {"Да": QMessageBox.YesRole, "Нет": QMessageBox.NoRole}, "default": "Нет"}
|
||||
)
|
||||
|
||||
if reply != "Да":
|
||||
return
|
||||
|
||||
# Блокируем UI на время выполнения
|
||||
self.tabs.setEnabled(False)
|
||||
self.clear_cache_button.setEnabled(False)
|
||||
self.apply_button.setEnabled(False)
|
||||
self.reinstall_button.setEnabled(False)
|
||||
self.close_button.setEnabled(False)
|
||||
|
||||
self.log_output.clear()
|
||||
|
||||
self.cache_clear_process = QProcess(self)
|
||||
self.cache_clear_process.setProcessChannelMode(QProcess.MergedChannels)
|
||||
|
||||
def handle_output():
|
||||
output = self.cache_clear_process.readAll().data().decode('utf-8', 'ignore').strip()
|
||||
if output:
|
||||
self._log(output)
|
||||
|
||||
def handle_finish(exit_code, exit_status):
|
||||
if exit_code == 0:
|
||||
self.is_reloading_after_cache_clear = True # Устанавливаем флаг перед перезагрузкой
|
||||
self.category_statuses.clear() # Очищаем статусы перед новой загрузкой
|
||||
# Воссоздаем директорию кэша, так как скрипт ее полностью удалил
|
||||
os.makedirs(self.cache_dir, exist_ok=True)
|
||||
self._log("Обновление списков...")
|
||||
self.initial_states.clear()
|
||||
self.load_all_categories()
|
||||
else:
|
||||
self._log(f"\n=== Ошибка (код: {exit_code}) ===", "red")
|
||||
|
||||
# Восстанавливаем UI
|
||||
self.tabs.setEnabled(True)
|
||||
self.clear_cache_button.setEnabled(True)
|
||||
self.close_button.setEnabled(True)
|
||||
self._update_ui_state() # Обновляем состояние кнопок Применить/Переустановить
|
||||
|
||||
self.cache_clear_process.readyRead.connect(handle_output)
|
||||
self.cache_clear_process.finished.connect(handle_finish)
|
||||
|
||||
winehelper_path = self.parent().winehelper_path if hasattr(self.parent(), 'winehelper_path') else Var.RUN_SCRIPT
|
||||
args = ["clear-winetricks-cache", "--force"]
|
||||
|
||||
self._log(f"Выполнение: {shlex.quote(winehelper_path)} {' '.join(args)}\n")
|
||||
self.cache_clear_process.start(winehelper_path, args)
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""Обрабатывает закрытие окна, чтобы предотвратить выход во время установки."""
|
||||
# Проверяем, запущен ли процесс установки/переустановки
|
||||
@@ -938,6 +1012,8 @@ class WinetricksManagerDialog(QDialog):
|
||||
"""Добавляет сообщение в лог с возможностью указания цвета."""
|
||||
if color:
|
||||
self.log_output.append(f'<span style="color:{color};">{message}</span>')
|
||||
# Сбрасываем формат, чтобы следующий текст не наследовал цвет
|
||||
self.log_output.setCurrentCharFormat(QTextCharFormat())
|
||||
else:
|
||||
self.log_output.append(message)
|
||||
self.log_output.moveCursor(QTextCursor.End)
|
||||
@@ -2291,6 +2367,11 @@ class WineHelperGUI(QMainWindow):
|
||||
|
||||
# Если нужно скрыть тестовые версии и они были добавлены
|
||||
elif not is_checked and test_buttons:
|
||||
# Если текущая активная кнопка находится среди удаляемых, сбрасываем ее
|
||||
if self.current_active_button in test_buttons:
|
||||
self._reset_info_panel_to_default("Автоматическая установка")
|
||||
self.current_active_button = None
|
||||
|
||||
# Останавливаем анимацию и удаляем виджеты тестовых кнопок
|
||||
for btn in test_buttons:
|
||||
if btn in self.icon_animators:
|
||||
|
||||
Reference in New Issue
Block a user