Compare commits

...

14 Commits

Author SHA1 Message Date
Mikhail Tergoev
dd2901c85e updated changelog to 0.6.0 2025-10-01 16:36:52 +03:00
Mikhail Tergoev
9f28363ac2 updated tflex_pfx_x64_v03 2025-10-01 15:54:09 +03:00
Mikhail Tergoev
756c9e6d9e fixed PROG_NAME for t-flex-*-manual 2025-10-01 15:32:54 +03:00
Mikhail Tergoev
663cd10a5f Merge branch 'minergenon-readme' 2025-10-01 15:29:51 +03:00
Mikhail Tergoev
86beb9eaee fixed WH_ICON_PATH 2025-10-01 15:29:06 +03:00
Mikhail Tergoev
4610f6a6da updated scripts and prefix for t-flex 2025-10-01 15:25:55 +03:00
Mikhail Tergoev
4563d5641f disabled print_license_agreement to enumerate scripts 2025-10-01 13:57:49 +03:00
Mikhail Tergoev
d5f337e6b4 Merge branch 'minergenon-devel' 2025-09-29 23:54:59 +03:00
Sergey Palcheh
904c9c9895 revision of the sub-tab Authors 2025-09-29 21:24:37 +06:00
Sergey Palcheh
1d4ee1fd70 the prefix control display is enabled by default 2025-09-29 20:40:07 +06:00
Sergey Palcheh
02a2256c8c fixed the character input in the name of the prefix being created 2025-09-29 20:27:33 +06:00
Mikhail Tergoev
cbcdba204e TODO: system menu directory 2025-09-29 16:05:26 +03:00
Mikhail Tergoev
66c56f6ecf removed broken README.MD 2025-09-29 15:52:21 +03:00
Mikhail Tergoev
221b59eda7 added README.MD 2025-09-29 15:50:46 +03:00
14 changed files with 135 additions and 78 deletions

View File

@@ -1,5 +1,22 @@
История изменений:
0.6.0
* обновлен графический режим Qt5
* добавлен иконка в трее для графического режима Qt5
* обновлены скрипты установки для t-flex-*
* обновлен скрипт установки для scadoffice
* добавлена ручная установка NetTest (демо версия)
* добавлены скрипты установки ARM-KT:
winehelper install arm-kt-att - "АРМ КТ ПРОФ АТТЕСТАТ"
winehelper install arm-kt-dpp - "АРМ КТ ПРОФ ДПП"
winehelper install arm-kt-es - "АРМ КТ ПРОФ НШ"
winehelper install arm-kt-med - "АРМ КТ ПРОФ МЕД"
winehelper install arm-kt-prof - "АРМ КТ ПРОФ ПРОФЕССИЯ"
winehelper install arm-kt-spo - "АРМ КТ ПРОФ СПО"
winehelper install arm-kt-vuz - "АРМ КТ ПРОФ ВУЗ"
* winehelper killal - убивает только процессы запущенные в WinwHelper
* другие небольшие улучшения и оптимизации скриптов
0.5.4:
* обновлен графический режим Qt5:
- добавлена возможность установки системных зависимостей

View File

@@ -5,7 +5,7 @@ export PROG_URL="https://www.tflexcad.ru"
export PROG_NAME="T-FLEX CAD Учебная Версия 17"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
# Программа T-FLEX CAD Учебная Версия
export AUTOINSTALL_ZIP="${WH_TMP_DIR}/TFCAD_ST_17x64_PACK.zip"

View File

@@ -5,7 +5,7 @@ export PROG_URL="https://www.tflexcad.ru"
export PROG_NAME="T-FLEX CAD 17"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
# Программа T-FLEX CAD
export AUTOINSTALL_ZIP="${WH_TMP_DIR}/T-FLEX CAD 17.zip"

View File

@@ -6,7 +6,7 @@ export PROG_NAME="Приложения для T-FLEX CAD 17"
export PROG_ICON="tflexcad"
export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"

View File

@@ -6,7 +6,7 @@ export PROG_NAME="Ресурсы для T-FLEX CAD 17"
export PROG_ICON="tflexcad"
export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"

