from PyQt6.QtCore import QSize, Qt from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QLabel, QLineEdit, QWidget, \ QHBoxLayout, QListWidget from ui_dialogues import select_directory, update_textbox_from_path def create_layout1(): layout1 = QVBoxLayout() layout1_1 = QHBoxLayout() layout1_2 = QHBoxLayout() layout1_3 = QHBoxLayout() ### Spacing and Alignment layout1.setContentsMargins(10, 10, 10, 10) layout1.setSpacing(10) layout1.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) layout1_1.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) layout1_2.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) layout1_3.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) return layout1,layout1_1,layout1_2,layout1_3 def layout1_widgets(config): l1,l1_1,l1_2,l1_3 = create_layout1() ### Create Top Row lbl_src_directory = QLabel('Source Directory') txt_box_src_directory = QLineEdit() txt_box_src_directory.setPlaceholderText(config['folders']['source']['base']) btn_src_browse = QPushButton('Browse') btn_src_browse.setFixedSize(100, 40) btn_src_browse.clicked.connect(update_textbox_from_path( txt_box_src_directory, config['folders']['source']['base'])) ### Create Second Row lbl_dst_directory = QLabel('Destination Directory') txt_box_dst_directory = QLineEdit() txt_box_dst_directory.setPlaceholderText(config['folders']['destination']['base']) btn_dst_browse = QPushButton('Browse') btn_dst_browse.setFixedSize(100, 40) btn_dst_browse.clicked.connect(update_textbox_from_path( txt_box_dst_directory, config['folders']['destination']['base'])) ### Create Third Row btn_scan_dir = QPushButton("Scan Directory") btn_scan_dir.setFixedSize(100, 40) btn_scan_dir.setCheckable(False) ### Add Widgets to Layouts l1_1.addWidget(lbl_src_directory) l1_1.addWidget(txt_box_src_directory) l1_1.addWidget(btn_src_browse) l1_2.addWidget(lbl_dst_directory) l1_2.addWidget(txt_box_dst_directory) l1_2.addWidget(btn_dst_browse) l1_3.addWidget(btn_scan_dir) ### Add Layouts to primary Layout 1 l1.addLayout(l1_1) l1.addLayout(l1_2) l1.addLayout(l1_3) return l1 def create_layout2(): layout2 = QHBoxLayout() layout2_1 = QHBoxLayout() layout2_2 = QVBoxLayout() layout2_2_1 = QHBoxLayout() layout2_2_2 = QVBoxLayout() return layout2,layout2_1,layout2_2,layout2_2_1,layout2_2_2 def layout2_widgets(): l2,l2_1,l2_2,l2_2_1,l2_2_2 = create_layout2() preview_width = int(220) preview_height = int(preview_width * 0.75) src_file_list = QListWidget() src_file_list.setFixedWidth(550) preview_placeholder = QLabel("Placeholder") preview_placeholder.setPixmap(QPixmap('assets/preview_placeholder.jpg')) preview_placeholder.setScaledContents(True) preview_placeholder.setFixedWidth(preview_width) preview_placeholder.setFixedHeight(preview_height) l2_1.addWidget(src_file_list) l2_2.addWidget(preview_placeholder) l2_1.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) l2_2.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop) l2.addLayout(l2_1) l2.addLayout(l2_2)