mirror of https://github.com/leafspark/AutoGGUF
84 lines
1.8 KiB
Python
84 lines
1.8 KiB
Python
import os
|
|
import sys
|
|
from typing import TextIO, Union
|
|
|
|
import psutil
|
|
import subprocess
|
|
import time
|
|
import signal
|
|
import json
|
|
import platform
|
|
import requests
|
|
import zipfile
|
|
from datetime import datetime
|
|
from PySide6.QtWidgets import (
|
|
QApplication,
|
|
QMainWindow,
|
|
QVBoxLayout,
|
|
QHBoxLayout,
|
|
QWidget,
|
|
QPushButton,
|
|
QListWidget,
|
|
QLineEdit,
|
|
QLabel,
|
|
QFileDialog,
|
|
QProgressBar,
|
|
QComboBox,
|
|
QTextEdit,
|
|
QCheckBox,
|
|
QGroupBox,
|
|
QFormLayout,
|
|
QScrollArea,
|
|
QSlider,
|
|
QSpinBox,
|
|
QListWidgetItem,
|
|
QMessageBox,
|
|
QDialog,
|
|
QPlainTextEdit,
|
|
QMenu,
|
|
)
|
|
from PySide6.QtCore import QTimer, Signal, QThread, Qt, QSize
|
|
from PySide6.QtGui import QCloseEvent, QAction
|
|
|
|
from Localizations import *
|
|
|
|
|
|
def show_about(self) -> None:
|
|
about_text = (
|
|
"AutoGGUF\n\n"
|
|
f"Version: {AUTOGGUF_VERSION}\n\n"
|
|
"A tool for managing and converting GGUF models."
|
|
)
|
|
QMessageBox.about(self, "About AutoGGUF", about_text)
|
|
|
|
|
|
def ensure_directory(path) -> None:
|
|
if not os.path.exists(path):
|
|
os.makedirs(path)
|
|
|
|
|
|
def open_file_safe(file_path, mode="r") -> TextIO:
|
|
encodings = ["utf-8", "latin-1", "ascii", "utf-16"]
|
|
for encoding in encodings:
|
|
try:
|
|
return open(file_path, mode, encoding=encoding)
|
|
except UnicodeDecodeError:
|
|
continue
|
|
raise ValueError(
|
|
f"Unable to open file {file_path} with any of the encodings: {encodings}"
|
|
)
|
|
|
|
|
|
def resource_path(relative_path) -> Union[str, str, bytes]:
|
|
if hasattr(sys, "_MEIPASS"):
|
|
# PyInstaller path
|
|
base_path = sys._MEIPASS
|
|
elif "__compiled__" in globals():
|
|
# Nuitka path
|
|
base_path = os.path.dirname(sys.executable)
|
|
else:
|
|
# Regular Python path
|
|
base_path = os.path.abspath(".")
|
|
|
|
return os.path.join(base_path, relative_path)
|