View File

@@ -5,7 +5,7 @@ export PROG_URL="https://www.tflexcad.ru"
export PROG_NAME="T-FLEX CAD 2D+ 17"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
# Программа T-FLEX CAD 2D+ 17
export AUTOINSTALL_ZIP="${WH_TMP_DIR}/T-FLEX CAD 2D+ 17.zip"

View File

@@ -5,7 +5,7 @@ export PROG_URL="https://www.tflexcad.ru"
export PROG_NAME="T-FLEX DOCs 17"
export PROG_ICON="tflexdoc"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
# Программа T-FLEX DOC
AUTOINSTALL_ZIP="${WH_TMP_DIR}/T-FLEX DOCs 17 Client.zip"

View File

@@ -5,7 +5,7 @@ export PROG_URL="https://www.tflexcad.ru"
export PROG_NAME="T-FLEX Viewer 17"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
# Программа T-FLEX Viewer
export AUTOINSTALL_ZIP="${WH_TMP_DIR}/T-FLEX Viewer 17.zip"

View File

@@ -1,28 +1,24 @@
#!/usr/bin/env bash
# info_ru: Компоненты сервисов поддержки T-FLEX 17
# info_ru: Компоненты сервисов поддержки T-FLEX 17 и 18
########################################################################
export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WINEPREFIX="tflex"
export PROG_VERSION=""
export WH_XDG_OPEN="log"
export INSTALL_DLL="corefonts d3dcompiler_47 dotnet48 vcrun2022 ucrtbase2019 msxml6 fontsmooth=rgb baekmuk droid eufonts ipamona liberation lucida opensymbol sourcehansans tahoma takao uff unifont vlgothic wenquanyi wenquanyizenhei"
export INSTALL_DLL="corefonts d3dcompiler_47 dotnet48 dotnet20 vcrun2019 ucrtbase2019 msxml6 fontsmooth=rgb baekmuk droid eufonts ipamona liberation lucida opensymbol sourcehansans tahoma takao uff unifont vlgothic wenquanyi wenquanyizenhei"
export WH_USE_MESA_GL_OVERRIDE="1"
# Компоненты поддержки T-FLEX PLM (Linux)
GRDCONTROL_VER="4.3.0-0"
AUTOINSTALL_ZIP_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_Linux.zip"
AUTOINSTALL_DIR_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_Linux"
AUTOINSTALL_REG_LIN="$AUTOINSTALL_DIR_LIN/Components/fake_hasp.reg"
# Компоненты поддержки T-FLEX PLM (Windows)
AUTOINSTALL_ZIP_WIN="$WH_TMP_DIR/T-FLEX 17 Prerequisites.zip"
AUTOINSTALL_DIR_WIN="$WH_TMP_DIR/Компоненты поддержки T-FLEX 17"
AUTOINSTALL_EXE_WIN1="$AUTOINSTALL_DIR_WIN/Access Database Engine 2007/AccessDatabaseEngine.exe"
AUTOINSTALL_EXE_WIN_MSI="$AUTOINSTALL_DIR_WIN/Access Database Engine 2007"
AUTOINSTALL_EXE_WIN2="$AUTOINSTALL_DIR_WIN/TSC2/Setup_TSC2.msi"
AUTOINSTALL_EXE_ADE2007="$AUTOINSTALL_DIR_LIN/Components/AccessDatabaseEngine.exe"
AUTOINSTALL_EXE_TSC2="$AUTOINSTALL_DIR_LIN/Components/Setup_TSC2.msi"
AUTOINSTALL_EXE_VC_X86="$AUTOINSTALL_DIR_LIN/Components/vc_redist.x86.exe"
AUTOINSTALL_EXE_VC_X64="$AUTOINSTALL_DIR_LIN/Components/vc_redist.x64.exe"
prepair_wine
@@ -42,11 +38,8 @@ else
|| ! systemctl list-units --type service --state running | grep hasplmd \
|| ! rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
then
# Компоненты поддержки T-FLEX PLM (Linux)
if try_download "https://www.tflex.ru/downloads/Prerequisites_T-FLEX_Linux.zip" "${AUTOINSTALL_ZIP_LIN}" ; then
unpack "$AUTOINSTALL_ZIP_LIN" "$AUTOINSTALL_DIR_LIN"
"$WINELOADER" regedit "$AUTOINSTALL_REG_LIN"
fi
try_download "https://www.tflex.ru/downloads/Prerequisites_T-FLEX_Linux.zip" "${AUTOINSTALL_ZIP_LIN}"
unpack "$AUTOINSTALL_ZIP_LIN" "$AUTOINSTALL_DIR_LIN"
if rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
then print_info "grdcontrol-$GRDCONTROL_VER уже установлен в системе."
@@ -55,14 +48,14 @@ else
if [[ "$BASE_PFX" == "none" ]] ; then
print_info "Запускаем подготовку префикса."
# Компоненты поддержки T-FLEX PLM (Windows)
if try_download "https://www.tflex.ru/downloads/T-FLEX%2017%20Prerequisites.zip" "${AUTOINSTALL_ZIP_WIN}" ; then
unpack "$AUTOINSTALL_ZIP_WIN" "$WH_TMP_DIR"
unpack "$AUTOINSTALL_EXE_WIN1" "$AUTOINSTALL_EXE_WIN_MSI"
wine_run_install "$AUTOINSTALL_EXE_WIN_MSI/AceRedist.msi" /q
wine_run_install "$AUTOINSTALL_EXE_WIN2" /q
fi
unpack "$AUTOINSTALL_EXE_ADE2007" "$AUTOINSTALL_DIR_LIN/ADE2007"
wine_run_install "$AUTOINSTALL_DIR_LIN/ADE2007/AceRedist.msi" /q
wine_run_install "$AUTOINSTALL_EXE_VC_X86" /quiet
wine_run_install "$AUTOINSTALL_EXE_VC_X64" /quiet
wine_run_install "$AUTOINSTALL_EXE_TSC2" /q
rm -fR "$DRIVE_C/Program Files/Common Files/System"
rm -fR "$DRIVE_C/Program Files (x86)/Common Files/System"
@@ -74,9 +67,9 @@ else
mv -f "$AUTOINSTALL_DIR_LIN/Components/Windows/System32/"*.dll \
"$DRIVE_C/windows/system32"
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/fake_hasp.reg"
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/ado-32.reg"
"$WINELOADER"64 regedit "$AUTOINSTALL_DIR_LIN/Components/ado-64.reg"
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/tflex.reg"
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/ado-64.reg"
fi
if systemctl list-units --type service --state running | grep aksusbd \
@@ -98,14 +91,12 @@ else
fi
try_remove_dir "$AUTOINSTALL_DIR_LIN"
try_remove_dir "$AUTOINSTALL_DIR_WIN"
if [[ $TFLEX_ERROR == "1" ]] ; then
fatal "Произошла ошибка во время подготовки префикса, или установки компонентов ПО."
else
echo "t-flex-cad-prepair" >> "$WINEPREFIX/winetricks.log"
try_remove_file "$AUTOINSTALL_ZIP_LIN"
try_remove_file "$AUTOINSTALL_ZIP_WIN"
# try_remove_file "$AUTOINSTALL_ZIP_LIN"
print_info "Подготовка префикса и установка компонентов завершены."
fi
fi

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# info_ru: Ручная установка дополнений для T-FLEX DOCS 17 или 18
########################################################################
export PROG_NAME="T-FLEX CAD 17/18"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"
if [[ -f "$2" ]] ; then
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad.whdb"
wine_run_install "$2"
else
fatal "Не найден файл установки. Перезапустите по примеру:
winehelper install $1 \"/путь/до/файла\""
fi

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash
# info_ru: Ручная установка дополнений для T-FLEX CAD 17
# info_ru: Ручная установка дополнений для T-FLEX CAD 17 или 18
########################################################################
export PROG_NAME="T-FLEX CAD 17"
export PROG_NAME="T-FLEX CAD 17/18"
export PROG_ICON="tflexcad"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export BASE_PFX="tflex_pfx_x64_v03"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex"
@@ -14,7 +14,7 @@ export WH_USE_MESA_GL_OVERRIDE="1"
if [[ -f "$2" ]] ; then
# используем общий whdb файл для подготовки префикса и сервисов
# prepair_wine используется из файла настроек
source "$WH_DB_DIR/t-flex-cad17.whdb"
source "$WH_DB_DIR/t-flex-cad.whdb"
wine_run_install "$2"
else

