Merge pull request #1 from BildoBeucklin/dev

Dev
This commit is contained in:
Konstantin Roßmann
2026-01-09 15:24:49 +01:00
committed by GitHub
6 changed files with 125 additions and 4 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,5 @@
.venv .venv
*.db *.db
/dist
/build
__pycache__/

38
UFF-Search.spec Normal file
View File

@@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['uff_app.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=['rapidfuzz', 'pypdf'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='UFF-Search',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

BIN
UFF_Search_Installer_v3.exe Normal file

Binary file not shown.

3
requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
pypdf
rapidfuzz
PyQt6

52
setup-file.iss Normal file
View File

@@ -0,0 +1,52 @@
; -- UFF-Search Installer Skript --
[Setup]
; Der Name, der überall steht
AppName=UFF Text Search
AppVersion=3.0
AppPublisher=Konstantin Roßmann
AppPublisherURL=https://rossmann-it-solutions.de
; Wo soll standardmäßig installiert werden? {autopf} ist "Program Files"
DefaultDirName={autopf}\UFF-Search
; Name der Gruppe im Startmenü
DefaultGroupName=UFF Search
; Speicherort der fertigen setup.exe (z.B. auf dem Desktop oder im Projektordner)
OutputDir=.
OutputBaseFilename=UFF_Search_Installer_v3
Compression=lzma
SolidCompression=yes
; Icon für den Installer selbst (optional, sonst weglassen)
; SetupIconFile=app.ico
; Administrator-Rechte anfordern für Installation in Program Files
PrivilegesRequired=admin
[Languages]
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
[Tasks]
; Checkbox: "Desktop Verknüpfung erstellen"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
; !!! WICHTIG: HIER DEN PFAD ZU DEINER EXE ANPASSEN !!!
; "Source" muss auf die Datei zeigen, die PyInstaller im "dist" Ordner erstellt hat.
Source: "C:\Users\konst\Arbeit\unsorted-folder-full-text-search\dist\UFF-Search.exe"; DestDir: "{app}"; Flags: ignoreversion
; Falls du ein Icon mitliefern willst (optional)
; Source: "C:\Pfad\Zu\Deinem\Projekt\app.ico"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
; Verknüpfung im Startmenü
Name: "{group}\UFF Text Search"; Filename: "{app}\UFF-Search.exe"
; Verknüpfung zum Deinstallieren
Name: "{group}\Uninstall UFF Search"; Filename: "{uninstallexe}"
; Verknüpfung auf dem Desktop (wenn vom User ausgewählt)
Name: "{commondesktop}\UFF Text Search"; Filename: "{app}\UFF-Search.exe"; Tasks: desktopicon
[Run]
; Checkbox am Ende: "Programm jetzt starten"
Description: "{cm:LaunchProgram,UFF Text Search}"; Filename: "{app}\UFF-Search.exe"; Flags: nowait postinstall skipifsilent

View File

@@ -16,8 +16,28 @@ from PyQt6.QtGui import QDesktopServices
# --- 1. DATENBANK MANAGER (Mit Fuzzy-Ranking) --- # --- 1. DATENBANK MANAGER (Mit Fuzzy-Ranking) ---
class DatabaseHandler: class DatabaseHandler:
def __init__(self, db_name="uff_index.db"): def __init__(self):
self.db_name = db_name # 1. Wir ermitteln den korrekten AppData Ordner für den User
# Windows: C:\Users\Name\AppData\Local\UFF_Search
if os.name == 'nt':
base_dir = os.getenv('LOCALAPPDATA')
else:
# Mac/Linux: ~/.local/share/uff_search
base_dir = os.path.join(os.path.expanduser("~"), ".local", "share")
# 2. Wir erstellen unseren eigenen Unterordner
self.app_data_dir = os.path.join(base_dir, "UFF_Search")
# Falls der Ordner nicht existiert, erstellen wir ihn
if not os.path.exists(self.app_data_dir):
os.makedirs(self.app_data_dir)
# 3. Der Pfad zur Datenbank
self.db_name = os.path.join(self.app_data_dir, "uff_index.db")
# Debug-Info (falls du es im Terminal testest)
print(f"Datenbank Pfad: {self.db_name}")
self.init_db() self.init_db()
def init_db(self): def init_db(self):
@@ -324,7 +344,12 @@ class UffWindow(QMainWindow):
def start_indexing(self, folder): def start_indexing(self, folder):
self.set_ui_busy(True) self.set_ui_busy(True)
self.lbl_status.setText(f"Starte... {os.path.basename(folder)}") self.lbl_status.setText(f"Starte... {os.path.basename(folder)}")
self.indexer_thread = IndexerThread(folder)
# HIER WAR DER FEHLER:
# Wir müssen dem Thread explizit sagen, wo die Datenbank liegt!
# self.db.db_name enthält den korrekten Pfad (C:\Users\...\AppData\...)
self.indexer_thread = IndexerThread(folder, db_name=self.db.db_name)
self.indexer_thread.progress_signal.connect(lambda msg: self.lbl_status.setText(msg)) self.indexer_thread.progress_signal.connect(lambda msg: self.lbl_status.setText(msg))
self.indexer_thread.finished_signal.connect(self.indexing_finished) self.indexer_thread.finished_signal.connect(self.indexing_finished)
self.indexer_thread.start() self.indexer_thread.start()