Progress Bar und Diff-PDF-Icon im TreeWidget implementiert

Neue Features:
- Progress Bar in Spalte 2 während XML-Transformationen
- Diff-PDF-Icon erscheint nach Transformation bei vorhandener Diff-PDF
- Doppelklick auf Icon öffnet Diff-PDF mit System-Viewer
- Initial-Laden von Icons für existierende Diff-PDFs beim Projektstart

Technische Implementierung:
- XML-Item-Mapping mit eindeutigem Key-Format: "xml_path|xsl_id"
- Unterstützt mehrfache Verwendung derselben XML bei verschiedenen XSL-Dateien
- TransformationThread-Signale erweitert um XSL-ID-Parameter
- Widget-Factory-Methoden für zentrierte Progress Bar und klickbare Icons
- Result-Dictionary in transform.py enthält jetzt xsl_id

UI-Anpassungen:
- TreeWidget Spaltenanzahl von 2 auf 3 erhöht
- setItemWidget() für dynamische Widget-Verwaltung in Spalte 2

Dateien:
- src/ui/MainWindow.py: Hauptimplementierung mit Signal-Handlern
- src/transform.py: xsl_id im Result-Dictionary
- src/ui/MainWinddow.ui: Spalte 3 hinzugefügt
- src/ui/MainWinddow_ui.py: Auto-generiert aus UI-Datei

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-13 21:06:40 +01:00
parent b961fe1e1a
commit 629485f5e4
4 changed files with 1084 additions and 838 deletions
+19 -9
View File
@@ -34,7 +34,7 @@ class TransformationJob:
apache_fop_dir: Path, apache_fop_dir: Path,
diff_pdf_path: Path, diff_pdf_path: Path,
diff_pdf_params: list[str], diff_pdf_params: list[str],
xsl_id: tuple | None = None xsl_id: tuple | None = None,
): ):
""" """
Initialisiert einen Transformations-Job. Initialisiert einen Transformations-Job.
@@ -92,6 +92,7 @@ class TransformationJob:
# Apache FOP Binaries (plattformabhängig) # Apache FOP Binaries (plattformabhängig)
import sys import sys
if sys.platform == "win32": if sys.platform == "win32":
self.fop_cmd = self.apache_fop_dir / "fop.cmd" self.fop_cmd = self.apache_fop_dir / "fop.cmd"
else: else:
@@ -158,11 +159,13 @@ class TransformationJob:
# Sammle alle JAR-Dateien im Saxon-Verzeichnis für den Classpath # Sammle alle JAR-Dateien im Saxon-Verzeichnis für den Classpath
import glob import glob
saxon_dir = self.saxon_jar_path.parent saxon_dir = self.saxon_jar_path.parent
all_jars = glob.glob(str(saxon_dir / "*.jar")) all_jars = glob.glob(str(saxon_dir / "*.jar"))
# Verwende alle JARs im Classpath (getrennt durch : auf Linux/Mac, ; auf Windows) # Verwende alle JARs im Classpath (getrennt durch : auf Linux/Mac, ; auf Windows)
import sys import sys
classpath_separator = ";" if sys.platform == "win32" else ":" classpath_separator = ";" if sys.platform == "win32" else ":"
classpath = classpath_separator.join(all_jars) classpath = classpath_separator.join(all_jars)
@@ -187,14 +190,16 @@ class TransformationJob:
cmd_line, cmd_line,
capture_output=True, capture_output=True,
text=True, text=True,
timeout=120 # 2 Minuten Timeout timeout=120, # 2 Minuten Timeout
) )
if result.returncode == 0: if result.returncode == 0:
logger.info(f"Saxon-Transformation erfolgreich: {self.xml_file.name}") logger.info(f"Saxon-Transformation erfolgreich: {self.xml_file.name}")
return True, "Erfolgreich" return True, "Erfolgreich"
else: else:
error_msg = f"Saxon-Fehler (Exit {result.returncode}):\nStdOut: {result.stdout}\nStdErr: {result.stderr}" error_msg = (
f"Saxon-Fehler (Exit {result.returncode}):\nStdOut: {result.stdout}\nStdErr: {result.stderr}"
)
logger.error(error_msg) logger.error(error_msg)
return False, error_msg return False, error_msg
@@ -230,10 +235,13 @@ class TransformationJob:
# Apache FOP Kommandozeile # Apache FOP Kommandozeile
cmd_line = [ cmd_line = [
str(self.fop_cmd), str(self.fop_cmd),
"-c", str(self.fop_conf) if self.fop_conf.exists() else "", "-c",
str(self.fop_conf) if self.fop_conf.exists() else "",
"-r", "-r",
"-fo", str(self.temp_fo), "-fo",
"-pdf", str(self.new_pdf), str(self.temp_fo),
"-pdf",
str(self.new_pdf),
] ]
# Entferne leere Config-Parameter wenn fop.xconf nicht existiert # Entferne leere Config-Parameter wenn fop.xconf nicht existiert
@@ -248,7 +256,7 @@ class TransformationJob:
cmd_line, cmd_line,
capture_output=True, capture_output=True,
text=True, text=True,
timeout=180 # 3 Minuten Timeout timeout=180, # 3 Minuten Timeout
) )
# Temporäre FO-Datei löschen # Temporäre FO-Datei löschen
@@ -264,6 +272,7 @@ class TransformationJob:
if not self.ref_pdf.exists(): if not self.ref_pdf.exists():
try: try:
import shutil import shutil
shutil.copy2(self.new_pdf, self.ref_pdf) shutil.copy2(self.new_pdf, self.ref_pdf)
logger.info(f"Ref-PDF erstellt: {self.ref_pdf}") logger.info(f"Ref-PDF erstellt: {self.ref_pdf}")
except Exception as e: except Exception as e:
@@ -320,7 +329,7 @@ class TransformationJob:
cmd_compare, cmd_compare,
capture_output=True, capture_output=True,
text=True, text=True,
timeout=60 # 1 Minute Timeout timeout=60, # 1 Minute Timeout
) )
if result.returncode == 0: if result.returncode == 0:
@@ -355,7 +364,7 @@ class TransformationJob:
cmd_diff, cmd_diff,
capture_output=True, capture_output=True,
text=True, text=True,
timeout=90 # 1.5 Minuten Timeout timeout=90, # 1.5 Minuten Timeout
) )
if result_diff.returncode == 0 or self.diff_pdf.exists(): if result_diff.returncode == 0 or self.diff_pdf.exists():
@@ -392,6 +401,7 @@ class TransformationJob:
result = { result = {
"success": False, "success": False,
"xml_file": str(self.xml_file), "xml_file": str(self.xml_file),
"xsl_id": self.xsl_id,
"steps": {}, "steps": {},
"duration": None, "duration": None,
"new_pdf": str(self.new_pdf) if self.new_pdf.exists() else None, "new_pdf": str(self.new_pdf) if self.new_pdf.exists() else None,
+11 -6
View File
@@ -64,7 +64,7 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="columnCount"> <property name="columnCount">
<number>2</number> <number>3</number>
</property> </property>
<attribute name="headerHighlightSections"> <attribute name="headerHighlightSections">
<bool>true</bool> <bool>true</bool>
@@ -82,6 +82,11 @@
<string notr="true">2</string> <string notr="true">2</string>
</property> </property>
</column> </column>
<column>
<property name="text">
<string notr="true">3</string>
</property>
</column>
</widget> </widget>
</item> </item>
<item> <item>
@@ -171,8 +176,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>54</width> <width>68</width>
<height>718</height> <height>728</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
@@ -349,8 +354,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>649</width> <width>625</width>
<height>690</height> <height>700</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -396,7 +401,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1263</width> <width>1263</width>
<height>33</height> <height>22</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuProjekt"> <widget class="QMenu" name="menuProjekt">
+301 -300
View File
@@ -1,300 +1,301 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
################################################################################ ################################################################################
## Form generated from reading UI file 'MainWinddow.ui' ## Form generated from reading UI file 'MainWinddow.ui'
## ##
## Created by: Qt User Interface Compiler version 6.9.1 ## Created by: Qt User Interface Compiler version 6.9.2
## ##
## WARNING! All changes made in this file will be lost when recompiling UI file! ## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################ ################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect, QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt) QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
QCursor, QFont, QFontDatabase, QGradient, QCursor, QFont, QFontDatabase, QGradient,
QIcon, QImage, QKeySequence, QLinearGradient, QIcon, QImage, QKeySequence, QLinearGradient,
QPainter, QPalette, QPixmap, QRadialGradient, QPainter, QPalette, QPixmap, QRadialGradient,
QTransform) QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QHBoxLayout, QHeaderView, from PySide6.QtWidgets import (QApplication, QFrame, QHBoxLayout, QHeaderView,
QLabel, QMainWindow, QMenu, QMenuBar, QLabel, QMainWindow, QMenu, QMenuBar,
QPushButton, QScrollArea, QSizePolicy, QSlider, QPushButton, QScrollArea, QSizePolicy, QSlider,
QSpacerItem, QSplitter, QStatusBar, QTreeWidget, QSpacerItem, QSplitter, QStatusBar, QTreeWidget,
QTreeWidgetItem, QVBoxLayout, QWidget) QTreeWidgetItem, QVBoxLayout, QWidget)
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow") MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(1263, 774) MainWindow.resize(1263, 774)
self.actionNeu = QAction(MainWindow) self.actionNeu = QAction(MainWindow)
self.actionNeu.setObjectName(u"actionNeu") self.actionNeu.setObjectName(u"actionNeu")
icon = QIcon(QIcon.fromTheme(u"folder-new")) icon = QIcon(QIcon.fromTheme(u"folder-new"))
self.actionNeu.setIcon(icon) self.actionNeu.setIcon(icon)
self.action_ffnen = QAction(MainWindow) self.action_ffnen = QAction(MainWindow)
self.action_ffnen.setObjectName(u"action_ffnen") self.action_ffnen.setObjectName(u"action_ffnen")
icon1 = QIcon(QIcon.fromTheme(u"folder-open")) icon1 = QIcon(QIcon.fromTheme(u"folder-open"))
self.action_ffnen.setIcon(icon1) self.action_ffnen.setIcon(icon1)
self.actionBeenden = QAction(MainWindow) self.actionBeenden = QAction(MainWindow)
self.actionBeenden.setObjectName(u"actionBeenden") self.actionBeenden.setObjectName(u"actionBeenden")
icon2 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ApplicationExit)) icon2 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ApplicationExit))
self.actionBeenden.setIcon(icon2) self.actionBeenden.setIcon(icon2)
self.actionEinstellungen = QAction(MainWindow) self.actionEinstellungen = QAction(MainWindow)
self.actionEinstellungen.setObjectName(u"actionEinstellungen") self.actionEinstellungen.setObjectName(u"actionEinstellungen")
icon3 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)) icon3 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties))
self.actionEinstellungen.setIcon(icon3) self.actionEinstellungen.setIcon(icon3)
self.actionVorhandene_Projekte = QAction(MainWindow) self.actionVorhandene_Projekte = QAction(MainWindow)
self.actionVorhandene_Projekte.setObjectName(u"actionVorhandene_Projekte") self.actionVorhandene_Projekte.setObjectName(u"actionVorhandene_Projekte")
self.actionVorhandene_Projekte.setEnabled(False) self.actionVorhandene_Projekte.setEnabled(False)
self.centralwidget = QWidget(MainWindow) self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget") self.centralwidget.setObjectName(u"centralwidget")
self.horizontalLayout = QHBoxLayout(self.centralwidget) self.horizontalLayout = QHBoxLayout(self.centralwidget)
self.horizontalLayout.setObjectName(u"horizontalLayout") self.horizontalLayout.setObjectName(u"horizontalLayout")
self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.splitter = QSplitter(self.centralwidget) self.splitter = QSplitter(self.centralwidget)
self.splitter.setObjectName(u"splitter") self.splitter.setObjectName(u"splitter")
self.splitter.setOrientation(Qt.Orientation.Horizontal) self.splitter.setOrientation(Qt.Orientation.Horizontal)
self.frame = QFrame(self.splitter) self.frame = QFrame(self.splitter)
self.frame.setObjectName(u"frame") self.frame.setObjectName(u"frame")
sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred) sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy) self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QSize(200, 0)) self.frame.setMinimumSize(QSize(200, 0))
self.frame.setFrameShape(QFrame.Shape.StyledPanel) self.frame.setFrameShape(QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QFrame.Shadow.Raised) self.frame.setFrameShadow(QFrame.Shadow.Raised)
self.verticalLayout = QVBoxLayout(self.frame) self.verticalLayout = QVBoxLayout(self.frame)
self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(-1, -1, -1, 0) self.verticalLayout.setContentsMargins(-1, -1, -1, 0)
self.treeWidget = QTreeWidget(self.frame) self.treeWidget = QTreeWidget(self.frame)
__qtreewidgetitem = QTreeWidgetItem() __qtreewidgetitem = QTreeWidgetItem()
__qtreewidgetitem.setText(1, u"2"); __qtreewidgetitem.setText(2, u"3");
__qtreewidgetitem.setText(0, u"1"); __qtreewidgetitem.setText(1, u"2");
self.treeWidget.setHeaderItem(__qtreewidgetitem) __qtreewidgetitem.setText(0, u"1");
self.treeWidget.setObjectName(u"treeWidget") self.treeWidget.setHeaderItem(__qtreewidgetitem)
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self.treeWidget.setObjectName(u"treeWidget")
sizePolicy1.setHorizontalStretch(0) sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
sizePolicy1.setVerticalStretch(0) sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setHeightForWidth(self.treeWidget.sizePolicy().hasHeightForWidth()) sizePolicy1.setVerticalStretch(0)
self.treeWidget.setSizePolicy(sizePolicy1) sizePolicy1.setHeightForWidth(self.treeWidget.sizePolicy().hasHeightForWidth())
self.treeWidget.setColumnCount(2) self.treeWidget.setSizePolicy(sizePolicy1)
self.treeWidget.header().setHighlightSections(True) self.treeWidget.setColumnCount(3)
self.treeWidget.header().setStretchLastSection(True) self.treeWidget.header().setHighlightSections(True)
self.treeWidget.header().setStretchLastSection(True)
self.verticalLayout.addWidget(self.treeWidget)
self.verticalLayout.addWidget(self.treeWidget)
self.frame_2 = QFrame(self.frame)
self.frame_2.setObjectName(u"frame_2") self.frame_2 = QFrame(self.frame)
self.frame_2.setFrameShadow(QFrame.Shadow.Raised) self.frame_2.setObjectName(u"frame_2")
self.horizontalLayout_2 = QHBoxLayout(self.frame_2) self.frame_2.setFrameShadow(QFrame.Shadow.Raised)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.horizontalLayout_2 = QHBoxLayout(self.frame_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.pushButton = QPushButton(self.frame_2) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.pushButton.setObjectName(u"pushButton") self.pushButton = QPushButton(self.frame_2)
self.pushButton.setLayoutDirection(Qt.LayoutDirection.LeftToRight) self.pushButton.setObjectName(u"pushButton")
icon4 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart)) self.pushButton.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
self.pushButton.setIcon(icon4) icon4 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart))
self.pushButton.setIcon(icon4)
self.horizontalLayout_2.addWidget(self.pushButton)
self.horizontalLayout_2.addWidget(self.pushButton)
self.pushButton_2 = QPushButton(self.frame_2)
self.pushButton_2.setObjectName(u"pushButton_2") self.pushButton_2 = QPushButton(self.frame_2)
self.pushButton_2.setAutoFillBackground(False) self.pushButton_2.setObjectName(u"pushButton_2")
icon5 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.MediaSeekForward)) self.pushButton_2.setAutoFillBackground(False)
self.pushButton_2.setIcon(icon5) icon5 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.MediaSeekForward))
self.pushButton_2.setIcon(icon5)
self.horizontalLayout_2.addWidget(self.pushButton_2)
self.horizontalLayout_2.addWidget(self.pushButton_2)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_2.addItem(self.horizontalSpacer)
self.horizontalLayout_2.addItem(self.horizontalSpacer)
self.pB_lade_aus_fn2 = QPushButton(self.frame_2)
self.pB_lade_aus_fn2.setObjectName(u"pB_lade_aus_fn2") self.pB_lade_aus_fn2 = QPushButton(self.frame_2)
icon6 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.GoDown)) self.pB_lade_aus_fn2.setObjectName(u"pB_lade_aus_fn2")
self.pB_lade_aus_fn2.setIcon(icon6) icon6 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.GoDown))
self.pB_lade_aus_fn2.setIcon(icon6)
self.horizontalLayout_2.addWidget(self.pB_lade_aus_fn2)
self.horizontalLayout_2.addWidget(self.pB_lade_aus_fn2)
self.verticalLayout.addWidget(self.frame_2)
self.verticalLayout.addWidget(self.frame_2)
self.splitter.addWidget(self.frame)
self.scrollArea = QScrollArea(self.splitter) self.splitter.addWidget(self.frame)
self.scrollArea.setObjectName(u"scrollArea") self.scrollArea = QScrollArea(self.splitter)
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum) self.scrollArea.setObjectName(u"scrollArea")
sizePolicy2.setHorizontalStretch(0) sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
sizePolicy2.setVerticalStretch(0) sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) sizePolicy2.setVerticalStretch(0)
self.scrollArea.setSizePolicy(sizePolicy2) sizePolicy2.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth())
self.scrollArea.setWidgetResizable(True) self.scrollArea.setSizePolicy(sizePolicy2)
self.scrollAreaWidgetContents = QWidget() self.scrollArea.setWidgetResizable(True)
self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents") self.scrollAreaWidgetContents = QWidget()
self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 54, 718)) self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
self.verticalLayout_2 = QVBoxLayout(self.scrollAreaWidgetContents) self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 68, 728))
self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2 = QVBoxLayout(self.scrollAreaWidgetContents)
self.label = QLabel(self.scrollAreaWidgetContents) self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.label.setObjectName(u"label") self.label = QLabel(self.scrollAreaWidgetContents)
self.label.setObjectName(u"label")
self.verticalLayout_2.addWidget(self.label)
self.verticalLayout_2.addWidget(self.label)
self.label_2 = QLabel(self.scrollAreaWidgetContents)
self.label_2.setObjectName(u"label_2") self.label_2 = QLabel(self.scrollAreaWidgetContents)
self.label_2.setObjectName(u"label_2")
self.verticalLayout_2.addWidget(self.label_2)
self.verticalLayout_2.addWidget(self.label_2)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_2.addItem(self.verticalSpacer)
self.verticalLayout_2.addItem(self.verticalSpacer)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.splitter.addWidget(self.scrollArea) self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.frame_3 = QFrame(self.splitter) self.splitter.addWidget(self.scrollArea)
self.frame_3.setObjectName(u"frame_3") self.frame_3 = QFrame(self.splitter)
self.frame_3.setFrameShape(QFrame.Shape.NoFrame) self.frame_3.setObjectName(u"frame_3")
self.frame_3.setFrameShadow(QFrame.Shadow.Raised) self.frame_3.setFrameShape(QFrame.Shape.NoFrame)
self.verticalLayout_4 = QVBoxLayout(self.frame_3) self.frame_3.setFrameShadow(QFrame.Shadow.Raised)
self.verticalLayout_4.setObjectName(u"verticalLayout_4") self.verticalLayout_4 = QVBoxLayout(self.frame_3)
self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) self.verticalLayout_4.setObjectName(u"verticalLayout_4")
self.frame_4 = QFrame(self.frame_3) self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
self.frame_4.setObjectName(u"frame_4") self.frame_4 = QFrame(self.frame_3)
self.frame_4.setFrameShape(QFrame.Shape.StyledPanel) self.frame_4.setObjectName(u"frame_4")
self.frame_4.setFrameShadow(QFrame.Shadow.Raised) self.frame_4.setFrameShape(QFrame.Shape.StyledPanel)
self.horizontalLayout_3 = QHBoxLayout(self.frame_4) self.frame_4.setFrameShadow(QFrame.Shadow.Raised)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.horizontalLayout_3 = QHBoxLayout(self.frame_4)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer_4)
self.horizontalLayout_3.addItem(self.horizontalSpacer_4)
self.label_6 = QLabel(self.frame_4)
self.label_6.setObjectName(u"label_6") self.label_6 = QLabel(self.frame_4)
self.label_6.setObjectName(u"label_6")
self.horizontalLayout_3.addWidget(self.label_6)
self.horizontalLayout_3.addWidget(self.label_6)
self.alpha = QSlider(self.frame_4)
self.alpha.setObjectName(u"alpha") self.alpha = QSlider(self.frame_4)
self.alpha.setMinimum(-100) self.alpha.setObjectName(u"alpha")
self.alpha.setMaximum(100) self.alpha.setMinimum(-100)
self.alpha.setOrientation(Qt.Orientation.Horizontal) self.alpha.setMaximum(100)
self.alpha.setOrientation(Qt.Orientation.Horizontal)
self.horizontalLayout_3.addWidget(self.alpha)
self.horizontalLayout_3.addWidget(self.alpha)
self.label_7 = QLabel(self.frame_4)
self.label_7.setObjectName(u"label_7") self.label_7 = QLabel(self.frame_4)
self.label_7.setObjectName(u"label_7")
self.horizontalLayout_3.addWidget(self.label_7)
self.horizontalLayout_3.addWidget(self.label_7)
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer_2)
self.horizontalLayout_3.addItem(self.horizontalSpacer_2)
self.label_5 = QLabel(self.frame_4)
self.label_5.setObjectName(u"label_5") self.label_5 = QLabel(self.frame_4)
self.label_5.setObjectName(u"label_5")
self.horizontalLayout_3.addWidget(self.label_5)
self.horizontalLayout_3.addWidget(self.label_5)
self.zoom = QSlider(self.frame_4)
self.zoom.setObjectName(u"zoom") self.zoom = QSlider(self.frame_4)
self.zoom.setMinimum(25) self.zoom.setObjectName(u"zoom")
self.zoom.setMaximum(300) self.zoom.setMinimum(25)
self.zoom.setValue(100) self.zoom.setMaximum(300)
self.zoom.setOrientation(Qt.Orientation.Horizontal) self.zoom.setValue(100)
self.zoom.setOrientation(Qt.Orientation.Horizontal)
self.horizontalLayout_3.addWidget(self.zoom)
self.horizontalLayout_3.addWidget(self.zoom)
self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer_5)
self.horizontalLayout_3.addItem(self.horizontalSpacer_5)
self.verticalLayout_4.addWidget(self.frame_4)
self.verticalLayout_4.addWidget(self.frame_4)
self.scrollArea_2 = QScrollArea(self.frame_3)
self.scrollArea_2.setObjectName(u"scrollArea_2") self.scrollArea_2 = QScrollArea(self.frame_3)
self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName(u"scrollArea_2")
self.scrollAreaWidgetContents_2 = QWidget() self.scrollArea_2.setWidgetResizable(True)
self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2") self.scrollAreaWidgetContents_2 = QWidget()
self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 649, 690)) self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2")
self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents_2) self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 625, 700))
self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.label_3 = QLabel(self.scrollAreaWidgetContents_2) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.label_3.setObjectName(u"label_3") self.label_3 = QLabel(self.scrollAreaWidgetContents_2)
self.label_3.setObjectName(u"label_3")
self.verticalLayout_3.addWidget(self.label_3)
self.verticalLayout_3.addWidget(self.label_3)
self.label_4 = QLabel(self.scrollAreaWidgetContents_2)
self.label_4.setObjectName(u"label_4") self.label_4 = QLabel(self.scrollAreaWidgetContents_2)
self.label_4.setObjectName(u"label_4")
self.verticalLayout_3.addWidget(self.label_4)
self.verticalLayout_3.addWidget(self.label_4)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
self.verticalLayout_4.addWidget(self.scrollArea_2)
self.verticalLayout_4.addWidget(self.scrollArea_2)
self.splitter.addWidget(self.frame_3)
self.splitter.addWidget(self.frame_3)
self.horizontalLayout.addWidget(self.splitter)
self.horizontalLayout.addWidget(self.splitter)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow) MainWindow.setCentralWidget(self.centralwidget)
self.menubar.setObjectName(u"menubar") self.menubar = QMenuBar(MainWindow)
self.menubar.setGeometry(QRect(0, 0, 1263, 33)) self.menubar.setObjectName(u"menubar")
self.menuProjekt = QMenu(self.menubar) self.menubar.setGeometry(QRect(0, 0, 1263, 22))
self.menuProjekt.setObjectName(u"menuProjekt") self.menuProjekt = QMenu(self.menubar)
self.menuThema = QMenu(self.menubar) self.menuProjekt.setObjectName(u"menuProjekt")
self.menuThema.setObjectName(u"menuThema") self.menuThema = QMenu(self.menubar)
MainWindow.setMenuBar(self.menubar) self.menuThema.setObjectName(u"menuThema")
self.statusbar = QStatusBar(MainWindow) MainWindow.setMenuBar(self.menubar)
self.statusbar.setObjectName(u"statusbar") self.statusbar = QStatusBar(MainWindow)
MainWindow.setStatusBar(self.statusbar) self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menuProjekt.menuAction())
self.menubar.addAction(self.menuThema.menuAction()) self.menubar.addAction(self.menuProjekt.menuAction())
self.menuProjekt.addAction(self.actionNeu) self.menubar.addAction(self.menuThema.menuAction())
self.menuProjekt.addAction(self.action_ffnen) self.menuProjekt.addAction(self.actionNeu)
self.menuProjekt.addSeparator() self.menuProjekt.addAction(self.action_ffnen)
self.menuProjekt.addAction(self.actionVorhandene_Projekte) self.menuProjekt.addSeparator()
self.menuProjekt.addSeparator() self.menuProjekt.addAction(self.actionVorhandene_Projekte)
self.menuProjekt.addAction(self.actionEinstellungen) self.menuProjekt.addSeparator()
self.menuProjekt.addSeparator() self.menuProjekt.addAction(self.actionEinstellungen)
self.menuProjekt.addAction(self.actionBeenden) self.menuProjekt.addSeparator()
self.menuProjekt.addAction(self.actionBeenden)
self.retranslateUi(MainWindow)
self.actionBeenden.triggered.connect(MainWindow.close) self.retranslateUi(MainWindow)
self.actionBeenden.triggered.connect(MainWindow.close)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"DocuMentor", None)) def retranslateUi(self, MainWindow):
self.actionNeu.setText(QCoreApplication.translate("MainWindow", u"Neu ...", None)) MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"DocuMentor", None))
#if QT_CONFIG(shortcut) self.actionNeu.setText(QCoreApplication.translate("MainWindow", u"Neu ...", None))
self.actionNeu.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+N", None)) #if QT_CONFIG(shortcut)
#endif // QT_CONFIG(shortcut) self.actionNeu.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+N", None))
self.action_ffnen.setText(QCoreApplication.translate("MainWindow", u"\u00d6ffnen ...", None)) #endif // QT_CONFIG(shortcut)
#if QT_CONFIG(shortcut) self.action_ffnen.setText(QCoreApplication.translate("MainWindow", u"\u00d6ffnen ...", None))
self.action_ffnen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None)) #if QT_CONFIG(shortcut)
#endif // QT_CONFIG(shortcut) self.action_ffnen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+O", None))
self.actionBeenden.setText(QCoreApplication.translate("MainWindow", u"Beenden", None)) #endif // QT_CONFIG(shortcut)
self.actionEinstellungen.setText(QCoreApplication.translate("MainWindow", u"Einstellungen ...", None)) self.actionBeenden.setText(QCoreApplication.translate("MainWindow", u"Beenden", None))
#if QT_CONFIG(shortcut) self.actionEinstellungen.setText(QCoreApplication.translate("MainWindow", u"Einstellungen ...", None))
self.actionEinstellungen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None)) #if QT_CONFIG(shortcut)
#endif // QT_CONFIG(shortcut) self.actionEinstellungen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None))
self.actionVorhandene_Projekte.setText(QCoreApplication.translate("MainWindow", u"Vorhandene Projekte", None)) #endif // QT_CONFIG(shortcut)
self.pushButton.setText(QCoreApplication.translate("MainWindow", u"nur ge\u00e4nderte generieren", None)) self.actionVorhandene_Projekte.setText(QCoreApplication.translate("MainWindow", u"Vorhandene Projekte", None))
self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Alle generieren", None)) self.pushButton.setText(QCoreApplication.translate("MainWindow", u"nur ge\u00e4nderte generieren", None))
self.pB_lade_aus_fn2.setText(QCoreApplication.translate("MainWindow", u"lade aus FN2", None)) self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Alle generieren", None))
self.label.setText("") self.pB_lade_aus_fn2.setText(QCoreApplication.translate("MainWindow", u"lade aus FN2", None))
self.label_2.setText("") self.label.setText("")
self.label_6.setText(QCoreApplication.translate("MainWindow", u"Vorher (Referenz)", None)) self.label_2.setText("")
self.label_7.setText(QCoreApplication.translate("MainWindow", u"Nachher (Neu)", None)) self.label_6.setText(QCoreApplication.translate("MainWindow", u"Vorher (Referenz)", None))
self.label_5.setText(QCoreApplication.translate("MainWindow", u"Zoom", None)) self.label_7.setText(QCoreApplication.translate("MainWindow", u"Nachher (Neu)", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None)) self.label_5.setText(QCoreApplication.translate("MainWindow", u"Zoom", None))
self.label_4.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None)) self.label_3.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
self.menuProjekt.setTitle(QCoreApplication.translate("MainWindow", u"Projekt", None)) self.label_4.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
self.menuThema.setTitle(QCoreApplication.translate("MainWindow", u"Thema", None)) self.menuProjekt.setTitle(QCoreApplication.translate("MainWindow", u"Projekt", None))
# retranslateUi self.menuThema.setTitle(QCoreApplication.translate("MainWindow", u"Thema", None))
# retranslateUi
+753 -523
View File
File diff suppressed because it is too large Load Diff