View File

@@ -171,13 +171,9 @@ d62225f6a23e49355a59a2bd9a495390694bd70d4be6d6527cfb7fb2e2d65f0d defpfx_x64_v01
# create with wine_x_tkg_10-0_amd64 (universal user: xuser and isolate_home by default)
# winetricks msxml3 msxml4 msxml6 andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts wsh57 vcrun6 gdiplus lucida tahoma ucrtbase2019 vcrun2019 dotnet40 dotnet48 dotnet20sp2 d3dcompiler_47
f4cb2f380ad8887f334c6eb3c272b343ae8de327764945266e9e74f8acbac69f tflex17_pfx_x64_v01.tar.xz
# create with wine_x_tkg_10-0_amd64 (universal user: xuser)
# winetricks isolate_home msxml6 ipamona opensymbol wenquanyi ucrtbase2019 uff unifont droid wenquanyizenhei remove_mono internal dotnet40 dotnet48 dotnet20sp2 eufonts takao d3dcompiler_47 fontsmooth=rgb vcrun2022 vlgothic andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts liberation sourcehansans baekmuk tahoma lucida
be09f25bb795c5f912fad2d122c68c8aed937821255f161c2d75a4773d11a044 tflex17_pfx_x64_v02.tar.xz
68ad589a3e6d8a845c2e3bd4c2672cf97982b3fea0ca4b4f2fb6da126d8b3075 tflex_pfx_x64_v03.tar.xz
# create with wine_wh_tflex_10-9_amd64
# winetricks isolate_home msxml6 ipamona opensymbol wenquanyi ucrtbase2019 uff unifont droid wenquanyizenhei remove_mono internal dotnet40 dotnet48 dotnet20 eufonts takao d3dcompiler_47 fontsmooth=rgb vcrun2022 vlgothic andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts liberation sourcehansans baekmuk tahoma lucida
# winetricks isolate_home msxml6 ipamona opensymbol wenquanyi ucrtbase2019 uff unifont droid wenquanyizenhei internal dotnet48 dotnet20 eufonts takao d3dcompiler_47 fontsmooth=rgb vcrun2019 vlgothic andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts liberation sourcehansans baekmuk tahoma lucida t-flex-cad-prepair
7edbd69b40b8ca3fb3594933c6cd37030180c494c08fd13cbd1a5b46565d65e6 ved_ctm_pfx_x86_v03.tar.xz
# create with wine_x_tkg_10-0_amd64 (universal user: xuser)

View File

@@ -16,7 +16,7 @@ if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
USER_WORK_PATH="$HOME/.local/share/$SCRIPT_NAME"
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
DATA_PATH="/usr/share/$SCRIPT_NAME"
WH_ICON_PATH="$DATA_PATH/image/gui/winehelper.svg"
WH_ICON_PATH="/usr/share/icons/hicolor/scalable/apps/winehelper.svg"
CHANGELOG_FILE="/usr/share/doc/winehelper-$WH_VERSION/CHANGELOG"
LICENSE_FILE="/usr/share/doc/winehelper-$WH_VERSION/LICENSE"
AGREEMENT="/usr/share/doc/winehelper-$WH_VERSION/LICENSE_AGREEMENT"
@@ -126,6 +126,12 @@ WH_TESTINSTALL_DIR="$DATA_PATH/testinstall"
WH_WINETRICKS="$DATA_PATH/winetricks_$WINETRICKS_VERSION"
WH_MENU_DIR="$HOME/.local/share/applications/WineHelper"
# TODO: system menu directory
# /usr/share/desktop-directories/WineHelper.directory
# /etc/xdg/menus/applications-merged/WineHelper.menu
# user menu directory
WH_MENU_CATEGORY="$HOME/.local/share/desktop-directories/WineHelper.directory"
WH_MENU_CONFIG="$HOME/.config/menus/applications-merged/WineHelper.menu"
@@ -1417,12 +1423,6 @@ wine_run_install () {
}
run_autoinstall () {
if [[ $WH_USE_GUI == "1" ]] \
&& [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]]
then print_ok "Соглашения приняты из графического интерфейса."
else print_license_agreement
fi
if [[ $1 == "--clear-pfx" ]] ; then
export CLEAR_PREFIX="1"
shift
@@ -1478,6 +1478,11 @@ run_autoinstall () {
echo
list_install_scripts "$WH_MANUALINSTALL_DIR" "Список программ с возможностью установки из существующего дистрибутива:"
elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then
if [[ $WH_USE_GUI == "1" ]] \
&& [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]]
then print_ok "Соглашения приняты из графического интерфейса."
else print_license_agreement
fi
source "$INSTALL_SCRIPT" "$@"
print_info "Завершена установка $INSTALL_SCRIPT_NAME"
else

View File

@@ -1210,9 +1210,9 @@ class CreatePrefixDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.parent_gui = parent # Store reference to main window
self.parent_gui = parent # Сохранить ссылку на главное окно
self.setWindowTitle("Создание нового префикса")
self.setMinimumSize(500, 250)
self.setMinimumSize(680, 250)
self.setModal(True)
# Attributes to store results
@@ -1226,9 +1226,22 @@ class CreatePrefixDialog(QDialog):
form_layout = QFormLayout()
form_layout.setSpacing(10)
# Создаем виджет для поля ввода и предупреждения
name_input_widget = QWidget()
name_input_layout = QVBoxLayout(name_input_widget)
name_input_layout.setContentsMargins(0, 0, 0, 0)
name_input_layout.setSpacing(2)
self.prefix_name_edit = QLineEdit()
self.prefix_name_edit.setPlaceholderText("Например: my_prefix")
form_layout.addRow("<b>Имя нового префикса:</b>", self.prefix_name_edit)
name_input_layout.addWidget(self.prefix_name_edit)
self.name_warning_label = QLabel("Имя может содержать только латинские буквы, цифры, тире и знаки подчеркивания.")
self.name_warning_label.setStyleSheet("color: red;")
self.name_warning_label.setVisible(False)
name_input_layout.addWidget(self.name_warning_label)
form_layout.addRow("<b>Имя нового префикса:</b>", name_input_widget)
arch_widget = QWidget()
arch_layout = QHBoxLayout(arch_widget)
@@ -1285,7 +1298,7 @@ class CreatePrefixDialog(QDialog):
# Connect signals
self.arch_win32_radio.toggled.connect(self.clear_wine_version_selection)
self.prefix_name_edit.textChanged.connect(self.update_create_button_state)
self.prefix_name_edit.textChanged.connect(self.validate_prefix_name)
self.wine_version_edit.textChanged.connect(self.update_create_button_state)
def open_wine_version_dialog(self):
@@ -1301,11 +1314,28 @@ class CreatePrefixDialog(QDialog):
self.wine_version_edit.clear()
self.selected_wine_version_value = None
def validate_prefix_name(self, text):
"""Проверяет имя префикса в реальном времени и показывает/скрывает предупреждение."""
valid_pattern = r'^[a-zA-Z0-9_-]*$'
if re.match(valid_pattern, text):
self.name_warning_label.setVisible(False)
else:
# Удаляем недопустимые символы
cleaned_text = re.sub(r'[^a-zA-Z0-9_-]', '', text)
# Блокируем сигналы, чтобы избежать рекурсии при изменении текста
self.prefix_name_edit.blockSignals(True)
self.prefix_name_edit.setText(cleaned_text)
self.prefix_name_edit.blockSignals(False)
self.name_warning_label.setVisible(True)
self.update_create_button_state()
def update_create_button_state(self):
"""Включает или выключает кнопку 'Создать'."""
name_ok = bool(self.prefix_name_edit.text().strip())
version_ok = bool(self.wine_version_edit.text().strip())
self.create_button.setEnabled(name_ok and version_ok)
# Кнопка активна, только если имя валидно и версия выбрана
self.create_button.setEnabled(name_ok and version_ok and not self.name_warning_label.isVisible())
def accept_creation(self):
"""Валидирует данные, сохраняет их и закрывает диалог с успехом."""
@@ -1315,8 +1345,8 @@ class CreatePrefixDialog(QDialog):
QMessageBox.warning(self, "Ошибка", "Имя префикса не может быть пустым.")
return
if not re.match(r'^[a-zA-Z0-9_.-]+$', prefix_name):
QMessageBox.warning(self, "Ошибка", "Имя префикса может содержать только латинские буквы, цифры, точки, дефисы и подчеркивания.")
if not re.match(r'^[a-zA-Z0-9_-]+$', prefix_name):
QMessageBox.warning(self, "Ошибка", "Имя префикса может содержать только латинские буквы, цифры, дефисы и знаки подчеркивания.")
return
prefix_path = os.path.join(Var.USER_WORK_PATH, "prefixes", prefix_name)
@@ -2133,7 +2163,7 @@ class WineHelperGUI(QMainWindow):
# --- Контейнер для выбора и управления созданными префиксами ---
self.management_container_groupbox = QGroupBox()
self.management_container_groupbox.setVisible(False) # Скрыт, пока нет префиксов
self.management_container_groupbox.setVisible(True) # Всегда виден
container_layout = QVBoxLayout(self.management_container_groupbox)
selector_layout = QHBoxLayout()
@@ -2313,8 +2343,8 @@ class WineHelperGUI(QMainWindow):
def _load_created_prefixes(self):
"""Загружает и обновляет список созданных префиксов в выпадающем списке."""
prefixes_root_path = os.path.join(Var.USER_WORK_PATH, "prefixes")
if not os.path.isdir(prefixes_root_path):
self.management_container_groupbox.setVisible(False)
has_prefixes_dir = os.path.isdir(prefixes_root_path)
if not has_prefixes_dir:
return
try:
@@ -2333,12 +2363,9 @@ class WineHelperGUI(QMainWindow):
self.created_prefix_selector.blockSignals(False)
if not prefix_names:
self.management_container_groupbox.setVisible(False)
self.on_created_prefix_selected(-1) # Убедимся, что панель управления сброшена
return
self.management_container_groupbox.setVisible(True)
def on_created_prefix_selected(self, index):
"""Обрабатывает выбор префикса из выпадающего списка."""
if index == -1:
@@ -3014,14 +3041,15 @@ class WineHelperGUI(QMainWindow):
authors_text = QTextEdit()
authors_text.setReadOnly(True)
authors_text.setHtml("""
<div style="text-align: center;">
<h2>Разработчики</h2>
<div style="text-align: center; font-size: 10pt;">
<p><span style="font-size: 11pt;"><b>Разработчики</b></span><br>
Михаил Тергоев (fidel)<br>
Сергей Пальчех (minergenon)</p>
<p><b>Помощники</b><br>
<p><span style="font-size: 11pt;"><b>Помощники</b></span><br>
Иван Мажукин (vanomj)</p>
<p><b>Идея и поддержка:</b><br>
сообщество ALT Linux</p>
<p><span style="font-size: 11pt;"><b>Идея и поддержка</b></span><br>
ООО "Базальт СПО"<br>
ALT Linux Team</p>
<br>
<p>Отдельная благодарность всем, кто вносит свой вклад в развитие проекта,<br>
тестирует и сообщает об ошибках!</p>
@@ -3199,9 +3227,6 @@ class WineHelperGUI(QMainWindow):
self.created_prefix_selector.setCurrentText(prefix_name)
if not self.management_container_groupbox.isVisible():
self.management_container_groupbox.setVisible(True)
def update_installed_apps(self):
"""Обновляет список установленных приложений в виде кнопок"""
# Если активная кнопка находится в списке удаляемых, сбрасываем ее